Toewijzingsfuncties voor Workday-expressies voor inrichting van Microsoft Entra-id's

Dit artikel bevat een uitgebreide handleiding voor veelgebruikte expressietoewijzingsfuncties bij het configureren van Workday naar on-premises Active Directory/Microsoft Entra ID-inrichting van gebruikers. Met deze functies kunt u gegevens van Workday transformeren en toewijzen om de juiste gebruikerskenmerken in Microsoft Entra-id te maken.

Inhoudsopgave

Tekenreeksmanipulatiefuncties

Eenvoudige tekenreeksbewerkingen

Scenario 1: U wilt een telefoonnummerwaarde van Workday opschonen door spaties, vierkante haken en streepjes te verwijderen.

Doelkenmerk: telephoneNumber, mobile

Replace([PrimaryWorkTelephone], , "[()\\s-]+", , "", , )
Replace([Mobile], , "[()\\s-]+", , "", , )

Voorbeeld:

  • Invoerwaarden: [PrimaryWorkTelephone] = "+1 (555) 123-4567"
  • Uitvoer van expressie: +15551234567

Scenario 2: U moet de achternaam extraheren uit een PreferredNameData veld dat 'Achternaam achternaam' bevat.

Doelkenmerk: sn in on-premises Active Directory, surname in Microsoft Entra-id

Replace([PreferredNameData], , "(?<firstName>[a-zA-Z]+ )(?<lastName>[a-zA-Z]+)", ,"${lastName}", ,)

Voorbeeld:

  • Invoerwaarden: [PreferredNameData] = "John Smith"
  • Uitvoer van expressie: Smith

Scenario 3: U wilt voorloopnullen verwijderen uit een werkrol-id voordat u deze overeenkomt met een werknemer-id in on-premises Active Directory of Microsoft Entra-id.

Doelkenmerk: employeeId

Replace([WorkerID], , "(?<leadingZeros>^0+)(?<actualValue>[a-zA-Z0-9]+)", , "${actualValue}", ,)

Voorbeeld:

  • Invoerwaarden: [WorkerID] = "00012345"
  • Uitvoer van expressie: 12345

Scenario 4: Het HereditarySuffix kenmerk bevat achtervoegselinformatie die is gelabeld met de ISO-code van het land en u wilt alleen de achtervoegselgegevens extraheren en toevoegen aan de achternaam.

Doelkenmerk: sn in on-premises Active Directory, surname in Microsoft Entra-id

Join(" ",Replace([HereditarySuffix], ,"(?<CountryISOCode>.*)_(?<suffix1>.*)_(?<suffix2>.*)[0-9]", ,"${suffix1} ${suffix2}", , ),[PreferredLastName])

Voorbeeld:

  • Invoerwaarden: [ErfelijkSuffix] = "NLD_Van_der3", [PreferredLastName] = "Hof"
  • Uitvoer van expressie: Van der Hof

Conversie van tekstcases

Scenario 1: U moet tekst converteren naar het juiste hoofdlettergebruik, maar apostrofs correct verwerken (bijvoorbeeld 'st john's hospital' moet 'St John's Hospital' worden).

Doelkenmerk: bedrijf

Replace(PCase("st john's hospital"),"'S", , ,"'s", , )

Voorbeeld:

  • Invoerwaarden: Statische tekst "st john's hospital"
  • Uitvoer van expressie: St John's Hospital

Scenario 2: U wilt een gebruikersnaam in kleine letters maken op basis van voor- en achternaam.

Doelkenmerk: mailNickname

ToLower(NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))))

Voorbeeld:

  • Invoerwaarden: [PreferredFirstName] = "José", [PreferredLastName] = "Garciaía-Gegroepeerd"
  • Uitvoer van expressie: jose.garcia-lopez

Landspecifieke naamgevingslogica

Scenario 1: U moet verschillende naamconventies toepassen op basis van het land van de gebruiker (bijvoorbeeld 'Last, First' voor bepaalde landen).

Doelkenmerk: displayName, cn

Switch([CountryReferenceTwoLetter], 
    Join(" ", [PreferredFirstName], [PreferredLastName]),  
    "HU", Join(",", [PreferredLastName], [PreferredFirstName]), 
    "JP", Join(",", [PreferredLastName], [PreferredFirstName]), 
    "KR", Join(",", [PreferredLastName], [PreferredFirstName])
)

Voorbeeld:

  • Invoerwaarden: [CountryReferenceTwoLetter] = "JP", [PreferredFirstName] = "Hiroshi", [PreferredLastName] = "Tanaka"
  • Uitvoer van expressie: Tanaka,Hiroshi (Japanse naamconventie)
  • Alternatieve invoer: [CountryReferenceTwoLetter] = "US", [PreferredFirstName] = "John", [PreferredLastName] = "Smith"
  • Alternatieve uitvoer: John Smith (standaardconventie voor westerse naamgeving)

E-mailadres genereren

Eenvoudige e-mailgeneratie

Scenario 1: U wilt een e-mailadres maken door de voor- en achternaam te koppelen, spaties en speciale tekens te verwijderen en een domein toe te voegen.

Doelkenmerk: e-mail

Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com")

Voorbeeld:

  • Invoerwaarden: [PreferredFirstName] = "María", [PreferredLastName] = "José González"
  • Uitvoer van expressie: maria.josegonzalez@contoso.com

Scenario 2: U moet speciale tekens, zoals aanhalingstekens en komma's, afhandelen in namen bij het genereren van e-mailadressen.

Doelkenmerk: userPrincipalName

SelectUniqueValue(
    Join("@", Replace(NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), , "[\"',]+", , "", , ), "contoso.com"), 
    Join("@", Replace(NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], "1", "1"), [PreferredLastName]))), , "[\"',]+", , "", , ), "contoso.com"), 
    Join("@", Replace(NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], "1", "2"), [PreferredLastName]))), , "[\"',]+", , "", , ), "contoso.com")
)

Voorbeeld:

  • Invoerwaarden: [PreferredFirstName] = "Mary-Ann", [PreferredLastName] = "O'Connor"
  • Uitvoer van expressie: maryann.oconnor@contoso.com (of m.oconnor@contoso.com als de eerste optie wordt genomen, of ma.oconnor@contoso.com als de eerste twee worden genomen)

Bedrijfsspecifieke e-maildomeinen

Scenario 1: U hebt meerdere bedrijven en u moet e-mailadressen genereren met verschillende domeinachtervoegsels op basis van het bedrijf.

Doelkenmerk: e-mail

Switch([Company], 
    Join("@", NormalizeDiacritics(StripSpaces(Join(".", [FirstName], [LastName]))), "contoso.com"),
    "Contoso", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [FirstName], [LastName]))), "contoso.com"),
    "Fabrikam", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [FirstName], [LastName]))), "fabrikam.com"),
    "Woodgrove", Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([FirstName],1,1), [LastName]))), "woodgrove.com")
)

Voorbeeld:

  • Invoerwaarden: [Bedrijf] = "Fabrikam", [Voornaam] = "John", [Achternaam] = "Smith"
  • Uitvoer van expressie: john.smith@fabrikam.com
  • Alternatieve invoer: [Bedrijf] = "Woodgrove", [Voornaam] = "Sarah", [Achternaam] = "Johnson"
  • Alternatieve uitvoer: s.johnson@woodgrove.com

ProxyAddresses-configuratie

Scenario 1: U moet meerdere proxyadressen instellen voor Exchange, inclusief primaire en secundaire SMTP-adressen.

Doelkenmerk: proxyAddresses

Split(
    Join(",",
        Append("smtp:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.mail.onmicrosoft.com")),
        Append("smtp:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.onmicrosoft.com")),
        Append("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
    ), ","
)

Voorbeeld:

  • Invoerwaarden: [PreferredFirstName] = "Michael", [PreferredLastName] = "Brown"
  • Uitvoer van expressie: ["smtp:michael.brown@contoso.mail.onmicrosoft.com", "smtp:michael.brown@contoso.onmicrosoft.com", "SMTP:michael.brown@contoso.com"]

Verwerking van telefoonnummers

Deze expressietoewijzingen kunnen worden gebruikt in de Workday Writeback-toepassing.

Internationale parsering van telefoonnummers

Scenario 1: U hebt telefoonnummers in internationale indeling (+1 737-626-8331) en u moet alleen het telefoonnummer extraheren zonder de landcode.

Doelkenmerk: telephoneNumber

Replace(Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${phoneNumber}", , ), ,"[()\\s-]+", ,"", , )

Voorbeeld:

  • Invoerwaarden: [telephoneNumber] = "+1 737-626-8331"
  • Uitvoer van expressie: 7376268331

Scenario 2: U moet de landcode extraheren uit een telefoonnummer om het land te bepalen voor adreslijstdoeleinden.

Doelkenmerk: c

Switch(Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${isdCode}", , ), "USA",
  "1", "USA",
  "44", "GBR", 
  "49", "DEU"
)

Voorbeeld:

  • Invoerwaarden: [telephoneNumber] = "+44 20 7946 0958"
  • Uitvoer van expressie: GBR
  • Alternatieve invoer: [telephoneNumber] = "+1 555-123-4567"
  • Alternatieve uitvoer: USA

Scenario 3: U moet het telefoonnummer terugschrijven dat door Microsoft Teams wordt gegenereerd en ingesteld in Microsoft Entra-id (bijvoorbeeld +4926180001111). In dit telefoonnummer is er geen ruimte tussen de Landcode en het werkelijke telefoonnummer. U kunt het volgende regex-parseringsmechanisme gebruiken om landcodes te extraheren die relevant zijn voor uw organisatie en deze te gebruiken om de Workday CountryCodeNamein te stellen.

Doelkenmerk: CountryCodeName

Switch(Replace([telephoneNumber], , "\+(?<isdCode>49|44|43|1|352|91|31|32|55|237|420|45|20|212|216|234|263|27|30|33|34|351|352|36|372|380|381|383|39|40|41|421|46|47|48|58|60|7|90|91|92|94|961|971|98|995)(?<phoneNumber>.*)", , "${isdCode}", , ), , "43", "AUT", "32", "BEL", "1", "USA", "420", "CZE", "45", "DNK", "372", "EST", "33", "FRA", "49", "GER", "30", "GRC", "36", "HUN", "91", "IND", "39", "ITA", "352", "LUX", "31", "NLD", "47", "NOR", "48", "POL", "40", "ROU", "421", "SVK", "27", "ZAF", "34", "ESP", "46", "SWE", "41", "CHE", "90", "TUR")

Voorbeeld:

  • Invoerwaarden: [telephoneNumber] = "+493012345678"
  • Uitvoer van expressie: GER
  • Alternatieve invoer: [telephoneNumber] = "+919876543210"
  • Alternatieve uitvoer: IND
  • Alternatieve invoer: [telephoneNumber] = "+15551234567"
  • Alternatieve uitvoer: USA

Opmaak van telefoonnummers voor verschillende systemen

Scenario 1: U moet telefoonnummers verwerken met extensies (bijvoorbeeld '+1 (206) 291-8163 x8125').

Doelkenmerk: telephoneNumber

Replace(Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.* )[x](?<extension>.*)", , "${phoneNumber}", , ), ,"[()\\s-]+", ,"", , )

Voorbeeld:

  • Invoerwaarden: [telephoneNumber] = "+1 (206) 291-8163 x8125"
  • Uitvoer van expressie: 2062918163

Scenario 2: U wilt alleen de extensie uit een telefoonnummer extraheren.

Doelkenmerk: extensionAttribute1

Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.* )[x](?<extension>.*)", , "${extension}", , )

Voorbeeld:

  • Invoerwaarden: [telephoneNumber] = "+1 (206) 291-8163 x8125"
  • Uitvoer van expressie: 8125

Accountstatuslogica voor Active Directory

De expressies in deze sectie zijn van toepassing op het accountDisabled kenmerk dat deel uitmaakt van 'Workday to on-premises Active Directory user provisioning app'. Raadpleeg de sectie Accountstatuslogica voor Microsoft Entra ID voor Microsoft Entra ID voor het instellen van het accountEnabled kenmerk dat deel uitmaakt van de gebruikersinrichtings-app van Workday naar Microsoft Entra ID.

Basisaccountstatusbeheer

Scenario 1: u wilt on-premises Active Directory-accounts uitschakelen voor gebruikers die niet actief zijn in Workday.

Doelkenmerk: accountDisabled

Switch([Active], , "1", "False", "0", "True")

Voorbeeld:

  • Invoerwaarden: [Actief] = "1"
  • Uitvoer van expressie: False (account ingeschakeld)
  • Alternatieve invoer: [Actief] = "0"
  • Alternatieve uitvoer: True (account uitgeschakeld)

Verwerking opnieuw starten

Scenario 1: U hebt Scenario 1 nodig: u moet rehire-scenario's afhandelen waarbij accounts alleen moeten worden ingeschakeld op of na de huurdatum.

Doelkenmerk: accountDisabled

Switch([Active], , 
"1", IIF([StatusRehire]=1, IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, "False", "True"), "False"), 
"0", "True")

Voorbeeld:

  • Invoerwaarden: [Actief] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-08-15" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: True (account uitgeschakeld tot aan huurdatum)
  • Alternatieve invoer: [Actief] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-07-15"
  • Alternatieve uitvoer: False (account ingeschakeld als huurdatum is verstreken)

Vooraf inhuren van account

Scenario 1: U wilt accounts maken voor toekomstige medewerkers, maar ze tot 14 dagen vóór de begindatum uitgeschakeld houden.

Doelkenmerk: accountDisabled

Switch([Active], , "1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) <= 14, "False", "True"), "0", "True")

Voorbeeld:

  • Invoerwaarden: [Actief] = "1", [StatusHireDate] = "2025-08-10" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: False (account ingeschakeld als huurdatum is binnen 14 dagen)
  • Alternatieve invoer: [Actief] = "1", [StatusHireDate] = "2025-09-15"
  • Alternatieve uitvoer: True (account uitgeschakeld als huurdatum is langer dan 14 dagen verwijderd)

Afhandeling van huurverleningen

Scenario 1: U moet scenario's voor het wijzigen van de huurbewerking afhandelen bij het instellen van het accountDisabled kenmerk. U wilt de logica implementeren:

  • Als Beëindigd = 1 in werkdag, accountDisabled = True
  • Als Rescinded = 1 in workday, accountDisabled = True
  • Als Actief =1 in werkdag
    • als
      • HireDate is in de toekomst meer dan zeven dagen dan accountDisabled = True (het account uitschakelen)
      • HireDate is <= zeven dagen in de toekomst, dan accountDisabled = False (schakel het account in)
  • If Active = 0, accountDisabled = True

Doelkenmerk: accountDisabled

Switch([StatusTerminated], "False", "1", "True", "0",
  Switch([StatusHireRescinded], "False", "1", "True", "0",
     Switch([Active], "False", 
         "1", IIF(DateDiff("d", Now(), CDate(IIF(IsNullOrEmpty([StatusHireDate]), "9999-01-01", [StatusHireDate]))) < 7, "False", "True"), 
         "0", "True"
         )
    )
)

Voorbeeld:

  • Invoerwaarden: [Beëindigd] = "1", [Actief] = "1", [StatusHireDate] = "2025-08-15"
  • Uitvoer van expressie: True (account uitgeschakeld vanwege beëindiging)
  • Alternatieve invoer: [Beëindigd] = "0", [Rescinded] = "1", [Actief] = "1"
  • Alternatieve uitvoer: True (account uitgeschakeld vanwege opnieuw opstarten)
  • Alternatieve invoer: [Beëindigd] = "0", [Rescinded] = "0", [Actief] = "1", [StatusHireDate] = "2025-08-15" (huidige datum: 2025-07-30)
  • Alternatieve uitvoer: True (account uitgeschakeld als huurdatum is langer dan 7 dagen verwijderd)
  • Alternatieve invoer: [Beëindigd] = "0", [Rescinded] = "0", [Actief] = "1", [StatusHireDate] = "2025-08-05"
  • Alternatieve uitvoer: False (account ingeschakeld als huurdatum is binnen 7 dagen)

Accountstatuslogica voor Microsoft Entra-id

De expressies in deze sectie zijn van toepassing op het kenmerk dat deel uitmaakt van de accountEnabled app Gebruikersinrichting van Workday naar Microsoft Entra ID. Raadpleeg de sectie Accountstatuslogica voor Active Directory voor Het instellen van het accountDisabled kenmerk dat deel uitmaakt van 'Workday to on-premises Active Directory user provisioning app'.

Basisaccountstatusbeheer

Scenario 1: U wilt Microsoft Entra ID-accounts uitschakelen voor gebruikers die niet actief zijn in Workday.

Doelkenmerk: accountEnabled

Switch([Active], , "1", "True", "0", "False")

Voorbeeld:

  • Invoerwaarden: [Actief] = "1"
  • Uitvoer van expressie: True (account ingeschakeld)
  • Alternatieve invoer: [Actief] = "0"
  • Alternatieve uitvoer: False (account uitgeschakeld)

Verwerking opnieuw starten

Scenario 1: U moet rehire-scenario's afhandelen waarbij accounts alleen moeten worden ingeschakeld op of na de huurdatum.

Doelkenmerk: accountEnabled

Switch([Active], , 
"1", IIF([StatusRehire]=1, IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, "True", "False"), "True"), 
"0", "False")

Voorbeeld:

  • Invoerwaarden: [Actief] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-08-15" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: False (account uitgeschakeld tot aan huurdatum)
  • Alternatieve invoer: [Actief] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-07-15"
  • Alternatieve uitvoer: True (account ingeschakeld als huurdatum is verstreken)

Vooraf inhuren van account maken

Scenario 1: U wilt accounts maken voor toekomstige medewerkers, maar ze tot 14 dagen vóór de begindatum uitgeschakeld houden.

Doelkenmerk: accountEnabled

Switch([Active], , "1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) <= 14, "True", "False"), "0", "False")

Voorbeeld:

  • Invoerwaarden: [Actief] = "1", [StatusHireDate] = "2025-08-10" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: True (account ingeschakeld als huurdatum is binnen 14 dagen)
  • Alternatieve invoer: [Actief] = "1", [StatusHireDate] = "2025-09-15"
  • Alternatieve uitvoer: False (account uitgeschakeld als huurdatum is langer dan 14 dagen verwijderd)

Datumfuncties

Datumnotatie en conversie

Scenario 1: U moet de einddatum van een Workday-contract converteren naar de Active Directory-indeling voor het kenmerk accountExpires, zodat het account verloopt op de einddatum van het contract.

Doelkenmerk: accountExpires

NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), "T23:59:59-08:00"))

Voorbeeld:

  • Invoerwaarden: [StatusHireDate] = "2025-12-31"
  • Uitvoer van expressie: 133835135990000000 (numerieke weergave van 2025-12-31T23:59:59-07:00)

Scenario 2: U wilt een vervaldatum instellen voor het account vijf jaar vanaf de huurdatum.

Doelkenmerk: accountExpires

NumFromDate(Join("",FormatDateTime(DateAdd("yyyy", 5, CDate([StatusHireDate])), , "yyyy-MM-dd", "yyyy-MM-dd")," 23:59:59-05:00"))

Voorbeeld:

  • Invoerwaarden: [StatusHireDate] = "2025-01-15"
  • Uitvoer van expressie: 139418879990000000 (numerieke weergave van 2030-01-15 23:59:59-05:00)

Voorwaardelijke logica op basis van datums

Scenario 1: U wilt alleen afdelingsgegevens doorstromen als de werknemer aan het werk is begonnen (huurdatum is verstreken).

Doelkenmerk: afdeling

IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, [Department], IgnoreAttributeFlow)

Voorbeeld:

  • Invoerwaarden: [StatusHireDate] = "2025-07-15", [Afdeling] = "Engineering" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: Engineering (huurdatum is verstreken)
  • Alternatieve invoer: [StatusHireDate] = "2025-08-15", [Afdeling] = "Marketing"
  • Alternatieve uitvoer: IgnoreAttributeFlow (huurdatum is in de toekomst)

Scenario 2: U moet alleen gebruikersobjecten maken als de huurdatum binnen 14 dagen valt.

Doelkenmerk: objectFilter

IIF(DateDiff("d", Now(), CDate([StatusHireDate])) <= 14, "False", IgnoreObjectFlow)

Voorbeeld:

  • Invoerwaarden: [StatusHireDate] = "2025-08-10" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: False (maak gebruikersobject als huurdatum is binnen 14 dagen)
  • Alternatieve invoer: [StatusHireDate] = "2025-09-15"
  • Alternatieve uitvoer: IgnoreObjectFlow (maak geen gebruikersobject omdat de huurdatum langer is dan 14 dagen verwijderd)

Toewijzing van organisatie-eenheid (OE)

Eenvoudige OE-toewijzing

Scenario 1: U wilt gebruikers in verschillende organisatie-eenheden plaatsen op basis van hun stad.

Doelkenmerk: parentDistinguishedName

Switch([City], "OU=Default,OU=Users,DC=contoso,DC=com", 
"Dallas", "OU=Dallas,OU=Users,DC=contoso,DC=com", 
"Austin", "OU=Austin,OU=Users,DC=contoso,DC=com", 
"Seattle", "OU=Seattle,OU=Users,DC=contoso,DC=com", 
"London", "OU=London,OU=Users,DC=contoso,DC=com" 
)

Voorbeeld:

  • Invoerwaarden: [Plaats] = "Seattle"
  • Uitvoer van expressie: OU=Seattle,OU=Users,DC=contoso,DC=com
  • Alternatieve invoer: [Plaats] = "Chicago"
  • Alternatieve uitvoer: OU=Default,OU=Users,DC=contoso,DC=com (standaard voor niet-opgegeven steden)

Complexe OE-structuur

Scenario 1: U moet een complexe organisatie-eenheidsstructuur maken op basis van afdeling, kostenplaats en land.

Doelkenmerk: parentDistinguishedName

Join("", 
    Switch([SupervisoryOrganization],"",
        "Engineering", "OU=Engineering,",
        "Shared Services", "OU=Shared Services,",
        "Information Technology", "OU=Information Technology,",
        "Development", "OU=Development,"
        ),
    Switch([CostCenter],"",
        "Finance and Info. Mgmt.","OU=Finance and Information Management,",
        "Modern Workplace","OU=Modern Workplace,",
        "Green Energy","OU=Green Energy,"
        ),
    Switch([CountryReferenceTwoLetter],"",
        "US","OU=USA,",
        "UK","OU=UK,",
        "IN","OU=IN,"
        ),
    "OU=Users,DC=contoso,DC=com"
)

Voorbeeld:

  • Invoerwaarden: [SupervisoryOrganization] = "Engineering", [CostCenter] = "Modern Workplace", [CountryReferenceTwoLetter] = "US"
  • Uitvoer van expressie: OU=Engineering,OU=Modern Workplace,OU=USA,OU=Users,DC=contoso,DC=com
  • Alternatieve invoer: [SupervisoryOrganization] = "Sales", [CostCenter] = "Marketing", [CountryReferenceTwoLetter] = "UK"
  • Alternatieve uitvoer: OU=Users,DC=contoso,DC=com (standaardwaarden wanneer waarden niet overeenkomen)

Beëindigde OE-toewijzing van gebruiker

Scenario 1: U wilt beëindigde gebruikers verplaatsen naar een speciale organisatie-eenheid op hun beëindigingsdatum.

Doelkenmerk: parentDistinguishedName

IIF(DateDiff("d", Now(),CDate(Switch([StatusTerminationLastDayOfWork],[StatusTerminationLastDayOfWork],
        "","9999-12-31"
        ))
    ) <= 0, 
    "OU=Leavers,OU=Users,DC=contoso,DC=com", 
    Switch([City], "OU=Default,OU=Users,DC=contoso,DC=com", 
        "Dallas", "OU=Dallas,OU=Users,DC=contoso,DC=com", 
        "Austin", "OU=Austin,OU=Users,DC=contoso,DC=com", 
        "Seattle", "OU=Seattle,OU=Users,DC=contoso,DC=com", 
        "London", "OU=London,OU=Users,DC=contoso,DC=com" 
    ) 
)

Voorbeeld:

  • Invoerwaarden: [StatusTerminationLastDayOfWork] = "2025-07-25", [Plaats] = "Seattle" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: OU=Leavers,OU=Users,DC=contoso,DC=com (verplaatst naar organisatie-eenheid van verlatende gebruikers als beëindigingsdatum is verstreken)
  • Alternatieve invoer: [StatusTerminationLastDayOfWork] = "2025-08-15", [Plaats] = "Dallas"
  • Alternatieve uitvoer: OU=Dallas,OU=Users,DC=contoso,DC=com (blijft in de normale organisatie-eenheid, aangezien de beëindigingsdatum in de toekomst valt)

Genereren van willekeurige id's

Op GUID gebaseerde willekeurige generatie

Scenario 1: U moet een willekeurige tekenreeks van vijf tekens genereren die geen cijfers bevat.

Doelkenmerk: extensionAttribute15

SelectUniqueValue (
   Replace(Mid(ConvertToBase64(Guid()), 1, 5 ), ,"[0-9]", ,"A", , ),
   Replace(Mid(ConvertToBase64(Guid()), 1, 5 ), ,"[0-9]", ,"B", , ),
   Replace(Mid(ConvertToBase64(Guid()), 1, 5 ), ,"[0-9]", ,"C", , )
)

Voorbeeld:

  • Invoerwaarden: gegenereerde GUID geconverteerd naar Base64 (bijvoorbeeld 'mV8dXr...')
  • Uitvoer van expressie: mVAdX (cijfers vervangen door 'A' of door 'B'/'C' als de eerste optie wordt gebruikt)

Scenario 2: U wilt een willekeurige tekenreeks genereren die begint met 'D' gevolgd door 4 alfabetische tekens.

Doelkenmerk: extensionAttribute14

SelectUniqueValue(
    ToUpper(Replace(ConvertToBase64(Guid()), , "(.*?)(?<id>[a-zA-Z]{4})(.*)", , "D${id}", ,)),
    ToUpper(Replace(ConvertToBase64(Guid()), , "(.*?)(?<id>[a-zA-Z]{4})(.*)", , "D${id}", ,)),
    ToUpper(Replace(ConvertToBase64(Guid()), , "(.*?)(?<id>[a-zA-Z]{4})(.*)", , "D${id}", ,))
)

Voorbeeld:

  • Invoerwaarden: gegenereerde GUID geconverteerd naar Base64 met alfabetische volgorde 'mVdX'
  • Uitvoer van expressie: DMVDX (of anders als eerste optie wordt gebruikt)

Generatie van numerieke id

Scenario 1: U moet een willekeurig 4-cijferig getal genereren op basis van een GUID.

Doelkenmerk: extensionAttribute13

SelectUniqueValue(
    Replace(Replace(Guid(), ,"-", ,"", , ), ,"(.*?)(?<id>[0-9]{4})(.*)", , "D${id}", ,),
    Replace(Replace(Guid(), ,"-", ,"", , ), ,"(.*?)(?<id>[0-9]{4})(.*)", , "D${id}", ,),
    Replace(Replace(Guid(), ,"-", ,"", , ), ,"(.*?)(?<id>[0-9]{4})(.*)", , "D${id}", ,)
)

Voorbeeld:

  • Invoerwaarden: gegenereerde GUID zoals "a1b2c3d4-e5f6-7890-1234-567890abcdef"
  • Uitvoer van expressie: D7890 (of D1234, D5678enzovoort, afhankelijk van welke 4-cijferige reeks als eerste overeenkomt)

Naamverwerking

Weergavenaam genereren

Scenario 1: U wilt een weergavenaam maken in de indeling 'Last, First'.

Doelkenmerk: displayName

Join(", ", [PreferredLastName], [PreferredFirstName])

Voorbeeld:

  • Invoerwaarden: [PreferredLastName] = "Smith", [PreferredFirstName] = "John"
  • Uitvoer van expressie: Smith, John

Scenario 2: U moet een weergavenaam maken die de middelste eerste en werknemer-id bevat.

Doelkenmerk: displayName

Join("", [PreferredLastName], ",", [PreferredFirstName], " ", Mid([PreferredMiddleName],1,1), "-", [WorkerID])

Voorbeeld:

  • Invoerwaarden: [PreferredLastName] = "Johnson", [PreferredFirstName] = "Sarah", [PreferredMiddleName] = "Elizabeth", [WorkerID] = "12345"
  • Uitvoer van expressie: Johnson,Sarah E-12345

Algemene naamgeneratie (CN) met uniekheid

Scenario 1: U wilt een unieke algemene naam genereren met terugvalopties voor duplicaten.

Doelkenmerk: cn

SelectUniqueValue(
    NormalizeDiacritics(Join(" ", [PreferredFirstName], [PreferredLastName])),
    NormalizeDiacritics(Join(" ", [PreferredFirstName], Mid([PreferredMiddleName],1,1), [PreferredLastName])),
    NormalizeDiacritics(Join(" ", [PreferredFirstName], [PreferredMiddleName], [PreferredLastName]))
)

Voorbeeld:

  • Invoerwaarden: [PreferredFirstName] = "José", [PreferredLastName] = "Garciaía", [PreferredMiddleName] = "Antonio"
  • Uitvoer van expressie: Jose Garcia (of Jose A Garcia als de eerste optie wordt genomen, of Jose Antonio Garcia als de eerste twee worden genomen)

SamAccountName generation

Scenario 1: U wilt een samAccountName van 20 tekens maken met de voor- en achternaam met numerieke achtervoegsels voor duplicaten.

Doelkenmerk: sAMAccountName

SelectUniqueValue(
    Replace(Mid(Replace(NormalizeDiacritics(StripSpaces(Join("", Mid([FirstName],1,1), [LastName]))), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 20), , "(\\.)*$", , "", , ),
    Join("",Replace(Mid(Replace(NormalizeDiacritics(StripSpaces(Join("", Mid([FirstName],1,1), [LastName]))), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 19), , "(\\.)*$", , "", , ),"1"),
    Join("",Replace(Mid(Replace(NormalizeDiacritics(StripSpaces(Join("", Mid([FirstName],1,1), [LastName]))), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 19), , "(\\.)*$", , "", , ),"2")
)

Voorbeeld:

  • Invoerwaarden: [Voornaam] = "María José", [Achternaam] = "González-Gegroepeerd"
  • Uitvoer van expressie: mgonzalezlopez (of mgonzalezlopez1 als de eerste optie wordt genomen, of mgonzalezlopez2 als de eerste twee worden genomen)

Geavanceerde scenario's

Verbergen in adreslijstenlogica

In deze sectie wordt beschreven hoe u het booleaanse kenmerk msExchHideFromAddressListsinstelt. Gebruik alle hoofdletters 'TRUE' of 'FALSE' om het booleaanse kenmerk in te stellen. Als u een andere waarde gebruikt, resulteert dit in een HybridSynchronizationActiveDirectoryInvalidParameter fout.

Scenario 1: U wilt instellen msExchHideFromAddressLists op basis van de actieve accountstatus van de Workday-gebruiker.

Doelkenmerk: msExchHideFromAddressLists

Switch([Active], , "1", "FALSE", "0", "TRUE")

Voorbeeld:

  • Invoerwaarden: [Actief] = "0"
  • Uitvoer van expressie: TRUE (verbergen in adreslijsten omdat de gebruiker inactief is in Workday)
  • Alternatieve invoer: [Actief] = "1"
  • Alternatieve uitvoer: FALSE (weergeven in adreslijsten als de gebruiker actief is in Workday)

Scenario 2: U wilt instellen msExchHideFromAddressLists op basis van de huurdatum van de werknemer. De gebruiker in de Exchange-adreslijst alleen weergeven na de huurdatum.

Doelkenmerk: msExchHideFromAddressLists

IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, "TRUE", "FALSE")

Voorbeeld:

  • Invoerwaarden: [StatusHireDate] = "2025-07-31" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: TRUE (verbergen in adreslijsten als huurdatum zich in de toekomst bevindt)
  • Alternatieve invoer: [StatusHireDate] = "2025-07-31" (huidige datum: 2025-08-01)
  • Alternatieve uitvoer: FALSE (weergeven in adreslijsten als huurdatum in het verleden)

Instelling voor kenmerk met meerdere waarden

Scenario 1: U moet meerdere waarden instellen voor het kenmerk msExchPoliciesExcluded in Active Directory.

Doelkenmerk: msExchPoliciesExcluded

Split(
    Join(",","a8cccada-a108-47ae-bf9a-f130499aa4cb","{26491cfc-9e50-4857-861b-0cb8df22b5d7}"),
    ","
)

Voorbeeld:

  • Invoerwaarden: statische GUID-waarden
  • Uitvoer van expressie: ["a8cccada-a108-47ae-bf9a-f130499aa4cb", "{26491cfc-9e50-4857-861b-0cb8df22b5d7}"]

Scenario's voor terugschrijven

Scenario 1: U wilt de gebruikersnaam alleen terugschrijven naar Workday als de datum van werknemershuur is verstreken.

Doelkenmerk: gebruikersnaam

IgnoreFlowIfNullOrEmpty(IIF(DateDiff("d", Now(), CDate([employeeHireDate])) > 0, "", [userPrincipalName]))

Voorbeeld:

  • Invoerwaarden: [employeeHireDate] = "2025-07-15", [userPrincipalName] = "user@contoso.com" (huidige datum: 2025-07-30)
  • Uitvoer van expressie: user@contoso.com (huurdatum is verstreken, gebruikersnaam voor write-back)
  • Alternatieve invoer: [employeeHireDate] = "2025-08-15", [userPrincipalName] = "future@contoso.com"
  • Alternatieve uitvoer: (leeg - genegeerd, huurdatum is in de toekomst)

Beste praktijken

  • Gebruik Altijd SelectUniqueValue voor kenmerken waarvoor uniekheid is vereist (zoals UPN, samAccountName, e-mail).

  • Null- en lege waarden verwerken met behulp van functies zoals IsNullOrEmpty, IsPresentof Switch instructies.

  • Gebruik NormalizeDiacritics bij het verwerken van namen met speciale tekens om compatibiliteit te garanderen.

  • Testdatumlogica grondig omdat verschillende tijdzones en datumnotaties van invloed kunnen zijn op de resultaten.

  • Gebruik IgnoreFlowIfNullOrEmpty als u kenmerkupdates voor lege waarden wilt overslaan.

  • Overweeg om Switch te gebruiken in plaats van geneste IIF-instructies voor een betere leesbaarheid.

  • Valideer altijd reguliere expressies in een online regex-tester voordat u implementeert.

Meer resources