Office Assignment
Four assignment types (fixed, location-based, field value, field code), multi-level officer processing, and OFFICE_ASSIGNMENT_NOTIFICATION.
Fixed office (CODE_FIXED_OFFICE)
Use when the office is always the same regardless of applicant input.
Always call list_offices first to fetch the correct officeId — never hardcode or guess UUIDs:
list_offices(organisationId: "<org_uuid>", level: "LEVEL_1")Use the id field from the response as officeId:
"breakingAction": {
"actionType": "OFFICE_ASSIGNMENT",
"args": {
"officeAssignmentType": "CODE_FIXED_OFFICE",
"officeLevel": "LEVEL_1",
"officeId": "<id from list_offices response>",
"certificateWithList": false,
"updateFieldWithDatasetValue": false
}
}Location-based (CODE_FROM_LOCATION)
Use when the office is determined by a location field the applicant filled in. The formFieldKey must use the .id suffix:
"breakingAction": {
"actionType": "OFFICE_ASSIGNMENT",
"args": {
"officeAssignmentType": "CODE_FROM_LOCATION",
"officeLevel": "LEVEL_1",
"formFieldKey": "FIELD_YOUR_LOCATION_FIELD.id",
"certificateWithList": false,
"updateFieldWithDatasetValue": false,
"excludeCurrentApplication": true
}
}Field value-based (CODE_IN_APPLICATION_OFFICE)
Use when the form has an office field that stores the office value directly (.value suffix):
"breakingAction": {
"actionType": "OFFICE_ASSIGNMENT",
"args": {
"officeAssignmentType": "CODE_IN_APPLICATION_OFFICE",
"officeLevel": "LEVEL_1",
"officeId": null,
"formFieldKey": "applicationOffice.value",
"formFieldKeys": null,
"fixedOfficeCode": null,
"officeAssignmentExpression": null
}
}Office code from field (CODE_APPLICATION_FIELD_CODE)
Use when the form field stores the office code:
"breakingAction": {
"actionType": "OFFICE_ASSIGNMENT",
"args": {
"officeAssignmentType": "CODE_APPLICATION_FIELD_CODE",
"officeLevel": "LEVEL_1",
"officeId": null,
"formFieldKey": "applicationOffice.value",
"formFieldKeys": null,
"fixedOfficeCode": null,
"officeAssignmentExpression": null
}
}Multi-level officer processing
ASSIGN_OFFICE fires from whatever state is ready to assign — after submission, payment, or integrations. The nextEvent: "ASSIGN_OFFICE" on the preceding state triggers it automatically.
officeLevel values: LEVEL_1, LEVEL_2, LEVEL_3, ...
Officer notification (OFFICE_ASSIGNMENT_NOTIFICATION)
Always pair with OFFICE_ASSIGNMENT. Goes in nonBreakingActions. Must repeat officeAssignmentType, officeLevel, formFieldKey in args alongside the template:
{
"actionType": "OFFICE_ASSIGNMENT_NOTIFICATION",
"args": {
"notificationType": "STATIC",
"staticTemplate": {
"en": {
"title": "Application Received",
"subject": "Application Received",
"emailBody": "...",
"smsBody": "...",
"emailMessage": null
},
"fr": {
"title": "...",
"subject": "...",
"emailBody": "...",
"smsBody": "...",
"emailMessage": null
},
"rw": {
"title": "...",
"subject": "...",
"emailBody": "...",
"smsBody": "...",
"emailMessage": null
}
},
"officeAssignmentType": "CODE_FROM_LOCATION",
"officeLevel": "LEVEL_1",
"formFieldKey": "FIELD_YOUR_LOCATION_FIELD.id",
"certificateWithList": false,
"updateFieldWithDatasetValue": false,
"excludeCurrentApplication": true
}
}