Managing Schedulers
A Scheduler is a single shift schedule — for example, "Berlin Store", "ICU Day Shift", or "Project Atlas". Each Scheduler is its own record in Salesforce, with its own resources (rows), target object (the parent context), filters, and predefined shifts.
Unlike the legacy Shift Planner, which gives you one global view tied to Locations, the flair Scheduler lets you create as many Schedulers as you need and tie them to whatever object makes sense for your business.
This article covers how to create, configure, and share Schedulers.
Creating new Schedulers requires the Flair Scheduler Admin permission set. Users with the Flair Scheduler Manager permission set can only see and use existing Schedulers. See Setting Up in Salesforce.
Anatomy of a Scheduler
Before creating your first Scheduler, it's worth understanding the two key roles every Scheduler defines:
- Resource object — what appears as rows in the planning view. By default this is Employee (so each row is one employee), but it can be any object your org uses for resources.
- Target object — the parent context the Scheduler is tied to (e.g. Location, Department, Project, or any custom object). The target is what gives the Scheduler its scope.
This two-axis model is what makes the flair Scheduler object-agnostic. The legacy Shift Planner was always Employee × Location. The flair Scheduler can be Employee × Project, Employee × Department, or — for more advanced use cases — even (custom resource object) × (custom target object).
In addition, each Scheduler defines:
- Filters — raw SOQL fragments that restrict which resources and targets show up.
- Predefined Shifts — reusable shift templates (Morning, Late, Night, etc.), optionally restricted by filters.
- Shift Transfer rules — whether transfers are enabled and the minimum notice period.
- Publish behaviour — whether managers must confirm before publishing or moving published shifts.
- Optional custom screen flow for the Edit Shift modal.
Creating a new Scheduler
- Use the App Launcher and search for Schedulers.
- Click New.
- Give the Scheduler a clear, descriptive Name (e.g. "Berlin Store — Morning Team").
- Configure the Resource and Target sections (see below).
- Click Save.
Resource configuration
The Resource is what shows up as the rows of your planning view. For nearly every customer this is Employee, but you can point it at any object.
| Field | What it does |
|---|---|
| Resource Object | The API name of the SObject used as rows (e.g. flair__Employee__c). |
| Resource Object Name Field | Which field of that object to use as the display name in each row (e.g. a custom "Last, First" formula). Defaults to the standard Name. |
| Resources Filter Raw Query | A raw SOQL WHERE fragment that further restricts which resources appear. Supports dynamic placeholders — most commonly {targetRecordsIds}, which is replaced at runtime by the IDs of the Scheduler's target records (e.g. flair__Employee__c.flair__Location__c IN ({targetRecordsIds})). |
| Shift Resource Reference Field | The lookup field on Shift__c that links a shift to a resource (defaults to the standard Employee link). |
| Employee Targets Query | Used to scope which targets a logged-in Salesforce user can plan against. |
| Resource Object Preview Screen Flow Name | Name of a Salesforce Screen Flow that powers the side-panel preview when a resource row is clicked. |
| Fetch Employees Using Segments | When checked, employees are loaded via the org's segments mechanism (advanced filtering). |
Many orgs want rows to show "Last, First" or a localised display name. Use Resource Object Name Field to point at a formula or text field on the resource object — applied to every view of this Scheduler.
Target configuration
The Target is the parent context the Scheduler is tied to. It is what makes one Scheduler different from another.
| Field | What it does |
|---|---|
| Target Object | The API name of the SObject used as the target (e.g. flair__Location__c, flair__Department__c, flair__Project__c, or a custom object). |
| Target Object Name Field | Display name field on the target. |
| Targets Filter Raw Query | Raw SOQL WHERE fragment restricting which target records this Scheduler covers (e.g. one specific Location). |
| Shift Target Reference Field | The lookup field on Shift__c that links a shift to the target. |
| Hub Targets Query | Optional query overriding which targets the Hub fetches for an employee. |
| Target Object Preview Screen Flow Name | Screen Flow shown in the side panel when a target is selected (useful for project overviews). |
Common Resource configurations
The {targetRecordsIds} placeholder is the most common way to scope resources to the Scheduler's targets:
| Use case | Resources Filter Raw Query |
|---|---|
| Employees in the Scheduler's Locations | flair__Employee__c.flair__Location__c IN ({targetRecordsIds}) |
| Employees in the Scheduler's Departments | flair__Employee__c.flair__Department__c IN ({targetRecordsIds}) |
| Active employees only | flair__Status__c = 'Active' |
Common Target configurations
| Use case | Target Object | Example raw query |
|---|---|---|
| Location-based rota | flair__Location__c | Id = 'a0X…' (one specific Location) |
| Department schedule | flair__Department__c | Id = 'a0X…' |
| Project schedule | flair__Project__c | flair__Status__c = 'Active' |
| Custom object | YourOrg__Site__c | YourOrg__Active__c = true |
Predefined Shifts
Predefined Shifts are templates that let you create real shifts with a single click — for example, "Morning 06:00–14:00" or "Night 22:00–06:00".
To add a predefined shift:
- Open the Scheduler record.
- Scroll to the Predefined Shifts related list.
- Click New.
- Set the Name, Start Time, End Time, and (optionally) Break, Color, and Cost Center.
- Pick the Days the predefined shift applies to (so e.g. a Night shift can be restricted to Mon–Fri).
- Save.
Filtering which Predefined Shifts appear
On the Scheduler record, the Predefined Shifts Filter Raw Query field lets you restrict which predefined shifts appear in the picker for that Scheduler. This is handy when one global pool of templates is shared across many Schedulers and each Scheduler only wants a subset.
Shift Transfer configuration
Two fields on the Scheduler record control how Shift Transfer behaves for shifts in that Scheduler:
| Field | What it does |
|---|---|
| Allow Shift Transfer | Boolean — turns Shift Transfer on or off for this Scheduler. Off by default. |
| Min Days Before Shift Transfer | Numeric — minimum number of days between today and the start of a shift before a transfer can be requested. |
If you don't want Shift Transfer at all in a Scheduler, leave Allow Shift Transfer unchecked.
Publish behaviour
| Field | What it does |
|---|---|
| Confirm Shift Publish | When checked, the manager has to confirm a dialog before shifts get published. Reduces accidental publishes on large schedules. |
| Confirm Published Shift Move | When checked, dragging a published shift to a new slot triggers a confirmation. Recommended on schedules that are visible to employees. |
Customising the Edit Shift modal
The default Edit Shift modal covers most needs (start, end, break, notes, recurrence). If you need extra fields or business logic when planners create or edit a shift, you can replace the default modal with a Salesforce Screen Flow.
Set the Edit Shift Screen Flow Name field on the Scheduler to the API name of your flow. When planners click a shift, your flow opens instead of the standard modal.
This is an advanced use case — leave the field blank to use the default modal.
Hub visibility per Scheduler
The Scheduler-level Show In Hub flag controls whether this specific Scheduler's shifts are visible in the Employee Hub. Combined with the organisation-level Hub toggle, this gives you fine-grained control:
- Org toggle on, Scheduler toggle on → employees see this Scheduler's shifts in the Hub.
- Org toggle on, Scheduler toggle off → only Salesforce users can see this Scheduler. Useful for back-office or test Schedulers.
- Org toggle off → no Scheduler is shown in the Hub, regardless of the per-Scheduler setting.
Sharing a Scheduler
Schedulers respect Salesforce sharing rules. The default sharing model on the Scheduler object is Read/Write internally, Private externally.
To grant another user access:
- Open the Scheduler record.
- Click Sharing in the action menu (or Share from the highlights panel).
- Add the user, role, or public group.
- Choose the access level (Read or Read/Write).
- Save.
Users with the Flair Scheduler Manager permission set can plan shifts in any Scheduler shared with them, but cannot edit the Scheduler configuration itself.
Editing or deleting a Scheduler
- Editing a Scheduler (renaming, changing filters, predefined shifts, transfer rules) is done directly on the Scheduler record. Changes take effect the next time someone opens the planning view.
- Deleting a Scheduler removes the Scheduler configuration but does not automatically delete the shifts that belong to it. Take care — deleted Schedulers can only be restored from the Salesforce Recycle Bin.
If you're retiring a Scheduler, consider archiving it instead — for example by setting Show In Hub to off and renaming it with a prefix like [Archived]. This keeps the historical shifts queryable from reports without confusing employees.
Next steps
Now that you have a Scheduler set up, you're ready to plan shifts. Continue to Working With Shifts.