Toggle menu

Environment Configuration

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.

Case Management Config End Point

End points called CaseManagement.getConfig should exist for each of your environments, for example in your development environment, the configuration can be found at config.dev.CaseManagement.getConfig. They hold the following settings.

{
    "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
        }
    }
};

PropertyTypeDescription
linkConfObject, requiredHolds 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.rootCitizenStringThe address of the public website
linkConf.pathCitizenStringThe article ID or friendly URL of a User Requests article that displays case management processes
linkConf.rootAnonStringThe address of the public website
linkConf.pathAnonStringThe 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.rootStaffStringThe address of the website staff use to manage cases
linkConf.pathStaffStringThe 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.rootEnquiryStringThe address of the website staff use to manage cases
linkConf.pathEnquiryStringThe 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.citizenArray of objects, optionalEach 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].idStringA unique ID for the settings (can be any string)
customLinkConf.citizen[n].displayNameStringText visible in the config manager drop-down
customLinkConf.citizen[n].rootStringThe root URL of the subsite
customLinkConf.citizen[n].pathAnonStringThe 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].pathCitizenStringThe article ID or friendly URL of a User Requests article that displays case management processes
customLinkConf.staffArray of objectsEach 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].idStringA unique ID for the settings (can be any string)
customLinkConf.staff[n].displayNameStringText visible in the config manager drop-down
customLinkConf.staff[n].rootStringThe root URL of the subsite
customLinkConf.staff[n].pathStaffStringThe article ID or friendly URL of a Self Service article that displays case management processes
customLinkConf.staff[n].pathEnquiryStringThe article ID or friendly URL of an article using the Forms Service
emailConfObject, required 
emailConf.sendFromStringThe default "from" address emails will appear to come from
emailConf.monitorToStringAn optional BCC address that will be copied in to all emails
emailConf.additionalAllowedElementsArray <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.additionalAllowedAttributesArray <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.templatesStringSuffix for email management
formConfObject, requiredDefaults relating to upload fields on forms
formConf.maxFileCountCitizenIntegerThe 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.maxFileCountStaffIntegerThe total number of files that can be attached to a case by staff users
formConf.maxFileSizeCitizenIntegerThe maximum files size a user can upload on the "citizen response" form
formConf.maxFileSizeStaffIntegerThe maximum file size staff users can upload
formConf.maxFileTextCitizenStringDisplayed to the user, eg "3MB"
formConf.maxFileTextStaffStringDisplayed to staff users, eg "5MB"
formConf.relatedCaseLinksArrayOptions 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.showContactCitizenBooleanSet false to disable the Contact button in the case manager interface
taskConf.availableTasksArrayA 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: ["closecase", "collectinfo", "feedback", "genericresponse", "investigate", "multipurpose", "requestpayment"]

System Action Notes

The optional actions object lets you override the default notes added to case history when certain actions are carried out. Any properties you don't supply will use the defaults held in goss.CaseManagement.v1.system.getSystemConfig - these should not be edited.

To override a default, add a new object inside the actions object, with the format:

"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 NamePrivate?Display TextSystem Text
caseAppointmentCancelfalsegi.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}}
caseAppointmentCreatefalsegi.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}}
caseAppointmentUpdatefalsegi.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}}
caseAssigntrueAssigned to group: {{action.values.groupId}}Assigned to group: {{action.values.groupId}}
caseAttachmentCreatetrue{{#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}}
caseAttachmentRemovetrue{{#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}}
caseCannotClosetrueCould not close case""
caseChangeStagetruegi.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}}
caseChangeStatusfalsegi.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}}
caseChangeSubTypetruegi.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}}
caseClaimedtrue{{#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.
caseClosedfalsegi.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}}
caseContactUpdateAddressfalsegi.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}}
caseContactUpdateEmailfalsegi.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}}
caseContactUpdateNamefalsegi.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}}
caseContactUpdatePhoneNumberfalsegi.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}}
caseConverttruegi.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}}
caseCreatefalsegi.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}}
caseEscalatedtrueCase escalated {{action.values.escalationReason}}; Note: {{action.values.escalationNotes}}Case escalated {{action.values.escalationReason}}; Note: {{action.values.escalationNotes}}
caseExporttrueCase 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 """"
caseLinkCreatetrue{{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}}
caseLinkDeletetrue{{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}}
caseLinkUpdatetrue{{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 """"
caseQuestionAnswerfalsegi.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}}
caseQuestionCreatefalsegi.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}}
caseReassigntrueCase 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 """"
caseSubscriberCreatetrue{{action.values.emailAddress}} subscribed to the case "{{action.values.subscription}}" subscription.{{action.values.emailAddress}} subscribed to the case "{{action.values.subscription}}" subscription.
caseSubscriberRemovetrue{{action.values.emailAddress}} unsubscribed from the case "{{action.values.subscription}}" subscription.{{action.values.emailAddress}} unsubscribed from the case "{{action.values.subscription}}" subscription.
caseTargetDateBreachtrueCase SLA breachedCase SLA breached
caseTargetDateChangetruegi.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 """"
caseTargetDatePausetruegi.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}}
caseTargetDatePauseAgaintruegi.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 """"
caseTargetDateResumetruegi.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}}
caseTargetDateResumeAgaintruegi.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}}
caseTargetDateSettrueTarget 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}}
caseTargetDateUpdateCleartrueNo case target completion dateNo case target completion date
caseTargetDateUpdateNoChangetrueTarget timer not updatedTarget timer not updated
caseTargetDateUpdatePausedtrueCase SLA pausedCase SLA paused
caseTargetDateUpdateSettrueCase 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}}
caseTaskAttachmentCreatetrueAttachment {{action.values.fileName}} uploadedAttachment {{action.values.fileName}} uploaded
caseTaskAttachmentRemovetrueAttachment {{action.values.fileName}} deletedAttachment {{action.values.fileName}} deleted
caseTaskAutoStarttrueAuto task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}}Auto task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}}
caseTaskCancelledtrue{{action.values.taskNote}}{{action.values.taskNote}}
caseTaskCompletetrue{{action.values.taskNote}}{{action.values.taskNote}}
caseTaskCreatetrueNew task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}}New task created for {{action.values.taskAssigneeRole}}; Summary: {{action.values.taskSummary}}
caseTaskNoteCreatefalse{{action.values.taskNoteDescription}}{{action.values.taskNoteSystem}}
caseTaskStartedtrueTask startedTask started
caseTaskTargetDateBreachtrueTask SLA breachedTask SLA breached
caseTaskTargetDateClear """"
caseTaskTargetDateSet """"
caseUnclaimedtrue{{#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}}
caseUpdatePositionTriggertrue{{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:

Feature Flag Return Schema

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

Last modified on 13 March 2026