Please sign in to continue
Before we set up your access, a few quick details. Fields marked with * are required.
We've got your information. You're signed in, but your account hasn't been approved yet. Ben Harsch will reach out to confirm your setup.
Questions in the meantime?
[email protected] · 412-465-6463
Generate a fully branded, searchable appointment book from your BRT data
Courtesy of Western PA Annual Conference · Ben Harsch · [email protected] · 412-465-6463 · Something not working? Send me an email or call.
Config file generated and downloaded!
Save this file somewhere safe — you'll need it to make future changes. Upload it to your BRT file manager and note the website URL path.
The appointment book reads data from two separate BRT Publish exports — one for Charges (local church appointments) and one for Appointments (extension ministry, leave, etc.). Both must be set up in your BRT admin and published as JSON. The fields below must be included exactly as shown for the data to process correctly.
1. Charges JSON Export
Create a Publish on the Contacts table using the Charges view, with these fields:
| Field Path | Required? | Purpose |
|---|---|---|
| Name | Required | Charge name |
| StartDate | Required | Charge active start |
| EndDate | Optional | Charge active end (blank = still active) |
| Churches.FirstName | Required | Church display name |
| Churches.GCFANumber | Optional | GCFA number shown in parentheses |
| Churches.ChurchStatus | Optional | Used to exclude closed churches |
| Churches.District.Name | Required* | Church's current district assignment in BRT |
| Churches.FutureDistrictDataCore.Name | Required* | Church's incoming district for next conference year (standard UMC Data Core field) |
| Churches.Appointments.StartDate | Required | Appointment start date |
| Churches.Appointments.EndDate | Optional | Appointment end date |
| Churches.Appointments.AppointmentPosition | Required | Senior Pastor, Associate, etc. |
| Churches.Appointments.People.FirstName | Required | Pastor first name |
| Churches.Appointments.People.LastName | Required | Pastor last name |
| Churches.Appointments.People.MiddleName | Optional | Middle name/initial |
| Churches.Appointments.People.NameSuffix | Optional | Jr., Sr., III, etc. |
| Churches.Appointments.People.ClergyStatus | Required | Clergy status field (fallback) |
| Churches.Appointments.People.ClergyStatusRecords.StartDate | Optional | Status log start (for date-based resolution) |
| Churches.Appointments.People.ClergyStatusRecords.EndDate | Optional | Status log end |
| Churches.Appointments.People.ClergyStatusRecords.ClergyStatus | Optional | Status log value |
2. Appointments JSON Export
Create a Publish on the Content table using the Appointments view, with these fields:
| Field Path | Required? | Purpose |
|---|---|---|
| StartDate | Required | Appointment start date |
| EndDate | Optional | Appointment end date |
| AppointmentPosition | Optional | Role/position label |
| ExtensionMinistry | Required | Organization/ministry name |
| ExtensionMinistryPositions | Required | NCC category label |
| Church.FirstName | Required | Used to exclude church-based records |
| People.FirstName | Required | Pastor first name |
| People.LastName | Required | Pastor last name |
| People.MiddleName | Optional | Middle name/initial |
| People.NameSuffix | Optional | Jr., Sr., III, etc. |
| People.ClergyStatus | Required | Clergy status (fallback) |
| People.ClergyStatusRecords.StartDate | Optional | Status log start |
| People.ClergyStatusRecords.EndDate | Optional | Status log end |
| People.ClergyStatusRecords.ClergyStatus | Optional | Status log value |
3. How to publish as JSON
After setting up your BRT publish, BRT will show you the query XML it generated. Paste it below to automatically check whether all required fields are included. You cannot paste WPA's XML into BRT -- this tool compares your XML against the required fields and tells you what is missing or different.
Charges (TableId: Contacts, ViewId: Charges):
<Query TableId="Contacts" ViewId="Charges">
<ResultFields>
<Ref FieldId="Name" />
<Ref FieldId="StartDate" />
<Ref FieldId="EndDate" />
<Ref FieldId="Churches.FirstName" />
<Ref FieldId="Churches.GCFANumber" />
<Ref FieldId="Churches.ChurchStatus" />
<Ref FieldId="Churches.District.Name" />
<Ref FieldId="Churches.FutureDistrictDataCore.Name" />
<Ref FieldId="Churches.Appointments.StartDate" />
<Ref FieldId="Churches.Appointments.EndDate" />
<Ref FieldId="Churches.Appointments.AppointmentPosition" />
<Ref FieldId="Churches.Appointments.People.FirstName" />
<Ref FieldId="Churches.Appointments.People.LastName" />
<Ref FieldId="Churches.Appointments.People.MiddleName" />
<Ref FieldId="Churches.Appointments.People.NameSuffix" />
<Ref FieldId="Churches.Appointments.People.ClergyStatus" />
<Ref FieldId="Churches.Appointments.People.ClergyStatusRecords.StartDate" />
<Ref FieldId="Churches.Appointments.People.ClergyStatusRecords.EndDate" />
<Ref FieldId="Churches.Appointments.People.ClergyStatusRecords.ClergyStatus" />
</ResultFields>
</Query>
Appointments (TableId: Content, ViewId: Appointments):
<Query TableId="Content" ViewId="Appointments">
<ResultFields>
<Ref FieldId="StartDate" />
<Ref FieldId="EndDate" />
<Ref FieldId="AppointmentPosition" />
<Ref FieldId="ExtensionMinistry" />
<Ref FieldId="ExtensionMinistryPositions" />
<Ref FieldId="Church.FirstName" />
<Ref FieldId="People.FirstName" />
<Ref FieldId="People.LastName" />
<Ref FieldId="People.MiddleName" />
<Ref FieldId="People.NameSuffix" />
<Ref FieldId="People.ClergyStatus" />
<Ref FieldId="People.ClergyStatusRecords.StartDate" />
<Ref FieldId="People.ClergyStatusRecords.EndDate" />
<Ref FieldId="People.ClergyStatusRecords.ClergyStatus" />
</ResultFields>
</Query>
How do you want to power your appointment book?
Export your two JSON files from BRT (Charges and Appointments), then upload them below. The data will be processed and embedded directly in your config file — no server setup required. When appointments change, simply come back here, load your config, and re-upload updated files.
District field — use this when generating
the appointment book for the current conference year.FutureDistrictDataCore — use this if your
conference has already moved churches to their incoming district assignments in BRT and you are
generating the book for the upcoming conference year.
Both fields are standard UMC Data Core fields available in every BRT conference.Validate your export files
After uploading your files above, click below to check whether all required fields are present. The tool will tell you exactly what is missing or incorrect.
A Cloudflare Worker proxy is required to fetch live data from BRT due to browser security restrictions (CORS). If you are not sure what this means, choose Option A instead.
Add one entry per supervisory area (district). The order here is the order they appear in the book. Upload your Charges file above to auto-populate. Drag ☰ to reorder.
When someone downloads the appointments as a CSV file, the first column shows a short code for each district. For example, if your Northern District should show as NO in that column, set it here. If you leave a code blank, the full district name will be used instead. These update automatically when you add districts above.
| District Name | CSV Code |
|---|
Download your config file first and keep it somewhere safe. This is your master settings file — next year you load it back into this tool, upload updated appointment data, and regenerate. Without it you start from scratch.
Saves as apptbook-config-[yourconf].json
Choose which version(s) to generate. Public is for your conference website —
clean, no admin tools.
Internal/Admin adds the date filter,
CSV download, audit tool, and direct BRT record links.
@@RenderBody()This layout suppresses your site's normal header and footer so the appointment book fills the full page with its own built-in navigation bar.
Repeat Steps 2 and 4 whenever you need to update appointments — load your saved config file, upload new data, regenerate, and re-paste.