Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- E-mailadres genereren
- Verwerking van telefoonnummers
- Accountstatuslogica voor Active Directory
- Accountstatuslogica voor Microsoft Entra-id
- Datumfuncties
- Toewijzing van organisatie-eenheid (OE)
- Genereren van willekeurige id's
- Naamverwerking
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(ofm.oconnor@contoso.comals de eerste optie wordt genomen, ofma.oconnor@contoso.comals 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)
- als
- 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(ofD1234,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(ofJose A Garciaals de eerste optie wordt genomen, ofJose Antonio Garciaals 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(ofmgonzalezlopez1als de eerste optie wordt genomen, ofmgonzalezlopez2als 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,IsPresentofSwitchinstructies.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.