One of the major components in iCarol is the Resources feature – allowing you to create and store information about service providers in your area so that you can refer your clients to them for further assistance. “Resources” has a wide range of tools, settings and capabilities allowing iCarol to serve equally well for help lines with only modest requirements and a few hundred resource records, to the most complex help lines with tens of thousands of records and very deep functional requirements.
This document will focus in particular on the structure and types of records available to be used for storing information about community service providers – we call it the “Agency, Program and Site” structure. We’ll explore how these record types are related, what they can (and cannot) store and do, and our recommendations for their best use.
What is Agency, Program and Site structure?
Generally, it allows resources to be represented by up to four different record types: Agencies, Programs, Sites and ProgramAtSites. In iCarol, Agency is the top-level record, and it can have multiple Programs and multiple Sites, which are joined together by ProgramAtSite records.
A tangible example
Consider the (fictitious) Salvation Army of Elmdale. They operate a thrift store, clothing donation drop-off, utility payment assistance and a food bank. They have three different locations at the Belmont Mall, Main Street and on the University Campus – but not all of these locations offer all of the services. The resource manager would create one Agency record (Salvation Army of Elmdate) that has four Program records and three Site records. Then within each Program record, she would choose which Sites offer that Program. (A fourth record type – ProgramAtSite – links the records together. More on that later in this document.)
There are several benefits to this approach. First, let’s say she gets a call from someone at the Agency indicating there is a new phone number for the utility payment assistance. If there were three separate records for that Program (one for each Site), she’d have to make that change in each of those three records, which is both laborious and error prone. Instead, she simply updates the single Program record and the change is immediately seen when viewing the resource. Second, when someone is viewing the utility assistance Program record, they can see it is offered at two of the three Sites, and they can see other Programs offered by the Agency which might also benefit the client.
Who should consider using Agency, Program and Site structure?
For many of our clients, this hierarchical structure is not necessary. They are content storing all of the information in a single Resource record (technically an Agency record in iCarol), where their phone workers can see everything at a glance and make referrals to clients at that level.
But for help lines who want or need a higher level of organization and segmentation of data in their Resource records, they often choose to reach for the more complex structure. They likely have service providers that offer multiple different Programs at multiple different Sites, and they need to be able see the relationship of these Programs and Sites to each other, while keeping them together under their parent Agency. This also makes reporting more useful, as you can get data across an Agency, such as “how many referrals did I make to all Programs at an Agency”.
When weighing whether or not to use Agency, Program and Site structure in iCarol, you need to decide if the added complexity it brings is worth it, or if the more simplified “all-in-one” approach will suffice for your agency.
How iCarol stores information
Before we get into the differences between the record types, it is useful to know that behind the scenes, iCarol’s database uses the exact same table to store all of them, with a few fields to indicate what type of record type it is, and how it is related to the other record types. This means that virtually all of the capabilities in iCarol that are available to one record type, are available to all record types. So, iCarol has a tremendous flexibility to what is possible to be done, as well as tools to limit those possibilities so that they are used in the right way for your agency.
Agencies
The top level of the structure is the Agency record. It is intended to store information about the overall organization, such as:
• name,
• description,
• legal status (non-profit, commercial, faith-based, etc)
• date of incorporation
• …and so on

If you are using the Agency, Program and Site structure, we recommend that you do not put any service delivery information at the Agency level, and instead put it into the Program level. Also, we recommend that you not allow referrals to be made at the Agency level either – instead keep it focused on Programs.
All other record types (Programs, Sites, ProgramAtSites) must belong to exactly one parent Agency. Programs and Sites are “peers” of each other (and not in a “parent/child” relationship) under an Agency.
Programs
Next, the Program record is meant to contain information about one service, or several highly-related services that the Agency considers to be a “program” and normally offered together. The Program record should focus on service delivery information, like:
• Name and description of the Program
• Eligibility requirements
• Documentation requirements
• Application process
• Assignment into custom or standard categorization schemes, like the AIRS Taxonomy
• Coverage areas served
• Website address
• Contact information (phone numbers, email address)
Since the Program record is focused on service delivery, it is these records that phone workers will likely most often be searching when trying to find help for a client. After all, services are what the client is looking for – so this is the level at which we recommend referrals be made.
Sites
Site records represent service delivery locations, places at which the client can receive service. So here you would place information like:
• Physical address and description
• Mailing address
• Hours of operation
• Public transportation access
• Disabilities access
Importantly you don’t want to put service delivery information into Sites (it belongs in Programs, see above). And one of the few ways we limit field availability is in this way – there are no service delivery fields ever available in Site records, and you also cannot make referrals to a Site record.
An example of a Program offered at multiple Sites
ProgramAtSites
The ProgramAtSite record is what “links” exactly one Program to exactly one Site, and for many of our clients, that is the only thing they use this record type for. (Indeed, they probably don’t even know they are using it – they’ve simply linked the Program and Site together.)
But the ProgramAtSite record, since it does have all the fields and capabilities available to it that all other records have, can do something special: It can contain any differences about the Program when it is offered at the Site.
Let’s return to our example and help illustrate this. Let’s say the phone number for the utility assistance Program generally is 415-555-1234. But at the Belmont Mall, they have a different phone number from the general one, which is 650-444-1234. That difference can be stored in the ProgramAtSite record (“Utility assistance offered at Belmont Mall”). Then when you are viewing the Program record offered at most of the Sites, you’ll see the main phone number (415-555-1234) unless you are viewing it when offered at the Belmont Mall, in which case you’ll see the specific one (650-444-1234). This simple example can be extended to any field – iCarol elegantly “knows” what information to show based on which Program and Site combination you are viewing.
You can even store things like custom or standard categories and coverage areas at this ProgramAtSite level.
Because of the subtlety involved in using ProgramAtSite records in this way, it is not enabled by default, and most of our clients prefer to keep it turned off. Please contact our support team if you would like it turned on for you.
Now let’s look at some of the ways these record types can be used.
Agencies only
The simplest approach of all would be to put all information into Agency records and make referrals to them – as described at the beginning of this document. You would neither see nor use the other record types, and for many help lines that is just fine.
Agencies with Programs (but no Sites)
Some of our clients do want the added benefits of having Program records, but for them Sites are not particularly useful. So instead they put all the location information into the Program records. If a Program is offered at multiple different locations, well they just have multiple duplicate Program records, where the Program name might have a reference to the location so they are more easily distinguished from each other, and then of course the location fields are populated appropriately for each different location. In this scenario the resource manager can still see that they could create Site records, but they simply choose not to do so. This means if Program information needs to be changed, she needs to change it in each of those “duplicate” Program records for each location.
Agencies with Programs and Sites
Adding the use of Site records into the mix gets us closer to the approach laid out at the beginning of this document – so when a Program is offered at multiple Sites, the resource manager simply links the appropriate ones together. Now when information changes at, say, a Site, she only has to update one record and it immediately applies when viewing any Program offered at the Site.
Agencies with Programs, Sites and ProgramAtSites
The most complex and capable approach of all avails all of the fields at the ProgramAtSite level to the resource manager, allowing her to reflect specific differences from the overall Program record when it is offered at a particular Site, as described above.
Turning fields on/off in different record types
Lest all this flexibility get confusing on a daily basis, iCarol lets resource managers turn fields on or off at any of these record types, both for viewing and editing a record. This helps ensure that you enter your resources in a consistent way – for example if you don’t want to put location information into Program records.
Resource managers can control which fields show in which record types
Searching

When searching resources, the user can even target certain record types. iCarol will remember the person’s preference for future searches.
Final thoughts – what we see in the “real world”
For many of our clients who don’t need intensive “information and referral” (I&R) capabilities, the “Agencies only” method is sufficient, and still offers a significant amount of tools and functionality. But for those that do detailed I&R, we see an even mix of clients using “Agencies and Programs (but no Sites)”, “Agencies, Programs and Sites” as well as “Agencies, Programs, Sites and ProgramAtSites”.