Best Practices: Form Structure

This guide will show you what we consider some "Best Practices" for form structure within our Apricot database.

Updated over a week ago

You may further customize the forms for your organization's needs (and add additional forms), but please note that this form structure may not be suitable for all organizations. Please contact the Ongoing Support team if you have any questions or concerns.

The Basics

Most organizations will want to track, at the minimum, the following forms:

  1. Individual: This is used to track basic demographics of people such as their name or date of birth (items that generally will not change and you do not need historical tracking thereof).

  2. Enrollment/Exit: This is used to track if an individual gets enrolled into program(s).

  3. Service: This is used to track individual service(s) provided to an individual.

  4. Household: This is used to track which Individuals reside in a household (apartment, condo, etc) together.

  5. Address: This is less common, but if you need historical information (such as their past 3 addresses) you will need this form as well

Now, we must create our forms. Before continuing with this article please make sure you review the following article: Tier 1 forms versus Tier 2 forms. After reviewing the article, we will go over which forms will be a Tier 1 and which will be a Tier 2:

Individual: Tier 1

  • Enrollment/Exit: Tier 2

  • Service: Tier 2

Household: Tier 1

  • Address: Tier 2 


You may be wondering how Individuals can be associated with their Household due to the fact that they are recorded within two different Tier 1 forms and Tier 1s are generally totally separate entities (we can't even bring them into the same report section together by default). The answer is that we can "relate" these two Tier 1s using a Linking Field. Please review the following article (stopping at the section labeled "Dynamic Fields") before continuing: Linking Fields.

Now that you have reviewed the article let's discuss what a bare minimum database should track on each form:


Name: We recommend that this field is set to Duplicate Check as well as a Quick View and Searchable in most cases

Date of Birth: This should also be a duplicate check field (Check out Best Practices: Duplicate Check)

  • Important: Do not use a Numeric field to track "Age" and do not use a calculation to figure out Age on a form. This is against "Best Practices", a report will give you much more accurate data based off of their Date of Birth, such as Current Age, Age at Intake, and even Age at Enrollment

Demographics (Section): We added just one demographic field, Gender, as an example, you may add as many demographics as you'd like, such as Race, Ethnicity, Veteran Status, etc

  • Important: We advise against using text fields for this type of data because it will be difficult to report on. For the same reason, you should not use the "Allow other" feature on an option field in most cases.


Start Date: The date on which an individual starts a program

Program: Which program they are enrolling in

  • Important: They should only be able to choose 1 program (such as Housing or Education). If they are to be enrolled in multiple programs it is best practice to create 1 Enrollment/Exit record per program.

End Date: The date on which an individual exits the program

Reason for Exit: This can be tailored to your needs but it can include items such as Program Completed or Client Terminated.


Link to Program: this will relate this service to the specific program they are enrolled in

  • Important: make sure this field is required and the option "Same Folder Linking" is enabled

Date of Service: the date on which the service was given

Service: the specific service that was given

  • Important: They should only be able to choose one service per record. Do not use checkboxes or any other form of multi-select field and do not add multiple fields (for example a field labeled Service 1, another labeled Service 2, etc). If a client receives 5 services, you should create 5 distinct service records

  • Important: You should only have 1 service form, if possible. With one service form you will easily be able to count services provided, and unique individuals without duplication. Having more than one service form will greatly reduce the ability to achieve this outcome.


Head of Household Name: this will track the "main" individual of the household.

  • Important: This should be a duplicate check field

Head of Household Date of Birth: this will track the "main" individual's date of birth

  • Important: This too should be a duplicate check field

Link to Individual: This will relate multiple Individuals to this specific Household


  • Status: this will track if the address is currently in use

  • Household Type: this can be helpful if they have more than one "active" location

  • Address: this will track the physical address

Common Questions

1. Why do I need to link my Service form to my Enrollment/Exit form when they are both Tier 2 forms under the same Individual?

This is because without doing so you cannot report on information from the Enrollment/Exit form and the Service form within the same report section without duplication. You will see duplicated rows within your reports if you do not use a linking field. Please refer to the following article: Reporting with Multiple Forms and Linking Fields for more information

2. I don't want to create "Individual" records for children of a Household, they don't receive services. Can't I just track them as a Tier 2 under the Individual receiving services?

Each member of a Household should have an Individual record created for them, even if they are not a client. Never track these as a Tier 2 form as you won't be able to report on them. When you create a report you will be able to filter out those who were never enrolled in a program.

3. Do I really need a Tier 2 for my Addresses?

This depends, if you don't need historical address information, then no. You can instead have 1 address field on the Household form. However, if you do need the historical information or need to track more than one address at a time then you should have a tier 2 for your addresses that live under the Household.

4. One record per service!? Since it's linked to a Program Enrollment, I can't even make these in batch, are you sure this is the best way?

While it may take longer to enter services (or longer to import as well) with this configuration, you will receive the greatest reporting outcomes. If you do not use this configuration it will not be possible to determine how many unique services were provided, how many services were provided per program, etc.

5. Just one service form!? But I have multiple programs and all of which provide different types of services!

Reporting on multiple Service forms will be extremely difficult, if not nearly impossible (especially as your system continues to increase record counts). 

Having just one service form, linked to the Program Enrollment should mitigate the separate program/services issue since you could build a report to see if someone accidentally saved a record with an incorrect service tied to a program. 

If you want to display only certain services based on the program this can be made possible (you must have Form Logic in your site). To do so please see our article on Creating Cascading Dropdowns using Form Logic. If you need further details on this setup contact the Ongoing Support Team.

Did this answer your question?