Case Management has a single configuration end point (per environment) for system-wide settings. There may be further configuration end points for some case types, although this functionality has been deprecated - most case configuration is handled via your website using the Configuration Manager.
CaseManagement.getConfig
Case Management uses our standard end point configuration structure to hold solution-wide settings.

End points called
{
"linkConf": {
"rootCitizen": "http://mysite.com",
"pathCitizen": "/myaccount",
"rootAnon": "http://mysite.com",
"pathAnon": "/1234",
"rootStaff": "http://mysite.com",
"pathStaff": "/self-service",
"rootEnquiry": "http://mysite.com",
"pathEnquiry": "/5678"
},
"customLinkConf": {
"citizen": [{
"id": "1111",
"displayName": "Test1 subsite",
"root": "https://test1.gossinteractive.com",
"pathAnon": "/9876",
"pathCitizen": "/5432"
}, {
"id": "2222",
"displayName": "Test2 subsite",
"root": "https://test2.gossinteractive.com",
"pathAnon": "/1234",
"pathCitizen": "/4321"
}],
"staff": [{
"id": "2345",
"displayName": "Staff intranet DotNet",
"root": "https://staff1.gossinteractive.com",
"pathStaff": "/5555",
"pathEnquiry": "/6666"
}, {
"id": "2344",
"displayName": "Staff intranet Java",
"root": "https://staf2.gossinteractive.com",
"pathStaff": "/7777",
"pathEnquiry": "/8888"
}]
},
"emailConf": {
"sendFrom": "[email protected]",
"templates": "Generic Case",
"monitorTo": "",
"additionalAllowedElements": [],
"additionalAllowedAttributes": []
},
"formConf": {
"maxFileCountCitizen": 3,
"maxFileCountStaff": 20,
"maxFileSizeCitizen": 3000000,
"maxFileSizeStaff": 5000000,
"maxFileTextCitizen": "3MB",
"maxFileTextStaff": "5MB",
"relatedCaseLinks": ["Related", "Parent Of/Child Of", "Blocks/Is Blocked By"],
"showContactCitizen": true
},
"taskConf": {
"availableTasks": [
"collectinfo",
"investigate",
"feedback"
]
}
}
let actions = {
"caseCreate": {
"note": {
"displayText": "Test note for caseCreate",
"systemText": "Test note for caseCreate",
"privateNote": false
},
},
"caseOpened": {
"note": {
"displayText": "Test note for caseOpened",
"systemText": "Test note for caseOpened",
"privateNote": true
}
}
};
| Property | Type | Description |
|---|---|---|
| linkConf | Object, required | Holds default URLs to various articles, generally used as links in the emails sent to users. These links will be used by all case types should no custom configuration be set up |
| linkConf.rootCitizen | String | The address of the public website |
| linkConf.pathCitizen | String | The article ID or friendly URL of a User Requests article that displays case management processes |
| linkConf.rootAnon | String | The address of the public website |
| linkConf.pathAnon | String | The article ID or friendly URL of an article using the Forms Service template accessible to non-logged-in users with the CASEMANAGEMENTCASESTATUS form related to it |
| linkConf.rootStaff | String | The address of the website staff use to manage cases |
| linkConf.pathStaff | String | The article ID or friendly URL of an article using the Self Service template. The article should be set up to display the case management, case view and any "task" related workflow processes This root and path are used in the links to manage cases from the Case Search results |
| linkConf.rootEnquiry | String | The address of the website staff use to manage cases |
| linkConf.pathEnquiry | String | The article ID or friendly URL of an article using the Forms Service template. This root and path are used in the links to view case details from the Case Search results and links in the Dashboards. If this article is secured your users will need to have access to it |
| customLinkConf.citizen | Array of objects, optional | Each object defines a public facing subsite. When configuring case types, users will be able to pick one of these options from a drop-down list in the Email Links section. This allows different case types to be handled on different subsites. If not supplied the configuration of individual cases will use the links defined above |
| customLinkConf.citizen[n].id | String | A unique ID for the settings (can be any string) |
| customLinkConf.citizen[n].displayName | String | Text visible in the config manager drop-down |
| customLinkConf.citizen[n].root | String | The root URL of the subsite |
| customLinkConf.citizen[n].pathAnon | String | The article ID or friendly URL of an article using the Forms Service template accessible to non-logged-in users with the CASEMANAGEMENTCASESTATUS form related to it |
| customLinkConf.citizen[n].pathCitizen | String | The article ID or friendly URL of a User Requests article that displays case management processes |
| customLinkConf.staff | Array of objects | Each object defines a staff subsite. When configuring case types, users will be able to pick one of these options from a drop-down list in the Email Links section. This allows different case types to be handled on different subsites |
| customLinkConf.staff[n].id | String | A unique ID for the settings (can be any string) |
| customLinkConf.staff[n].displayName | String | Text visible in the config manager drop-down |
| customLinkConf.staff[n].root | String | The root URL of the subsite |
| customLinkConf.staff[n].pathStaff | String | The article ID or friendly URL of a Self Service article that displays case management processes |
| customLinkConf.staff[n].pathEnquiry | String | The article ID or friendly URL of an article using the Forms Service |
| emailConf | Object, required | |
| emailConf.sendFrom | String | The default "from" address emails will appear to come from |
| emailConf.monitorTo | String | An optional BCC address that will be copied in to all emails |
| emailConf.additionalAllowedElements | Array <string> | When emails are sent, their templates are passed through a HTML sanitiser to guard against malicious elements. The list of allowed elements is described in Creating Templates. If you want to add additional elements list them here, eg ["i"] |
| emailConf.additionalAllowedAttributes | Array <string> | When emails are sent, their templates are passed through a HTML sanitiser to guard against malicious elements. The list of allowed attributes is described in Creating Templates. If you want to add additional attributes list them here, eg ["title"] |
| emailConf.templates | String | Suffix for email management |
| formConf | Object, required | Defaults relating to upload fields on forms |
| formConf.maxFileCountCitizen | Integer | The number of upload fields on the "citizen response" form (the form used to reply to questions from the case manager). The maximum is four |
| formConf.maxFileCountStaff | Integer | The total number of files that can be attached to a case by staff users |
| formConf.maxFileSizeCitizen | Integer | The maximum files size a user can upload on the "citizen response" form |
| formConf.maxFileSizeStaff | Integer | The maximum file size staff users can upload |
| formConf.maxFileTextCitizen | String | Displayed to the user, eg "3MB" |
| formConf.maxFileTextStaff | String | Displayed to staff users, eg "5MB" |
| formConf.relatedCaseLinks | Array | Options that will appear in the drop-down when linking cases. Strings that include a forward slash will create paired "inward" and "outward" links between cases. Remove this property to disable linking |
| formConf.showContactCitizen | Boolean | Set false to disable the Contact button in the case manager interface |
| taskConf.availableTasks | Array | A list of the tasks installed in this environment and that can be made available in a case type's Tasks configuration. The standard tasks are: |
System Action Notes
The optional
To override a default, add a new object inside the
"actionName": {
"note": {
"displayText": "New note",
"systemText": "New note",
"privateNote": false
},
}
Where:
- actionName - the name of the action to override (see below)
- displayText - the text that will appear in the notes and can contain internationalisation tokens
- systemText - the text that is always recorded in history and should not include internationalisation tokens
- privateNote - either true or false for whether or not the note should be private (appears in the Case Management interface only) or public (appears in the case history visible to the person who raised the case)
The actions that set system notes, and that can be overridden are:
| Action Name | Private? | Display Text | System Text |
|---|---|---|---|
| caseAppointmentCancel | false | gi.cm.core.history.appointment.cancelled. gi.cm.core.history.appointment.dept: {{action.values.appDepartment}}; gi.cm.core.history.appointment.schedule: {{formatDate action.values.appDate action.values.dateTimeFormat}}; gi.cm.core.history.appointment.with: {{action.values.appWith}}{{#if action.values.appNote}}; gi.cm.core.history.common.note: {{action.values.appNote}}{{/if}} | Appointment cancelled. Department: {{action.values.appDepartment}}; Scheduled for: {{formatDate action.values.appDate action.values.dateTimeFormat}}; Meeting with: {{action.values.appWith}}{{#if action.values.appNote}}; Note: {{action.values.appNote}}{{/if}} |
| caseAppointmentCreate | false | gi.cm.core.history.appointment.new. gi.cm.core.history.appointment.dept: {{action.values.appDepartment}}; gi.cm.core.history.appointment.schedule: {{formatDate action.values.appDate action.values.dateTimeFormat}}; gi.cm.core.history.appointment.with: {{action.values.appWith}}{{#if action.values.appNote}}; gi.cm.core.history.common.note: {{action.values.appNote}}{{/if}} | New appointment. Department: {{action.values.appDepartment}}; Scheduled for: {{formatDate action.values.appDate action.values.dateTimeFormat}}; Meeting with: {{action.values.appWith}}{{#if action.values.appNote}}; Note: {{action.values.appNote}}{{/if}} |
| caseAppointmentUpdate | false | gi.cm.core.history.appointment.updated. gi.cm.core.history.appointment.dept: {{action.values.appDepartment}}; gi.cm.core.history.appointment.schedule: {{formatDate action.values.appDate action.values.dateTimeFormat}}; gi.cm.core.history.appointment.with: {{action.values.appWith}}{{#if action.values.appNote}}; gi.cm.core.history.common.note: {{action.values.appNote}}{{/if}} | Appointment updated. Department: {{action.values.appDepartment}}; Scheduled for: {{formatDate action.values.appDate action.values.dateTimeFormat}}; Meeting with: {{action.values.appWith}}{{#if action.values.appNote}}; Note: {{action.values.appNote}}{{/if}} |
| caseAssign | true | Assigned to group: {{action.values.groupId}} | Assigned to group: {{action.values.groupId}} |
| caseAttachmentCreate | true | {{#is action.values.attachmentCount 1}}Uploaded attachment{{else}}Uploaded attachments{{/is}}: {{action.values.attachmentList}} | {{#is action.values.attachmentCount 1}}Uploaded attachment{{else}}Uploaded attachments{{/is}}: {{action.values.attachmentList}} |
| caseAttachmentRemove | true | {{#is action.values.attachmentCount 1}}Deleted attachment{{else}}Deleted attachments{{/is}}: {{action.values.attachmentList}} | {{#is action.values.attachmentCount 1}}Deleted attachment{{else}}Deleted attachments{{/is}}: {{action.values.attachmentList}} |
| caseCannotClose | true | Could not close case | "" |
| caseChangeStage | true | gi.cm.core.history.case.stagechange: {{action.values.caseStageDescription}}{{#if action.values.stageNote}}; gi.cm.core.history.common.note: {{action.values.stageNote}}{{/if}} | New case stage: {{action.values.caseStage}}{{#if action.values.stageNote}}; Note: {{action.values.stageNote}}{{/if}} |
| caseChangeStatus | false | gi.cm.core.history.case.statuschange: {{action.values.statusDescription}}{{#if action.values.statusNote}}; Note: {{action.values.statusNote}}{{/if}} | New case status: {{action.values.statusCode}}{{#if action.values.statusNote}}; Note: {{action.values.statusNote}}{{/if}} |
| caseChangeSubType | true | gi.cm.core.history.case.subtypechange: {{action.values.caseSubTypeDescription}}{{#if action.values.subTypeNote}}; gi.cm.core.history.common.note: {{action.values.subTypeNote}}{{/if}} | New case subtype: {{action.values.caseSubTypeName}}{{#if action.values.subTypeNote}}; Note: {{action.values.subTypeNote}}{{/if}} |
| caseClaimed | true | {{#if action.values.userFullName}}{{action.values.userFullName}}{{else}}{[action.values.userName}}{{/if}} has claimed the case. | {{#if action.values.userFullName}}{{action.values.userFullName}}{{else}}{[action.values.userName}}{{/if}} has claimed the case. |
| caseClosed | false | gi.cm.core.history.case.closed. gi.cm.core.history.case.closurereason: {{action.values.closureReasonDescription}}{{#if action.values.closureNote}}; gi.cm.core.history.common.note {{action.values.closureNote}}{{/if}} | Case closed. Reason: {{action.values.closureReasonCode}}{{#if action.values.closureNote}}; Note: {{action.values.closureNote}}{{/if}} |
| caseContactUpdateAddress | false | gi.cm.core.history.citizen.address.from {{action.values.previousValue}} gi.cm.core.history.citizen.address.to {{action.values.newValue}} | Contact address changed from {{action.values.previousValue}} to {{action.values.newValue}} |
| caseContactUpdateEmail | false | gi.cm.core.history.citizen.email.from {{action.values.previousValue}} gi.cm.core.history.citizen.email.to {{action.values.newValue}} | Contact email changed from {{action.values.previousValue}} to {{action.values.newValue}} |
| caseContactUpdateName | false | gi.cm.core.history.citizen.name.from {{action.values.previousValue}} gi.cm.core.history.citizen.name.to {{action.values.newValue}} | Contact name changed from {{action.values.previousValue}} to {{action.values.newValue}} |
| caseContactUpdatePhoneNumber | false | gi.cm.core.history.citizen.phone.from {{action.values.previousValue}} gi.cm.core.history.citizen.phone.to {{action.values.newValue}} | Contact phone changed from {{action.values.previousValue}} to {{action.values.newValue}} |
| caseConvert | true | gi.cm.core.history.convert.from {{action.values.previousCaseName}} gi.cm.core.history.convert.to {{action.values.newCaseName}} | Case converted from {{action.values.previousCaseName}} to {{action.values.newCaseName}} |
| caseCreate | false | gi.cm.core.history.case.initiated: {{action.values.caseTypeDescription}}{{#if action.values.caseSubTypeDescription}} - {{action.values.caseSubTypeDescription}}{{/if}} | Case initiated: {{action.values.caseTypeName}}{{#if action.values.caseSubTypeName}} - {{action.values.caseSubTypeName}}{{/if}} |
| caseEscalated | true | Case escalated {{action.values.escalationReason}}; Note: {{action.values.escalationNotes}} | Case escalated {{action.values.escalationReason}}; Note: {{action.values.escalationNotes}} |
| caseExport | true | Case was exported by {{#if action.values.userFullName}}{{action.values.userFullName}}{{else}}{[action.values.username}}{{/if}} | Case was exported by {{#if action.values.userFullName}}{{action.values.userFullName}}{{else}}{[action.values.username}}{{/if}} |
| caseFailedToStart | "" | "" | |
| caseLinkCreate | true | {{capitalizeFirst action.values.linkType}} link added between {{case.businessKey}} and {{action.values.linkedCaseId}}{{#if action.values.linkNote}}; gi.cm.core.history.common.note: {{action.values.linkNote}}{{/if}} | {{capitalizeFirst action.values.linkType}} link added between {{case.businessKey}} and {{action.values.linkedCaseId}}{{#if action.values.linkNote}}; gi.cm.core.history.common.note: {{action.values.linkNote}}{{/if}} |
| caseLinkDelete | true | {{capitalizeFirst action.values.linkType}} link removed between {{case.businessKey}} and {{action.values.linkedCaseId}}{{#if action.values.linkNote}}; gi.cm.core.history.common.note: {{action.values.linkNote}}{{/if}} | {{capitalizeFirst action.values.linkType}} link removed between {{case.businessKey}} and {{action.values.linkedCaseId}}{{#if action.values.linkNote}}; gi.cm.core.history.common.note: {{action.values.linkNote}}{{/if}} |
| caseLinkUpdate | true | {{capitalizeFirst action.values.linkType}} link updated between {{case.businessKey}} and {{action.values.linkedCaseId}}{{#if action.values.linkNote}}; gi.cm.core.history.common.note: {{action.values.linkNote}}{{/if}} | {{capitalizeFirst action.values.linkType}} link updated between {{case.businessKey}} and {{action.values.linkedCaseId}}{{#if action.values.linkNote}}; gi.cm.core.history.common.note: {{action.values.linkNote}}{{/if}} |
| caseOpened | "" | "" | |
| caseQuestionAnswer | false | gi.cm.core.history.contact.citizen.response: {{action.values.answerText}}{{#if action.values.attachmentList}}; {{#is action.values.attachmentCount 1}}gi.cm.core.history.contact.citizen.attachment{{else}}gi.cm.core.history.contact.citizen.attachments{{/is}}: {{action.values.attachmentList}}{{/if}}; gi.cm.core.history.contact.citizen.number: {{action.values.questionNumber}} | Response received: {{action.values.answerText}}{{#if action.values.attachmentList}}; {{#is action.values.attachmentCount 1}}Attachment{{else}}Attachments{{/is}}: {{action.values.attachmentList}}{{/if}}; Question number: {{action.values.questionNumber}} |
| caseQuestionCreate | false | gi.cm.core.history.contact.citizen.question: {{action.values.questionText}}; gi.cm.core.history.contact.citizen.number: {{action.values.questionNumber}} | More information requested from the citizen: {{action.values.questionText}}; Question number: {{action.values.questionNumber}} |
| caseReassign | true | Case assigned to {{#if action.values.assignUserFull}}{{action.values.assignUserFull}}{{else}}{{#if action.values.assignUser}}{{action.values.assignUser}}{{else}}{{#if action.values.assignGroupFull}}{{action.values.assignGroupFull}}{{else}}{{action.values.assignGroup}}{{/if}}{{/if}}{{/if}} for processing: {{action.values.assignReason}}; {{action.values.assignNotes}} | Case assigned to {{#if action.values.assignUserFull}}{{action.values.assignUserFull}}{{else}}{{#if action.values.assignUser}}{{action.values.assignUser}}{{else}}{{#if action.values.assignGroupFull}}{{action.values.assignGroupFull}}{{else}}{{action.values.assignGroup}}{{/if}}{{/if}}{{/if}} for processing: {{action.values.assignReason}}; {{action.values.assignNotes}} |
| caseReminderDateSet | "" | "" | |
| caseReminderDateUpdateClear | "" | "" | |
| caseReminderDateUpdateNoChange | "" | "" | |
| caseReminderDateUpdatePaused | "" | "" | |
| caseReminderDateUpdateSet | "" | "" | |
| caseSubscriberCreate | true | {{action.values.emailAddress}} subscribed to the case "{{action.values.subscription}}" subscription. | {{action.values.emailAddress}} subscribed to the case "{{action.values.subscription}}" subscription. |
| caseSubscriberRemove | true | {{action.values.emailAddress}} unsubscribed from the case "{{action.values.subscription}}" subscription. | {{action.values.emailAddress}} unsubscribed from the case "{{action.values.subscription}}" subscription. |
| caseTargetDateBreach | true | Case SLA breached | Case SLA breached |
| caseTargetDateChange | true | gi.cm.core.history.notes.dateupdate{{#if action.values.updateNote}}; gi.cm.core.history.common.note: {{action.values.updateNote}}{{/if}} | Updating target{{#if action.values.updateNote}}; Note: {{action.values.updateNote}}{{/if}} |
| caseTargetDateClear | "" | "" | |
| caseTargetDateExtend | "" | "" | |
| caseTargetDatePause | true | gi.cm.core.history.notes.pause{{#if action.values.pauseNote}}; gi.cm.core.history.common.note: {{action.values.pauseNote}}{{/if}} | Pausing case{{#if action.values.pauseNote}}; Note: {{action.values.pauseNote}}{{/if}} |
| caseTargetDatePauseAgain | true | gi.cm.core.history.notes.alreadypaused ({{action.values.pauseCounter}}){{#if action.values.pauseNote}}; gi.cm.core.history.common.note: {{action.values.pauseNote}}{{/if}} | Case SLA already paused ({{action.values.pauseCounter}}){{#if action.values.pauseNote}}; Note: {{action.values.pauseNote}}{{/if}} |
| caseTargetDateReminderBreach | "" | "" | |
| caseTargetDateReminderSet | "" | "" | |
| caseTargetDateResume | true | gi.cm.core.history.notes.resume{{#if action.values.resumeNote}}; gi.cm.core.history.common.note: {{action.values.resumeNote}}{{/if}} | Resuming case{{#if action.values.resumeNote}}; Note: {{action.values.resumeNote}}{{/if}} |
| caseTargetDateResumeAgain | true | gi.cm.core.history.notes.stillpaused ({{action.values.pauseCounter}}){{#if action.values.resumeNote}}; gi.cm.core.history.common.note: {{action.values.resumeNote}}{{/if}} | Still paused ({{action.values.pauseCounter}}){{#if action.values.resumeNote}}; Note: {{action.values.resumeNote}}{{/if}} |
| caseTargetDateSet | true | Target completion date set to {{formatDate action.values.caseTargetDate action.system.format.dateTime}} | Target completion date set to {{formatDate action.values.caseTargetDate action.system.format.dateTime}} |
| caseTargetDateUpdateClear | true | No case target completion date | No case target completion date |
| caseTargetDateUpdateNoChange | true | Target timer not updated | Target timer not updated |
| caseTargetDateUpdatePaused | true | Case SLA paused | Case SLA paused |
| caseTargetDateUpdateSet | true | Case target completion date set to {{formatDate action.values.caseTargetDate action.values.dateTimeFormat}} | Case target completion date set to {{formatDate action.values.caseTargetDate action.values.dateTimeFormat}} |
| caseTaskAttachmentCreate | true | Attachment {{action.values.fileName}} uploaded | Attachment {{action.values.fileName}} uploaded |
| caseTaskAttachmentRemove | true | Attachment {{action.values.fileName}} deleted | Attachment {{action.values.fileName}} deleted |
| caseTaskAutoStart | true | Auto task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}} | Auto task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}} |
| caseTaskCancelled | true | {{action.values.taskNote}} | {{action.values.taskNote}} |
| caseTaskComplete | true | {{action.values.taskNote}} | {{action.values.taskNote}} |
| caseTaskCreate | true | New task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}} | New task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}} |
| caseTaskNoteCreate | false | {{action.values.taskNoteDescription}} | {{action.values.taskNoteSystem}} |
| caseTaskStarted | true | Task started | Task started |
| caseTaskTargetDateBreach | true | Task SLA breached | Task SLA breached |
| caseTaskTargetDateClear | "" | "" | |
| caseTaskTargetDateSet | "" | "" | |
| caseUnclaimed | true | {{#if action.values.userFullName}}{{action.values.userFullName}}{{else}}{[action.values.userName}}{{/if}} has unclaimed the case. | {{#if action.values.userFullName}}{{action.values.userFullName}}{{else}}{[action.values.userName}}{{/if}} has unclaimed the case. |
| caseUpdatePositionResult | {{action.values.triggerDescription}} gi.cm.core.history.routine.result {{#if action.values.actionsList}} gi.cm.core.history.routine.update: {{action.values.actionsList}}{{else}}gi.cm.core.history.routine.noactions{{/if}} | {{action.values.triggerDescription}} has resulted in {{#if action.values.actionsList}} the system updating the following: {{action.values.actionsList}}{{else}}no actions{{/if}} | |
| caseUpdatePositionTrigger | true | {{action.values.triggerDescription}} gi.cm.core.history.routine.trigger | {{action.values.triggerDescription}} has triggered automated case updates |
Feature Flags
This section can disable certain features. It currently only applies to the new create task interface released in Case Management 1.54.1 (13/03/2026).
To revert the dialog interface when creating tasks and return to the previous behaviour where full forms are loaded, include the following in the response:
response.featureFlags = {
"AJAXCaseTaskCreate": false
}
The configuration return schema will also need to be updated to include:

If the flag is true, or not present, the new dialog behaviour will be used.
