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
      }
    }
    
User is shown with a warning message when session is timed out and redirected to login screen.

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.
Table 1. Default Settings
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.
Sample Json Configuration
{
  "_id": {
    "$oid": "67fcd5efffb1552aa9ae6272"
  },
  "type": "chatConfig",
  "__v": 0,
  "config": {
    "chat": true,
    "workOrderModule": true,
    "issueModule": true,
    "pushNotifications": {
      "all": true,
      "mention": false
    },
     },
  "plant": {
    "$oid": "681a06b3aab43f5e132ff5c3"
  }
}
Note:
  • 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

The Attachment Configuration manages how attachments are handled across various modules like Issue, Work Order, Functional Location, Equipment, etc., at both the Tenant and Plant levels. Admins can configure the available repositories, their behaviors, and permitted document types per module.
  • 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.
Table 2. Default Settings
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
Sample Configuration
{
  "_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"
  }
}
Note:
  • 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).

These configurations are managed at the database level and directly affect the user interface layouts for Mobile apps.
Table 3. Common Parameters
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.
Work Order List View
{
  "_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" }
    ]
  }
}
Note:
  • 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"
  }
}