Configure User Experience Controls
User Experience (UX) controls define how iMaintenance appears and responds to users across both web and mobile applications.
These settings apply at a product-wide level and influence everyday interactions — from how long a session remains active, to whether chat and attachments are available, to how lists and key fields are displayed.
By configuring these options, administrators can:
- Standardize how users access and share information.
- Control the visibility of supporting features such as chat and attachments.
- Enforce consistent formats and templates for lists, forms, and key mappings.
These configurations ensure a smooth, predictable user experience while aligning iMaintenance with your organization’s compliance and collaboration needs.
Configure Session Timeout
Session timeout settings define how long a session remains active during inactivity.
- Session timeout can be configured at Tenant Level or Plant level.
- Default Session Timeout is at tenant level and set for 30 mins.
- All sessions login and logouts are captured in DB for audit purposes.
- The highlighted DB values should be used to manage Session
timeout.
- Session Timeout can be Enabled or Disabled by setting True or False.
- Duration can be set in Million Seconds. Ex 30 mins/ 1800000 Ms
{ "_id": { "$oid": "6788b5dec3ca9a2f538dbc1c" }, "type": "sessionTimeout", "plant": { "$oid": "681a06b3aab43f5e132ff5c3" }, "config": { "enabled": true, "duration": 1800000 } }
Configure Chat Controls
The Chat Configuration controls chat functionality at both Tenant and Plant levels. It allows administrators to enable chat for specific modules and define push notification behavior.
- Enable or disable chat features across tenants or specific plants.
- Module-specific control: Currently supports the Issue and Work Order modules.
- Push notification customization: Choose between receiving all messages or only @mentions.
| Setting | Default Value | Description |
| chat | TRUE | Enables chat feature globally. |
| issueModule | TRUE | Chat enabled for Issue Module by default. |
| workOrderModule | TRUE | Chat enabled for Work Order Module by default. |
| pushNotifications.all | FALSE | Sends notifications for all messages. |
| pushNotifications.mention | TRUE | Sends notifications only when a user is mentioned. |
{
"_id": {
"$oid": "67fcd5efffb1552aa9ae6272"
},
"type": "chatConfig",
"__v": 0,
"config": {
"chat": true,
"workOrderModule": true,
"issueModule": true,
"pushNotifications": {
"all": true,
"mention": false
},
},
"plant": {
"$oid": "681a06b3aab43f5e132ff5c3"
}
}
- Configurations are persisted in the database and applied per tenant or plant as needed.
- Admins can selectively disable chat for specific modules by setting the respective module flag (issueModule, workOrderModule) to false.
- Push notification behavior:
- Set "all": true to notify users on every message.
- Set "mention": true to notify only on direct mentions (useful for reducing noise).
- A plant entry is required when applying plant-level configurations.
Configure Attachments
- Define which modules support attachments (e.g., Issue, Work Order, Asset, Measuring Point).
- Specify one or more repository types for each module:
- GOS (Generic Object Services)
- DMS (Document Management System)
- SharePoint (not shown in the current example but assumed as extensible).
- Configure actions (e.g., create, delete) and document type rules for repositories like DMS.
- Store configuration in the database for runtime enforcement.
| Module | Repositories | Default App ID |
| Issue | GOS | NOATT |
| WorkOrder | GOS | WOATT |
| Asset | GOS, DMS | EQATT |
| FunctionalLocation | GOS, DMS | FLATT |
| MeasuringPoint | GOS, DMS | MPATT |
| MeansDoc | GOS, DMS | MDATT |
{
"_id": {
"$oid": "6829c064cf146098dc602988"
},
"type": "attachments",
"__v": 0,
"config": {
"Issue": {
"repositories": ["GOS"],
"appId": "NOATT"
},
"WorkOrder": {
"repositories": ["GOS"],
"appId": "WOATT"
},
"Asset": {
"repositories": ["GOS", "DMS"],
"appId": "EQATT"
},
"FunctionalLocation": {
"repositories": ["GOS", "DMS"],
"appId": "FLATT"
},
"MeasuringPoint": {
"repositories": ["GOS", "DMS"],
"appId": "MPATT"
},
"MeansDoc": {
"repositories": ["GOS", "DMS"],
"appId": "MDATT"
},
"GOS": {
"url": "/IWORKORDER_SRV/ProductAttachmentCollection",
"actions": ["create", "delete"]
},
"DMS": {
"url": "/IWORKORDER_SRV/ProductAttachmentCollection",
"actions": ["create"],
"documentTypesConfig": {
"Issue": [
{
"documentType": "DES",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
},
{
"documentType": "DRW",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
}
],
"WorkOrder": [
{
"documentType": "DES",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
},
{
"documentType": "DRW",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
}
],
"Asset": [
{
"documentType": "DES",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
},
{
"documentType": "DRW",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
}
],
"FunctionalLocation": [
{
"documentType": "DES",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
},
{
"documentType": "DRW",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
}
],
"MeasuringPoint": [
{
"documentType": "DES",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
},
{
"documentType": "DRW",
"documentVersion": "00",
"documentPart": "000",
"storageCategory": "DMS_C1_ST"
}
],
"MeansDoc": []
}
}
},
"createdAt": {
"$date": "2025-05-18T11:11:32.183Z"
},
"updatedAt": {
"$date": "2025-06-16T14:40:23.851Z"
}
}
- Repositories such as GOS and DMS must be configured with their respective url endpoints and supported actions (e.g., create, delete).
- DMS repositories support advanced configuration with
documentTypesConfig to define rules like:
- Document Type (e.g., DES, DRW)
- Version/Part/Storage category.
- Admins should ensure that each module has a valid appId for integration consistency.
- SharePoint configuration is assumed to be supported but not defined in this example. It can follow a similar structure.
Configure List View
List View Configurations define how records are displayed in the list views for different modules (e.g., Work Orders, Issues, Equipment, Functional Locations). Each configuration controls which Fields are visible, their labels, backend data mappings, and optional formatting types (e.g., Date).
| Field | Description |
| displayName | The label shown to the user in the column header (e.g., "Location"). |
| keyName | The backend key to fetch data (e.g., location.name, asset.name). |
| type | Optional – used for formatting data (e.g., "date" for date fields). |
| order | Implicit – the JSON field order defines the column order in the UI. |
{
"_id": { "$oid": "6846aed763dacd6d3628dc94" },
"type": "workOrderListTemplate",
"config": {
"fields": [
{ "displayName": "Location", "keyName": "location.name" },
{ "displayName": "Equipment", "keyName": "asset.name" },
{ "displayName": "Description", "keyName": "description" },
{ "displayName": "Planning Plant", "keyName": "planningPlant.erpPlantId" },
{ "displayName": "Maintenance Plant", "keyName": "maintenancePlant.erpPlantId" },
{ "displayName": "Required Start Date", "keyName": "plannedStartTime", "type": "date" },
{ "displayName": "Required End Date", "keyName": "plannedEndTime" },
{ "displayName": "Created By", "keyName": "createdBy.firstName" },
{ "displayName": "Testing", "keyName": "testing" },
{ "displayName": "Revision", "keyName": "others.revision" },
{ "displayName": "Code Group", "keyName": "others.codeGroupId" },
{ "displayName": "Work Center", "keyName": "workCenter.erpWorkCenterId" },
{ "displayName": "Breakdown", "keyName": "breakdown" }
]
}
}
Issue List View{
"_id": { "$oid": "6846af3763dacd6d3628dc95" },
"type": "issueListTemplate",
"config": {
"fields": [
{ "displayName": "Location", "keyName": "location.name" },
{ "displayName": "Equipment", "keyName": "asset.name" },
{ "displayName": "Description", "keyName": "description" },
{ "displayName": "Planning Plant", "keyName": "planningPlant.erpPlantId" },
{ "displayName": "Required Start Date", "keyName": "plannedStartTime", "type": "date" },
{ "displayName": "Required End Date", "keyName": "plannedEndTime" },
{ "displayName": "Created By", "keyName": "createdBy.firstName" },
{ "displayName": "Testing", "keyName": "testing" },
{ "displayName": "Revision", "keyName": "others.revision" },
{ "displayName": "Code Group", "keyName": "others.codeGroupId" },
{ "displayName": "Work Center", "keyName": "workCenter.erpWorkCenterId" }
]
}
}
Equipment List View{
"_id": { "$oid": "6846af6d63dacd6d3628dc96" },
"type": "equipmentListTemplate",
"config": {
"fields": [
{ "displayName": "Description", "keyName": "description" },
{ "displayName": "Location", "keyName": "location.erpAssetId" },
{ "displayName": "Type", "keyName": "type" },
{ "displayName": "Manufacturer Name", "keyName": "manufacturer.object.name" },
{ "displayName": "Manufactured In", "keyName": "manufacturer.object.country" },
{ "displayName": "Planning Plant", "keyName": "planningPlant.erpPlantId" },
{ "displayName": "Maintenance Plant", "keyName": "maintenancePlant.erpPlantId" }
]
}
}
Functional Location List
View:{
"_id": { "$oid": "6846af8a63dacd6d3628dc97" },
"type": "functionalLocationListTemplate",
"config": {
"fields": [
{ "displayName": "Type", "keyName": "type" },
{ "displayName": "Manufacturer Name", "keyName": "manufacturer.object.name" },
{ "displayName": "Manufactured In", "keyName": "manufacturer.object.country" },
{ "displayName": "Planning Plant", "keyName": "planningPlant.erpPlantId" },
{ "displayName": "Maintenance Plant", "keyName": "maintenancePlant.erpPlantId" }
]
}
}
- All keyName values should map to valid fields defined in the corresponding module’s Field Configuration.
- The order of fields in the array defines the column order in the UI.
- Fields with type: "date" will be formatted as per locale/timezone rules.
- These configurations can be modified to customize user-specific or role-based layouts (if supported).
Configure Innovapptive Key Mapping
{
"_id": {
"$oid": "6790eab0f1f16f84aa3de757"
},
"type": "innovapptiveKeyMapping",
"config": {
"breakdown_ISSUE": "M2",
"breakdown_WO": "PM03",
"corrective_ISSUE": "M1",
"corrective_WO": "PM02",
"emergency_WO": "EMER",
"preventive_WO": "PM01",
"service_ISSUE": "S1",
"objectCategory_EQ": "IEQ",
"objectCategory_FL": "IFL",
"issueSystemStatus": {
"DLFL,NOCO": "Rejected",
"OSNO": "Open",
"NOPR,ORAS": "In-Progress",
"NOPR": "Released",
"NOCO": "Completed"
},
"woOperationSystemStatus": {
"CRTD": "Not Started",
"CLSD": "Completed",
"REL": "Released",
"PCNF": "Partial Confirm",
"MCNF": "Partial Confirm",
"CNF": "Completed"
},
"issueProcessControl": {
"1": "Allowed",
"2": "Warning",
"3": "Prohibited"
},
"workOrderSystemStatus": {
"CRTD": "Created",
"REL": "Released",
"TECO": "Closed",
"CLSD": "Closed"
}
},
"plant": {
"$oid": "681a06b3aab43f5e132ff5c3"
}
}
