# Application Provisioning & SCIM - Vollständige Referenz Application Provisioning & SCIM - Complete Reference

Technische Referenz für automatisierte Benutzerbereitstellung, SCIM 2.0, Gallery-Connectoren, ECMA-Agents, HR-getriebene Szenarien, Attributausdrücke, Monitoring und Graph-API-Automatisierung. Technical reference for automated user provisioning, SCIM 2.0, gallery connectors, ECMA agents, HR-driven scenarios, attribute expressions, monitoring, and Graph API automation.

## Schnellüberblick Quick reference

### Lebenszyklus automatisieren Automate lifecycle

Provisioning koppelt Joiner-, Mover- und Leaver-Ereignisse an Zielsysteme, damit Konten, Gruppen und Berechtigungsobjekte nicht manuell gepflegt werden müssen. Provisioning links joiner, mover, and leaver events to target systems so accounts, groups, and entitlement objects no longer require manual upkeep.

### SCIM als Standard SCIM as the standard

SCIM 2.0 ist das bevorzugte SaaS-Protokoll, weil es Benutzer- und Gruppenobjekte standardisiert, PATCH-Updates unterstützt und mit Entra-Templates zusammenarbeitet. SCIM 2.0 is the preferred SaaS protocol because it standardizes users and groups, supports PATCH updates, and aligns well with Entra templates.

### ECMA für On-Premises ECMA for on-premises

Für LDAP, SQL, flache Dateien, REST oder proprietäre Systeme nutzt Entra den lokalen Provisioning Agent und den ECMA Connector Host als Ausführungsumgebung. For LDAP, SQL, flat files, REST, or proprietary systems, Entra uses the local provisioning agent and the ECMA Connector Host as the execution environment.

### Graph-API-Steuerung Graph API control

Synchronisationsjobs, Mappings, Schemaobjekte und On-Demand-Provisioning lassen sich programmatisch ansteuern und in DevOps-Prozesse integrieren. Synchronization jobs, mappings, schema objects, and on-demand provisioning can be controlled programmatically and integrated into DevOps processes.

## Was ist automatisierte Bereitstellung What is automated provisioning

Automatisierte Bereitstellung sorgt dafür, dass Benutzeridentitäten in Zielanwendungen, Verzeichnissen oder Zielplattformen anhand eines definierten Quellsystems erstellt, aktualisiert, deaktiviert oder gelöscht werden. In Entra kann das Quellsystem entweder Microsoft Entra selbst, ein HR-System oder ein lokaler Connector sein. Automated provisioning ensures that user identities in target applications, directories, or platforms are created, updated, disabled, or deleted based on a defined source system. In Entra, that source can be Microsoft Entra itself, an HR system, or an on-premises connector.

Ansatz Approach | Merkmale Characteristics | Konsequenz Consequence
--- | --- | ---
Manuell Manual | Admins pflegen Konten einzeln, oft ohne konsistente Offboarding-Logik Admins maintain accounts one by one, often without consistent offboarding logic | Hoher Betriebsaufwand, Inkonsistenzen, veraltete Berechtigungen High operational overhead, inconsistencies, stale access
Automatisch Automatic | Quellattribute, Matching, Mapping und Zielaktionen laufen periodisch oder ereignisbasiert Source attributes, matching, mapping, and target actions run periodically or event-driven | Schnellere Bereitstellung, nachvollziehbare Logs und bessere Governance Faster provisioning, traceable logs, and stronger governance

### Nutzen automatischer Provisionierung Benefits of automatic provisioning

- Konsistente Joiner-Mover-Leaver-Prozesse über viele Anwendungen hinweg. Consistent joiner-mover-leaver processes across many applications.
- Weniger Helpdesk-Tickets, weil Konten nicht per Ticketkette erzeugt werden müssen. Fewer help desk tickets because accounts no longer depend on chained manual requests.
- Bessere Auditierbarkeit durch Provisioning Logs, Quarantine-Status und definierte Matching-Regeln. Better auditability through provisioning logs, quarantine states, and explicit matching rules.
- Geringerer Sicherheitsrückstand beim Offboarding, weil Konten automatisch deaktiviert oder entfernt werden. Less security lag during offboarding because accounts are disabled or removed automatically.

### Unterstützte Protokolle und Zieltypen Supported protocols and target types

Typ Type | Beispiel Example | Wann verwenden When to use
--- | --- | ---
SCIM 2.0 SCIM 2.0 | SaaS-Anwendungen SaaS applications | Bevorzugter Standard für Cloud-Zielsysteme Preferred standard for cloud target systems
LDAP LDAP | OpenLDAP, AD LDS, eDirectory OpenLDAP, AD LDS, eDirectory | Wenn Zielsysteme ein Verzeichnis sprechen, aber kein SCIM unterstützen When target systems speak directory protocols but not SCIM
SQL SQL | SQL Server, Oracle, MySQL, MariaDB SQL Server, Oracle, MySQL, MariaDB | Wenn Identitätsdaten in Tabellen, Views oder Stored Procedures landen When identity data lands in tables, views, or stored procedures
REST / SOAP REST / SOAP | Individuelle Web Services Custom web services | Für APIs, die keinen nativen SCIM-Stack besitzen For APIs without a native SCIM stack
Flat file / PowerShell Flat file / PowerShell | CSV-Exporte, Legacy-Batch-Systeme CSV exports, legacy batch systems | Wenn Daten nur über Dateien oder Skripte transportiert werden können When data can only be transported through files or scripts
Custom ECMA Custom ECMA | Eigenentwickelte Zielsysteme Custom target systems | Wenn Standard-Connectoren fachlich oder technisch nicht ausreichen When standard connectors are not sufficient

## SCIM 2.0 Standard SCIM 2.0 standard

### SCIM-Grundlagen SCIM fundamentals

SCIM steht für System for Cross-domain Identity Management. Das Protokoll standardisiert Ressourcen, Schemaerweiterungen und Änderungsoperationen für Benutzer und Gruppen. Genau diese Standardisierung macht es für SaaS-Provisioning so attraktiv: Entra kann mit einem bekannten Objektmodell arbeiten, statt pro Zielprodukt eine komplett eigene Semantik zu lernen. SCIM stands for System for Cross-domain Identity Management. The protocol standardizes resources, schema extensions, and mutation operations for users and groups. That standardization is exactly what makes it attractive for SaaS provisioning: Entra can work against a known object model instead of learning completely unique semantics for every target product.

Endpoint Endpoint | Zweck Purpose | Hinweis Note
--- | --- | ---
/Users /Users | CRUD für Benutzerobjekte CRUD for user objects | Muss Filter, Create, Read, Update und je nach Szenario Delete unterstützen Should support filtering, create, read, update, and depending on the scenario delete
/Groups /Groups | Gruppen und Gruppenmitgliedschaft Groups and group membership | Für Group Push und Gruppenabgleich relevant Relevant for group push and group synchronization
/Schemas /Schemas | Beschreibt verfügbare Schemata und Erweiterungen Describes available schemas and extensions | Hilft bei Discovery und Validierung Helps with discovery and validation
/ResourceTypes /ResourceTypes | Beschreibt Ressourcentypen Describes resource types | Nützlich für generische SCIM-Clients Useful for generic SCIM clients
/ServiceProviderConfig /ServiceProviderConfig | Deklariert Fähigkeiten des SCIM-Dienstes Declares the capabilities of the SCIM service | Wichtig für PATCH-, Filter- oder Bulk-Unterstützung Important for PATCH, filtering, or bulk support

Operation Operation | HTTP-Methode HTTP method | SCIM-Semantik SCIM semantics
--- | --- | ---
Create Create | POST POST | Legt neue Ressource an Creates a new resource
Read Read | GET GET | Liest einzelne oder gefilterte Ressourcen Reads individual or filtered resources
Update Update | PATCH PATCH | Ändert gezielt Attribute oder Teilstrukturen Changes individual attributes or substructures
Replace Replace | PUT PUT | Ersetzt das gesamte Objektmodell, wenn unterstützt Replaces the entire object model when supported
Delete / Deprovision Delete / deprovision | DELETE DELETE | Entfernt oder deaktiviert ein Objekt, je nach Zielprodukt Removes or disables an object depending on the target product

### SCIM-Schema und Enterprise Extension SCIM schema and enterprise extension

Attributbereich Attribute area | Beispiele Examples | Entra-Kontext Entra context
--- | --- | ---
Core User Schema Core user schema | userName, name, active, emails userName, name, active, emails | Grundlage fast jeder SaaS-Benutzerbereitstellung Foundation of almost every SaaS user provisioning flow
Enterprise Extension Enterprise extension | employeeNumber, department, manager, costCenter employeeNumber, department, manager, costCenter | Wichtig für HR-gesteuerte Zielattribute Important for HR-driven target attributes
Custom Extensions Custom extensions | App-spezifische Felder App-specific fields | Nur hinzufügen, wenn das Zielsystem sie sauber dokumentiert Add only when the target system documents them cleanly

### SCIM-Endpoint Schritt für Schritt bauen Build a SCIM endpoint step by step

1. Beginnen Sie mit /ServiceProviderConfig und /Schemas, damit Clients Ihre Fähigkeiten erkennen können. Start with /ServiceProviderConfig and /Schemas so clients can discover your capabilities.
2. Implementieren Sie /Users mit eindeutiger, stabiler Ressourcen-ID und filterbarem userName oder externem Schlüssel. Implement /Users with a stable unique resource ID and a filterable userName or external key.
3. Unterstützen Sie PATCH sauber, weil Entra inkrementelle Updates bevorzugt. Support PATCH correctly because Entra prefers incremental updates.
4. Behandeln Sie active, manager und multi-valued attributes wie emails oder phoneNumbers deterministisch. Handle active, manager, and multi-valued attributes such as emails or phoneNumbers deterministically.
5. Erst danach /Groups und Membership-Semantik ergänzen, weil hier viele SCIM-Implementierungen scheitern. Only then add /Groups and membership semantics because many SCIM implementations fail here.

JSON JSON

    {
      "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
      ],
      "userName": "alex.wilber@contoso.com",
      "name": {
        "givenName": "Alex",
        "familyName": "Wilber"
      },
      "active": true,
      "emails": [
        { "value": "alex.wilber@contoso.com", "primary": true }
      ],
      "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
        "department": "Finance",
        "employeeNumber": "4711"
      }
    }

### SCIM testen und Compliance validieren Test SCIM and validate compliance

- Filter-Queries wie userName eq prüfen, weil Matching sonst nicht verlässlich funktioniert. Validate filter queries such as userName eq because matching will not be reliable otherwise.
- PATCH gegen Einzelattribute und verschachtelte Attribute testen. Test PATCH against single attributes and nested attributes.
- Fehlerobjekte mit SCIM-konformen HTTP-Statuscodes und Fehlermeldungen liefern. Return SCIM-compliant HTTP status codes and error objects.
- Deprovisioning-Verhalten für active=false und DELETE getrennt dokumentieren. Document deprovisioning behavior for active=false and DELETE separately.

## Gallery App Provisioning Gallery app provisioning

### Vorkonfigurierte Gallery-Connectoren Pre-integrated gallery connectors

Gallery-Anwendungen bringen meist ein vordefiniertes Schema, empfohlene Matching-Regeln, SSO-Hinweise und oft auch dokumentierte Attributmappings mit. Dadurch sinkt das Designrisiko gegenüber Non-Gallery-Anwendungen erheblich. Gallery applications usually include a predefined schema, recommended matching rules, SSO guidance, and often documented attribute mappings. That lowers design risk significantly compared to non-gallery applications.

App-Typ App type | Vorteil des Gallery-Connectors Benefit of the gallery connector | Trotzdem prüfen Still verify
--- | --- | ---
SaaS mit SCIM SaaS with SCIM | Mappings und Discovery meist vorbereitet Mappings and discovery are usually prepared | Matching-Feld, Deprovisioning und Rollenmodell Matching field, deprovisioning, and role model
HR-Connector HR connector | Komplexe Inbound-Attribute und Joiner-Mover-Logik vorintegriert Complex inbound attributes and joiner-mover logic are pre-integrated | Fachliche Regeln, Zuständigkeiten und Quellsystemqualität Business rules, ownership, and source data quality
On-Premises Agent Connector On-premises agent connector | Wizards für LDAP, SQL oder Web Services Wizards for LDAP, SQL, or web services | Leistung, Sicherheit und Rechte auf dem Agent-Host Performance, security, and permissions on the agent host

### Wichtige Referenzszenarien Important reference scenarios

Szenario Scenario | Besonderheiten Special considerations | Designnotiz Design note
--- | --- | ---
Salesforce Provisioning Salesforce provisioning | Benutzer, Profile, Rollen und teilweise Gruppen / Teams je nach Design Users, profiles, roles, and in some designs groups or teams | Username-Strategie und federated IDs früh definieren Define the username strategy and federated IDs early
ServiceNow Provisioning ServiceNow provisioning | Zielsystem unterscheidet oft zwischen user_name, sys_id und Rollenmodell The target often distinguishes user_name, sys_id, and role semantics | Matching und Entitlement-Abgleich im Pilot besonders streng testen Test matching and entitlement reconciliation especially rigorously in the pilot
Workday nach Entra Workday to Entra | HR als Quelle, Entra als Ziel für Joiner-Mover-Leaver HR as the source, Entra as the target for joiner-mover-leaver | Namenskonventionen, Manager-Beziehungen und Rehire-Logik sauber definieren Define naming conventions, manager relationships, and rehire logic cleanly
SAP SuccessFactors nach Entra SAP SuccessFactors to Entra | Komplexe Beschäftigungsverhältnisse, Event-Gründe und OData-Modell Complex employment relationships, event reasons, and the OData model | Quellattribute und Event-Filter mit HR fachlich abstimmen Align source attributes and event filters with HR

### SAP SuccessFactors mit Workload Identity Authentifizierung SAP SuccessFactors with workload identity authentication

Neuere SuccessFactors-Integrationen unterstützen workload identity-basierte Authentifizierung. Statt eines langfristigen Basic-Auth-Geheimnisses verwendet der Provisioning-Dienst kurzlebige OIDC-Tokens, die über eine Vertrauensstellung mit SAP Cloud Identity Services eingelöst werden. Newer SuccessFactors integrations support workload identity-based authentication. Instead of a long-lived basic-auth secret, the provisioning service uses short-lived OIDC tokens exchanged through a trust with SAP Cloud Identity Services.

Vorteil Benefit | Architekturwirkung Architecture effect
--- | ---
Kein statisches Kennwort im Connector No static password in the connector | Secret-Rotation entfällt weitgehend und das Risiko kompromittierter Zugangsdaten sinkt Secret rotation is largely removed and the risk of compromised credentials decreases
Kurzlebige Tokens Short-lived tokens | Vertrauen kann über Federation schnell widerrufen werden Trust can be revoked quickly through federation
Besseres Governance-Modell Better governance model | Passt zu Zero-Secret-Strategien und moderner Workload-Identität Aligns with zero-secret strategies and modern workload identity patterns

Praxisempfehlung für SuccessFactors Practical SuccessFactors recommendation

Planen Sie bereits heute den Wechsel von Basic Auth auf Workload Identity, insbesondere wenn neue Provisioning-Implementierungen aufgebaut werden. Die technische Umstellung ist klein im Vergleich zum Sicherheitsgewinn. Plan the transition from basic auth to workload identity now, especially for new provisioning implementations. The technical change is small compared to the security benefit.

### Umfang der unterstützten Gallery-Apps Scope of supported gallery apps

Der Entra App-Katalog ist dynamisch und wächst laufend. Eine statische Offline-Seite kann deshalb nicht dauerhaft jede einzelne Gallery-App aufzählen. Praktisch relevant ist stattdessen zu wissen, dass die autoritative Liste im Entra Admin Center und in den jeweiligen Microsoft-Learn-Tutorials gepflegt wird. The Entra app catalog is dynamic and keeps growing. A static offline page therefore cannot permanently enumerate every single gallery app. In practice, what matters is knowing that the authoritative list is maintained in the Entra admin center and in the corresponding Microsoft Learn tutorials.

- Nutzen Sie im Portal die Suche unter Enterprise Applications > New application für den aktuellen vollständigen Katalog. Use the portal search under Enterprise Applications > New application for the current full catalog.
- Für produktive Designs verlassen Sie sich auf das jeweilige app-spezifische Provisioning-Tutorial. For production designs, rely on the app-specific provisioning tutorial.
- Dokumentieren Sie intern nur die von Ihrem Unternehmen tatsächlich freigegebenen Gallery-Apps. Document internally only the gallery applications actually approved by your organization.

## Attributmappings Attribute mappings

### Direkte und ausdrucksbasierte Mappings Direct and expression-based mappings

Mapping-Typ Mapping type | Beispiel Example | Wann sinnvoll When useful
--- | --- | ---
Direkt Direct | mail -> emails[type eq work].value mail -> emails[type eq work].value | Wenn das Quellattribut bereits das gewünschte Zielformat hat When the source attribute already has the target shape
Ausdrucksbasiert Expression-based | Append(ToLower([givenName]),".",ToLower([surname])) Append(ToLower([givenName]),".",ToLower([surname])) | Wenn Benutzernamen, Formate oder Fallback-Werte konstruiert werden müssen When user names, formats, or fallback values must be constructed
Scope-abhängig Scope-dependent | IIF([department]="HR", True, False) IIF([department]="HR", True, False) | Wenn Provisioning nur für Teilmengen gelten soll When provisioning should apply only to subsets

Die wichtigste Designfrage bei Mappings lautet: Welches Feld ist der stabile Anker für Matching? Ein hübsch formatierter Anzeigename ist fast nie ein guter Primärschlüssel; employeeId, immutableId oder ein gut verwalteter Benutzername sind meist robuster. The most important mapping design question is: which field is the stable anchor for matching? A pretty display name is almost never a good primary key; employeeId, immutableId, or a well-governed user name is usually more robust.

### Ausdrucksreferenz mit allen wichtigen Funktionen Expression reference with all key functions

Funktion Function | Zweck Purpose | Beispielgedanke Example intent
--- | --- | ---
Append Append | Verkettet Werte zu einer Zeichenfolge Concatenates values into one string | Alias aus Vorname und Nachname bauen Build an alias from given and family name
BitAnd BitAnd | Bitweise Verknüpfung numerischer Werte Bitwise combination of numeric values | Flags aus einem Integer ableiten Interpret flags from an integer
CBool CBool | Konvertiert in Boolean Converts to Boolean | Text oder Zahl in True oder False überführen Convert text or numeric input to True or False
CDate CDate | Konvertiert in Datum Converts to date | HR-Datumsfeld normieren Normalize an HR date field
Coalesce Coalesce | Nimmt den ersten nicht leeren Wert Returns the first non-empty value | Fallback zwischen mail, UPN und employeeId Fallback between mail, UPN, and employeeId
ConvertToBase64 ConvertToBase64 | Kodiert Text als Base64 Encodes text as Base64 | API-spezifische Zielanforderung bedienen Meet an API-specific target requirement
ConvertToUTF8Hex ConvertToUTF8Hex | Wandelt Text in UTF-8-Hex um Converts text to UTF-8 hex | Spezielle Legacy-Schnittstellen bedienen Support a special legacy interface
Count Count | Zählt Elemente Counts items | Mehrwertiges Attribut validieren Validate a multi-valued attribute
CStr CStr | Konvertiert in String Converts to string | Zahlen für Zielsysteme in Text verwandeln Turn numbers into text for target systems
DateAdd DateAdd | Addiert Zeit zu einem Datum Adds time to a date | Ablaufdatum aus Eintrittsdatum ableiten Derive an expiration date from hire date
DateDiff DateDiff | Berechnet Differenz zwischen Datumswerten Calculates difference between dates | Dienstalter oder Restlaufzeit verwenden Use tenure or remaining time
DateFromNum DateFromNum | Erzeugt Datum aus numerischem Wert Builds a date from a numeric value | Epoch-nahe Datencodes umformen Transform epoch-like date codes
FormatDateTime FormatDateTime | Formatiert Datum in Zielsyntax Formats a date in target syntax | ISO- oder lokales Datumsformat bereitstellen Provide ISO or local date strings
Guid Guid | Erzeugt GUIDs Generates GUIDs | Technische IDs bilden, wenn das Ziel sie verlangt Generate technical IDs when the target demands them
IIF IIF | If-Then-Else-Ausdruck If-then-else expression | Feldwert nach Standort oder Firma umschalten Switch a field by location or company
InStr InStr | Sucht Teilstringposition Finds substring position | Prüfen, ob eine Domäne im UPN vorkommt Check whether a domain occurs in the UPN
IsNull IsNull | Prüft auf Null Tests for null | Explizite Nullbehandlung in Expressions Handle explicit null values in expressions
IsNullOrEmpty IsNullOrEmpty | Prüft auf Null oder leeren Text Tests for null or empty text | Fallback-Werte nur dann setzen, wenn wirklich nichts vorhanden ist Set fallback values only when nothing is present
IsPresent IsPresent | Prüft, ob ein Attribut existiert Tests whether an attribute exists | Optionale Felder sicher behandeln Handle optional fields safely
IsString IsString | Prüft, ob ein Wert String ist Tests whether a value is a string | Datenqualität vor Zielkonvertierung absichern Validate data quality before target conversion
Item Item | Greift Element aus Liste oder Split-Ergebnis ab Retrieves an element from a list or split result | Vorwahl oder Benutzerteil aus E-Mail extrahieren Extract a prefix or user segment from an email
Join Join | Verbindet Listenelemente Joins list elements | Gruppen oder Rollen in Zielformate schreiben Write groups or roles into target formats
Left Left | Nimmt linke Zeichen Takes leftmost characters | Aliaslänge begrenzen Limit alias length
Mid Mid | Extrahiert Teilstring aus der Mitte Extracts a substring from the middle | Kostenstellen-Code aus Mischformat lesen Read a cost center code out of a mixed string
NormalizeDiacritics NormalizeDiacritics | Entfernt Akzente und Sonderdiakritika Removes accents and diacritics | Benutzernamen international robust machen Make usernames robust across languages
Not Not | Negiert Boolean Negates a Boolean | Scoping-Filter logisch invertieren Invert a scoping filter logically
Now Now | Aktueller Zeitstempel Current timestamp | Technische Zeitmarken oder Ablaufregeln Technical timestamps or expiry rules
NumFromDate NumFromDate | Macht Datum numerisch Turns a date into a number | Zielsysteme mit numerischer Datumserwartung bedienen Support target systems that expect numeric dates
PCase PCase | Wandelt in Proper Case um Converts to proper case | Displaynamen oder Ortsnamen normieren Normalize display names or city names
RandomString RandomString | Erzeugt Zufallszeichenfolge Generates a random string | Temporäre Initialwerte oder Platzhalter bauen Build temporary seed values or placeholders
Redact Redact | Maskiert sensible Teile eines Werts Masks sensitive parts of a value | Datenschutz bei Zielattributen oder Logs unterstützen Support privacy in target attributes or logs
RemoveDuplicates RemoveDuplicates | Entfernt doppelte Werte Removes duplicate values | Mehrfach vorkommende Gruppen oder E-Mails bereinigen Clean up duplicate groups or emails
Replace Replace | Ersetzt Teilstrings Replaces substrings | Domänenwechsel oder Leerzeichenbereinigung Swap domains or clean spaces
SelectUniqueValue SelectUniqueValue | Wählt einen eindeutigen Kandidaten aus Selects a unique candidate value | Benutzername mit Fallback-Kaskade und Kollisionserkennung User name selection with fallback cascade and collision awareness
SingleAppRoleAssignment SingleAppRoleAssignment | Ermittelt einzelne App-Rollenzuweisung Resolves a single app role assignment | Rollenbasiertes Provisioning in ein Zielattribut mappen Map role-based assignments into a target attribute
Split Split | Teilt Strings in Listen Splits strings into lists | UPN, Abteilungsstrings oder CSV-Felder zerlegen Break apart UPNs, department strings, or CSV fields
StripSpaces StripSpaces | Entfernt Leerzeichen Removes spaces | SamAccountName-ähnliche Zielregeln bedienen Support samAccountName-style target rules
Switch Switch | Mehrfachverzweigung Multi-branch selection | Firmencode in Rollen- oder Domänenwerte übersetzen Translate company code into role or domain values
ToLower ToLower | Kleinbuchstaben erzwingen Forces lowercase | E-Mail- oder Alias-Normalisierung Normalize email or alias casing
ToUpper ToUpper | Großbuchstaben erzwingen Forces uppercase | Landescodes oder Kürzel standardisieren Standardize country or short codes
Word Word | Extrahiert Wörter an bestimmter Position Extracts words at a given position | Namensbestandteile aus Freitext ableiten Derive name parts from free text

Expression Builder nutzen Use Expression Builder

Der Expression Builder ist mehr als eine Komfortfunktion. Er hilft, Datentypen, Beispielwerte und Resultate früh sichtbar zu machen. Nutzen Sie ihn vor jeder großflächigen Änderung an produktiven Mappings. The Expression Builder is more than a convenience feature. It helps surface data types, sample values, and results early. Use it before every large change to production mappings.

## On-Premises Provisioning On-premises provisioning

### Architektur: Entra ID -> Agent -> ECMA Host -> Zielsystem Architecture: Entra ID -> agent -> ECMA host -> target system

Text Text

    Microsoft Entra ID
      -> Provisioning service in the cloud
      -> On-premises provisioning agent
      -> ECMA Connector Host
      -> LDAP / SQL / REST / SOAP / PowerShell / custom target

Baustein Building block | Aufgabe Responsibility | Betriebshinweis Operational note
--- | --- | ---
Provisioning Agent Provisioning agent | Sichere Kopplung zwischen Cloud-Service und lokalem Connector Host Secure bridge between the cloud service and the local connector host | Auf dedizierten Servern mit begrenzten Rechten betreiben Run on dedicated servers with limited rights
ECMA Connector Host ECMA Connector Host | Führt Connector-Logik, Schemainformationen und Mappings aus Executes connector logic, schema knowledge, and mappings | Versionierung und Change Control streng dokumentieren Document versioning and change control strictly
Zielsystem Target system | Nimmt Benutzer, Gruppen oder Entitlements an Receives users, groups, or entitlements | Transaktionsmodell, Limits und Fehlerrückgaben verstehen Understand its transaction model, limits, and error responses

### LDAP-, SQL-, Web-Services- und PowerShell-Connectoren LDAP, SQL, web services, and PowerShell connectors

Connector Connector | Unterstützte Ziele Supported targets | Designfokus Design focus
--- | --- | ---
LDAP LDAP | OpenLDAP, AD LDS, eDirectory OpenLDAP, AD LDS, eDirectory | Objektklassen, DN-Bildung und Attributsyntax sauber planen Plan object classes, DN construction, and attribute syntax carefully
SQL SQL | SQL Server, Oracle, MySQL, MariaDB SQL Server, Oracle, MySQL, MariaDB | Stored Procedures, Views, Schlüssel und Rückgabecodes definieren Define stored procedures, views, keys, and return codes
Web Services Web services | REST und SOAP REST and SOAP | Authentifizierung, Idempotenz und Fehlerobjekte klären Clarify authentication, idempotency, and error objects
PowerShell PowerShell | CSV, proprietäre Tools, Spezialfälle CSV, proprietary tools, special cases | Skripte deterministisch, wiederholbar und transaktionsbewusst bauen Build scripts deterministically, repeatably, and transaction-aware

Bei LDAP steht oft die DN-Bildung im Mittelpunkt; bei SQL sind es Schlüssel und Update-Strategien; bei Web Services Idempotenz und API-Limits; bei PowerShell die Wiederholbarkeit und robuste Fehlerbehandlung. Der Connector-Typ ändert also nicht nur die Technik, sondern das gesamte Betriebsmodell. LDAP design usually centers on DN construction; SQL on keys and update strategy; web services on idempotency and API limits; PowerShell on repeatability and robust error handling. The connector type therefore changes not only the technology but the entire operating model.

### Custom ECMA Connector Entwicklung Custom ECMA connector development

- Connector-Schema und Attributtypen sauber definieren, bevor Code entsteht. Define connector schema and attribute types cleanly before writing code.
- Delta-Import, Full Import und Fehlerpfade getrennt testen. Test delta import, full import, and error paths separately.
- Idempotenz für wiederholte Updates sicherstellen, besonders bei Retries. Guarantee idempotency for repeated updates, especially during retries.
- Logging so entwerfen, dass Fehler in Quarantine und Zielsystem korreliert werden können. Design logging so issues can be correlated across quarantine and the target system.

## HR-getriebene Provisionierung HR-driven provisioning

Flow Flow | Typische Quelle Typical source | Besonderheit Special consideration
--- | --- | ---
Workday -> Entra ID Workday -> Entra ID | Workday Worker Data Workday worker data | Joiner-/Mover-/Leaver-Prozess im Cloud-Verzeichnis Joiner/mover/leaver process in the cloud directory
Workday -> Active Directory Workday -> Active Directory | Workday Worker Data Workday worker data | Namenskonvention, OU-Logik und Hybrid-Prozesse Naming, OU logic, and hybrid processes
SAP SuccessFactors -> Entra ID SAP SuccessFactors -> Entra ID | OData und Event-Gründe OData and event reasons | Mehrfache Beschäftigungsverhältnisse und Beschäftigungsstatus sauber auswerten Evaluate multiple employments and employment status carefully
SAP SuccessFactors -> Active Directory SAP SuccessFactors -> Active Directory | SuccessFactors Employee Central SuccessFactors Employee Central | On-prem-Agent und AD-Zielobjekte zusätzlich berücksichtigen Also account for the on-prem agent and AD target objects
SuccessFactors Writeback SuccessFactors Writeback | Entra als Quelle bestimmter Rückschreibattribute Entra as the source for selected writeback attributes | Rückschreibrechte und Datenhoheit fachlich abstimmen Align writeback permissions and data ownership
API-Driven Inbound API-driven inbound | CSV, Custom API, Integrationsplattform CSV, custom API, integration platform | Eignet sich, wenn kein Standard-HR-Connector passt Useful when no standard HR connector fits

Im HR-Kontext sind Matching-Regeln, Beschäftigungsstatus, Rehire-Verhalten und Managerauflösung meist wichtiger als das eigentliche Transportprotokoll. Technisch einfache Mappings können fachlich trotzdem scheitern, wenn HR-Attribute nicht konsistent belegt sind. In HR scenarios, matching rules, employment status, rehire behavior, and manager resolution are usually more important than the transport protocol itself. Technically simple mappings can still fail functionally when HR attributes are not populated consistently.

## Provisioning-Architektur Provisioning architecture

Konzept Concept | Bedeutung Meaning | Praxisfolge Practical consequence
--- | --- | ---
Initial Cycle Initial cycle | Liest kompletten Scope und baut den Zielbestand auf Reads the full scope and builds the target state | Kann je nach Volumen lange dauern und sollte bewusst geplant werden Can take a long time depending on volume and should be planned intentionally
Incremental Cycle Incremental cycle | Verarbeitet nur Änderungen seit dem letzten erfolgreichen Lauf Processes only changes since the last successful run | Ermöglicht schnellen laufenden Betrieb Enables efficient ongoing operations
Change Detection Change detection | Erkennt Änderungen im Quellsystem oder anhand von Sync-Wasserständen Detects changes in the source or via synchronization watermarks | Fehlerhafte Delta-Logik erzeugt stille Datenabweichungen Broken delta logic causes silent drift
Quarantine Quarantine | Schützt das Ziel vor fehlerhaften oder massiven Fehlerserien Protects the target from faulty or repeated failure storms | Muss aktiv überwacht und nicht nur im Alarmfall betrachtet werden Must be monitored proactively, not only during incidents
Soft Delete Soft delete | Deaktiviert oder markiert Konto statt physischem Löschen Disables or marks an account instead of physically deleting it | Oft fachlich sicherer für SaaS-Ziele Often functionally safer for SaaS targets
Hard Delete Hard delete | Entfernt Objekt im Ziel vollständig Removes the object from the target completely | Nur nach klarer Abstimmung mit Fachbereich und Archivierungsregeln Use only with clear business agreement and retention rules

## Scoping Filters Scoping filters

### Syntax und typische Muster Syntax and common patterns

Filtertyp Filter type | Beispielidee Example idea | Nutzen Benefit
--- | --- | ---
Attributbasiert Attribute-based | department equals Finance department equals Finance | Pilot oder fachlicher Scope Pilot or business scope
Gruppenbasiert Group-based | Nur Mitglieder einer Bereitstellungsgruppe Only members of a provisioning group | Sauberes Opt-in-Modell für SaaS-Anwendungen Clean opt-in model for SaaS applications
OU-basiert OU-based | Nur bestimmte OUs im lokalen Zielsystem Only certain OUs in the local target | Hybrid- und AD-Zielobjekte gezielt trennen Separate hybrid and AD target objects deliberately
Statusbasiert Status-based | Nur active workers oder nur terminated workers Only active workers or only terminated workers | Lifecycle-Ereignisse sauber steuern Control lifecycle events cleanly

Scoping Filter ersetzen kein Rollenmodell Scoping filters do not replace a role model

Ein Filter beantwortet nur, ob ein Objekt überhaupt in die Synchronisation einbezogen wird. Er entscheidet nicht, welche Berechtigungen oder App-Rollen das Objekt im Ziel erhalten soll. A filter only answers whether an object is included in synchronization at all. It does not decide which permissions or app roles the object should receive in the target.

## Monitoring und Troubleshooting Monitoring and troubleshooting

### Provisioning Logs und Insights Provisioning logs and insights

Provisioning Logs sind die primäre Fehlerquelle für Mapping-, Matching- und API-Probleme. Der Insights-Bereich zeigt Trends wie hohe Fehlerquoten, langlaufende Initialzyklen oder Quarantine-Zustände. Für produktive Betriebsmodelle sollten diese Signale in ein zentrales Monitoring übernommen werden. Provisioning logs are the primary source of truth for mapping, matching, and API issues. The insights area highlights trends such as high error rates, long-running initial cycles, or quarantine states. In production operating models, those signals should be integrated into central monitoring.

Beobachtung Observation | Typische Ursache Typical cause | Aktion Action
--- | --- | ---
Quarantine aktiv Quarantine active | Wiederholte API-Fehler oder systematische Mapping-Probleme Repeated API errors or systematic mapping issues | Fehlerklasse identifizieren, Zielsystem stabilisieren und Job kontrolliert neu starten Identify the failure class, stabilize the target, and restart the job in a controlled way
Viele Matching-Konflikte Many matching conflicts | Instabiler Primärschlüssel oder bereits vorhandene Zielkonten Unstable primary key or pre-existing target accounts | Account Discovery und Matching-Regeln nachschärfen Refine account discovery and matching rules
Deletes unerwartet hoch Deletes unexpectedly high | Scope geändert oder Quellsystem liefert Status falsch Scope changed or the source emits an incorrect status | Report-Only-ähnlichen Pilot, Samples und Stakeholder-Freigabe verwenden Use pilot validation, sampling, and stakeholder sign-off

### Häufige Provisioning-Fehler Common provisioning errors

Fehler Error | Wahrscheinliche Ursache Likely cause | Erstmaßnahme First action
--- | --- | ---
HTTP 400 vom SCIM-Endpoint HTTP 400 from the SCIM endpoint | Payload oder Attributschema passt nicht Payload or attribute schema mismatch | Schema, Beispielpayload und Ziel-Fehlermeldung vergleichen Compare schema, sample payload, and target error message
HTTP 401 oder 403 HTTP 401 or 403 | Falscher Token, Secret oder Zielberechtigung Wrong token, secret, or target permission | Authentifizierungspfad und Servicekonto prüfen Verify the authentication path and service account
HTTP 409 / Duplicate HTTP 409 / duplicate | Matching-Konflikt oder Zielobjekt existiert bereits Matching conflict or target object already exists | Account Discovery und Unique-Key-Logik prüfen Review account discovery and unique-key logic
Objekt wird nicht provisioniert Object is not provisioned | Scope, Zuweisung oder Filter schließen es aus Scope, assignment, or filters exclude it | Mit On-Demand-Provisioning und Filterauswertung testen Test with on-demand provisioning and filter evaluation

PowerShell PowerShell

    Connect-MgGraph -Scopes "AuditLog.Read.All"
    $logs = Invoke-MgGraphRequest -Method GET `
        -Uri "https://graph.microsoft.com/v1.0/auditLogs/provisioning?$top=25"
    $logs.value |
        Select-Object activityDateTime, jobId, statusInfo, initiatedBy | Format-List

## Graph API für Provisionierung Graph API for provisioning

### synchronizationJob steuern Control synchronization jobs

PowerShell PowerShell

    Connect-MgGraph -Scopes "Synchronization.ReadWrite.All","Application.Read.All"
    $servicePrincipalId = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
    $jobId = "scim.12345678-90ab-cdef-1234-567890abcdef"

    Invoke-MgGraphRequest -Method POST `
        -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/synchronization/jobs/$jobId/start"
    Invoke-MgGraphRequest -Method GET `
        -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/synchronization/jobs/$jobId"

### Start, Pause und Restart Start, pause, and restart

PowerShell PowerShell

    Invoke-MgGraphRequest -Method POST `
        -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/synchronization/jobs/$jobId/pause"
    Invoke-MgGraphRequest -Method POST `
        -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/synchronization/jobs/$jobId/restart"

### Mappings und Schema Discovery Mappings and schema discovery

PowerShell PowerShell

    $templateId = "templateId"
    Invoke-MgGraphRequest -Method GET `
        -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/synchronization/templates/$templateId/schema"
    Invoke-MgGraphRequest -Method GET `
        -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$servicePrincipalId/synchronization/templates/$templateId/schema/mappings"

Schema Discovery ist besonders wertvoll, wenn ein Gallery-Connector angepasst oder ein On-Premises-Ziel über ECMA modelliert wird. Vor jeder Mapping-Änderung sollte ein Export des aktuellen Schemas erfolgen, damit Rollbacks sauber möglich bleiben. Schema discovery is especially valuable when a gallery connector is customized or an on-premises target is modeled through ECMA. Before every mapping change, export the current schema so rollback remains possible.

### On-Demand Provisioning On-demand provisioning

JSON JSON

    {
      "parameters": [
        {
          "ruleId": "UserProvisioning",
          "subjects": [
            {
              "objectId": "11111111-2222-3333-4444-555555555555",
              "objectTypeName": "User"
            }
          ]
        }
      ]
    }

On-Demand Provisioning ist das schärfste Diagnosewerkzeug für Pilotierung und Fehleranalyse. Es zeigt sofort, ob Scope, Matching und Mapping für ein konkretes Objekt funktionieren, ohne einen vollständigen Zyklus abzuwarten. On-demand provisioning is the sharpest diagnostic tool for piloting and troubleshooting. It immediately shows whether scope, matching, and mapping work for a specific object without waiting for a full cycle.

## Best Practices Best practices

- Mit einem kleinen, fachlich sauberen Pilotscope beginnen und erst danach auf breite Benutzerpopulationen erweitern. Start with a small, business-clean pilot scope and only then expand to large user populations.
- Vor dem Initialzyklus Matching-Attribute, Deprovisioning-Semantik und Quarantänestrategie schriftlich freigeben lassen. Obtain written approval for matching attributes, deprovisioning semantics, and quarantine handling before the initial cycle.
- On-Demand-Provisioning vor jeder Schema- oder Mapping-Änderung nutzen. Use on-demand provisioning before every schema or mapping change.
- Fehlerklassen nach Authentifizierung, Mapping, Matching und Ziel-API trennen, statt alle Fälle in einem Sammelticket zu behandeln. Separate failure classes into authentication, mapping, matching, and target API categories instead of handling everything in one bucket.
- Für SQL-, LDAP- und Web-Service-Ziele unbedingt Idempotenz und Retry-Verhalten dokumentieren. For SQL, LDAP, and web-service targets, document idempotency and retry behavior explicitly.
- Provisioning-Änderungen wie Code behandeln: Export vor Änderung, Peer Review, Testnachweis und Rollback-Pfad. Treat provisioning changes like code: export before change, peer review, test evidence, and rollback path.

## Verwandte Referenzseiten Related reference pages

- Enterprise Applications Enterprise Applications
- Application Proxy Application Proxy
- Conditional Access Conditional Access
- Monitoring & Audit Monitoring & Audit
- Service Principals Service Principals