Synchronizing users and groups between an Identity Provider (IdP) such as Azure Entra ID and the Maximo Application Suite (MAS) is a critical step in enabling centralized identity and access management. MAS supports SCIM 2.0 for provisioning, but several nuances — and a few pitfalls — can impact the sync process if not understood clearly.

This blog walks through:

  • SCIM configuration steps in MAS
  • Generating tokens for authentication
  • Building MAS SCIM profiles
  • Configuring Azure Entra SCIM provisioning
  • Known challenges and how to resolve them

Creating an API Key in Maximo Application Suite

SCIM provisioning from Azure Entra ID to MAS requires a JWT token, which is derived from a MAS API Key.

Steps

  1. Navigate to Suite Administration → API Keys and click Create API Key.
  1. Provide a description and define an authentication token expiry.
  1. Under Suite administrative access, select User management.
  1. Click Submit.
  1. Copy both:
    • API Key ID
    • Authentication Token


Note: MAS does not allow recovery of authentication token details.

If lost, you must generate a new API key.

Generate a JSON Web Token (JWT)  

Once the API key and token are created, you must issue a GET request to generate a JWT. You can use postman to generate the token with details below.

API Endpoint

GET https://api.%3cmasdomain%3e/v1/authenticate]https://api.<masdomain>/v1/authenticate

Requirements

  • Basic Auth:
    • Password = Authentication Token
    • Username = API Key ID
  • Header:
    • mas-jwt-expiry-duration: P90D (example for 90 days)

Response

The response returns a JWT token that will be used by Azure Entra SCIM provisioning.

Creating a MAS SCIM Profile

A SCIM profile controls how identities and entitlements sync from the IdP. To create  a profile, hit the following URL POST request with body as the below.

https://api.%3cmasdomain%3e/scim/v2/Profiles]https://api.<masdomain>/scim/v2/Profiles

  • id: Identifies the profile and must be unique. It is recommended to use names such as MasTestProfile, MASDevProfile, etc.
  • version: Specifies the version number of the profile. If any change is required during the development phase, you may need to delete the existing profile, increment the version number, and recreate the profile using the APIs.
  • Identities – id: Identifies the SAML configuration in MAS. The default value is "default-saml".
  • Identities – type: Should be set to "saml".
  • Identities – samlid: This must be a unique identifier that matches your organization’s SAML ID. In the example provided, we used externalid. The External ID is mapped to User Principal Name for user attribute mapping and Object ID for group attribute mapping.
  • Entitlement - application: You may choose any MAS user entitlement as the default. In the sample below, we have used BASE.
  • Workspaces – Application: Defines the names of applications that will use the SAML configuration.

 

Reference: User synchronization with SCIM 2.0 - IBM Documentation

Example SCIM Profile - body

{ 
"id": "MasProfile1", 
"version": 1, 
"identities": [ 
{ "id": "default-saml", 
"type": "saml", 
"samlId": "externalId" 
} 
], 
"entitlement": { 
"application": "BASE" 
}, 
"runtimeConfigs": { 
"useGroupDisplayNameAsGroupId": true 
}, 
"workspaces": [ 
{ "id": "test", 
"applications": ["manage"] 
} 
] 
} 

Another Example SCIM Profile - body

{ 
"id": "MasProfile2", 
"version": 2, 
"identities": [ 
{ 
"id": "default-saml", 
"type": "saml", 
"samlId": "externalId" 
} 
], 
"entitlement": { 
"application": "BASE" 
}, 
"workspaces": 
[ 
{ 
"id": "uat", 
"applications": ["manage"] 
} 
], 
"runtimeConfigs": { 
"useGroupDisplayNameAsGroupId": true 
} 
} 

Configuring Azure Entra SCIM Provisioning

Steps

  1. In Azure Entra ID → Enterprise Applications, create an application for MAS.
  1. Enable SCIM provisioning.
  1. Stellen Sie das SCIM-Basis-URL:
    [https://api.%7bdomain%7d/scim/v2/%7bprofileId%7d]https://api. {Domäne} /scim/v2/ {profileID}
  1. Für die Authentifizierung fügen Sie das JWT-Token früher generiert.
  1. Testen Sie die Verbindung → Azure sollte SCIM-Anfragen erfolgreich ausstellen.
  1. Zuweisen Benutzer und Gruppen → Die Bereitstellung beginnt.

Die Herausforderungen der Gruppensynchronisierung verstehen

Maximo-Sicherheitsgruppen und ihre Mitgliedschaft können im Azure Entra-Projekt verwaltet werden, während Anwendungsautorisierungen in Maximo Manage verwaltet werden. Wenn Gruppen über SCIM synchronisiert werden, wird die Gruppen-ID (z. B. AP_Maximo_Supervisors_TYHNTB) als Gruppenname in Maximo zugeordnet, wodurch eine neue Gruppe erstellt wird, anstatt eine Verknüpfung mit der vorhandenen AP_MAXIMO_SUPERVISORS-Gruppe herzustellen. Da AP_Maximo_Supervisors_TYHNTB die SCIM-Gruppen-ID ist, können wir sie nicht entfernen oder neu zuordnen.

Wenn Gruppen von Azure AD → MAS Core synchronisiert werden:

  • MAS hängt eine an Suffix zum Gruppennamen.
  • Beispiel:
    Azure-Gruppe: AP_MAXIMO_SUPERVISORS
    Aus der MAS-Gruppe wird: AP_Maximo_Supervisors_TYHNTB

Dies verursacht eine neue Gruppe muss in Maximo erstellt werden, anstatt der vorhandenen Maximo-Sicherheitsgruppe zugeordnet zu werden.

Auswirkung

  • Gruppenzuordnungen werden unterbrochen
  • Die Mitgliedschaft stimmt nicht überein
  • Bestehende Manage-Anwendungsautorisierungen werden nicht wiederverwendet

Lösung

Fügen Sie beim Erstellen des SCIM-Profils das folgende Tag hinzu.

„useGroupDisplayNameAsGroupId“: wahr

Dadurch wird sichergestellt, dass MAS die Anzeigename als Gruppen-ID und vermeidet unerwünschte Suffixe.

Hinweis: Wenn Sie ein vorhandenes Profil in MAS ändern, erhöhen Sie die „Versionsnummer“. MAS wird nur aktualisiert, wenn sich die Version ändert.

Herausforderung: Azure Entra sendet nicht konforme SCIM-PATCH-Anfragen

Wenn Sie einen Benutzer aus der Azure Entra-Gruppe entfernen, sendet Entra die folgende Patch-Anfrage an MAS, wodurch MAS gezwungen wird, alle Benutzer aus der Gruppe zu löschen, anstatt einen bestimmten Benutzer.

Die in den MAS Core-Protokollen protokollierte Patch-Anfrage:

PATCH: /scim/v2/masstgprofileext/groups/maximo-SecGroup

{   
	'schemas': [...],   
    'Operations': [     
    	{       
        	'op': 'Remove',       
            'path': 'members',       
            'value': [{'value': 'userid'}]     
        }   
    ] 
} 


Das ist NICHT SCIM-konform.

Die richtige SCIM-Nutzlast sollte sein

{ 
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], 
"Operations": [ 
{ 
"op": "remove", 
"path": "members[value eq \"userid\"]" 
} 
] 
} 

Auflösung

Azure Entra bietet eine SCIM-Kompatibilitätsmodus.

Aktivieren Sie es, indem Sie diesen Parameter an die SCIM-URL anhängen:

? A adoptiert CIM 06 2020

Beispiel für eine endgültige SCIM-URL

https://api.%7bmas-instance-id%7d.%7bdomain%7d/scim/v2/%7bprofileId%7d?aadOptscim062020]https://api. {mas-Instanz-ID}. {Domäne} /scim/v2/ {profileID}? Adoptieren Sie SCIM 06 2020


Dies behebt:

  • Falsche PATCH-Operationen
  • Fehler beim Update der Gruppenmitgliedschaft
  • Verschiedene andere Azure SCIM-Interoperabilitätsprobleme


Referenz:

https://learn.microsoft.com/en-us/entra/identity/app-provisioning/application-provisioning-config-problem-scim-compatibility

Entdecken Sie den ultimativen Leitfaden zur IBM Maximo Application Suite (MAS)

Erfahren Sie alles, was Sie wissen müssen, um Ihre Vermögensverwaltungsstrategie zu modernisieren.

Darin erfährst du:

  • Was ist neu in IBM Maximo Application Suite 9.0
  • Hauptunterschiede zwischen Maximo 7.6 und MAS
  • Wie AppPoints und OpenShift das Spiel verändern
  • Branchenanwendungsfälle in den Bereichen Energie, Fertigung und Transport
  • Schrittweise Anleitung für das Upgrade und die Bereitschaft zur Migration
Cover of 'The Ultimate Guide to MAS Maximo Application Suite' by Naviam featuring a man in a yellow construction helmet and safety vest holding a tablet.
×

ActiveG, BPD Zenith, EAM Swiss, InterPro Solutions, Lexco, Peacock Engineering, Projetech, Sharptree, and ZNAPZ have united under one brand: Naviam.

You’ll be redirected to the most relevant page at Naviam.io in a few seconds — or you can go now.

Read Press Release