Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller en omfattande guide till vanliga uttrycksmappningsfunktioner när du konfigurerar Workday till lokal Active Directory/Microsoft Entra ID-användaretablering. Dessa funktioner hjälper till att transformera och mappa data från Workday för att skapa lämpliga användarattribut i Microsoft Entra-ID.
Innehållsförteckning
- Funktioner för strängmanipulering
- Generering av e-postadress
- Bearbetning av telefonnummer
- Kontostatuslogik för Active Directory
- Kontostatuslogik för Microsoft Entra-ID
- Datumfunktioner
- Organisationsenhetstilldelning (OU)
- Generering av slumpmässigt ID
- Namnbearbetning
Funktioner för strängmanipulering
Grundläggande strängåtgärder
Scenario 1: Du vill rensa ett telefonnummervärde som kommer från Workday genom att ta bort blanksteg, hakparenteser och bindestreck.
Målattribut: telephoneNumber, mobile
Replace([PrimaryWorkTelephone], , "[()\\s-]+", , "", , )
Replace([Mobile], , "[()\\s-]+", , "", , )
Exempel:
- Indatavärden: [PrimaryWorkTelephone] = "+1 (555) 123-4567"
-
Utdata för uttryck:
+15551234567
Scenario 2: Du måste extrahera efternamnet från ett PreferredNameData fält som innehåller "FirstName LastName".
Målattribut: sn i lokal Active Directory i surname Microsoft Entra-ID
Replace([PreferredNameData], , "(?<firstName>[a-zA-Z]+ )(?<lastName>[a-zA-Z]+)", ,"${lastName}", ,)
Exempel:
- Indatavärden: [PreferredNameData] = "John Smith"
-
Utdata för uttryck:
Smith
Scenario 3: Du vill ta bort inledande nollor från ett arbets-ID innan du matchar det med ett medarbetar-ID i lokal Active Directory eller Microsoft Entra-ID.
Målattribut: employeeId
Replace([WorkerID], , "(?<leadingZeros>^0+)(?<actualValue>[a-zA-Z0-9]+)", , "${actualValue}", ,)
Exempel:
- Indatavärden: [WorkerID] = "00012345"
-
Utdata för uttryck:
12345
Scenario 4: Attributet HereditarySuffix innehåller suffixinformation som är taggad med lands-ISO-kod och du vill bara extrahera suffixinformationen och lägga till den i efternamnet.
Målattribut: sn i lokal Active Directory i surname Microsoft Entra-ID
Join(" ",Replace([HereditarySuffix], ,"(?<CountryISOCode>.*)_(?<suffix1>.*)_(?<suffix2>.*)[0-9]", ,"${suffix1} ${suffix2}", , ),[PreferredLastName])
Exempel:
- Indatavärden: [HereditarySuffix] = "NLD_Van_der3", [PreferredLastName] = "Hof"
-
Utdata för uttryck:
Van der Hof
Konvertering av textfall
Scenario 1: Du måste konvertera text till rätt fall men hantera apostrofer korrekt (till exempel "st john's hospital" bör bli "St John's Hospital").
Målattribut: företag
Replace(PCase("st john's hospital"),"'S", , ,"'s", , )
Exempel:
- Indatavärden: Statisk text "st john's hospital"
-
Utdata för uttryck:
St John's Hospital
Scenario 2: Du vill skapa ett gemener användarnamn från för- och efternamn.
Målattribut: mailNickname
ToLower(NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))))
Exempel:
- Indatavärden: [PreferredFirstName] = "José", [PreferredLastName] = "García-López"
-
Utdata för uttryck:
jose.garcia-lopez
Landsspecifik namngivningslogik
Scenario 1: Du måste tillämpa olika namngivningskonventioner baserat på användarens land (till exempel "Sista, Första" för vissa länder).
Målattribut: displayName, cn
Switch([CountryReferenceTwoLetter],
Join(" ", [PreferredFirstName], [PreferredLastName]),
"HU", Join(",", [PreferredLastName], [PreferredFirstName]),
"JP", Join(",", [PreferredLastName], [PreferredFirstName]),
"KR", Join(",", [PreferredLastName], [PreferredFirstName])
)
Exempel:
- Indatavärden: [CountryReferenceTwoLetter] = "JP", [PreferredFirstName] = "Hiroshi", [PreferredLastName] = "Tanaka"
-
Utdata från uttryck:
Tanaka,Hiroshi(japansk namngivningskonvention) - Alternativa indata: [CountryReferenceTwoLetter] = "US", [PreferredFirstName] = "John", [PreferredLastName] = "Smith"
-
Alternativa utdata:
John Smith(standardkonvention för västerländsk namngivning)
Generering av e-postadress
Grundläggande e-postgenerering
Scenario 1: Du vill skapa en e-postadress genom att ansluta till förnamn och efternamn, ta bort blanksteg och specialtecken och lägga till en domän.
Målattribut: e-post
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com")
Exempel:
- Indatavärden: [PreferredFirstName] = "María", [PreferredLastName] = "José González"
-
Utdata för uttryck:
maria.josegonzalez@contoso.com
Scenario 2: Du måste hantera specialtecken som citattecken och kommatecken i namn när du genererar e-postadresser.
Målattribut: 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")
)
Exempel:
- Indatavärden: [PreferredFirstName] = "Mary-Ann", [PreferredLastName] = "O'Connor"
-
Utdata för uttryck:
maryann.oconnor@contoso.com(ellerm.oconnor@contoso.comom det första alternativet tas, ellerma.oconnor@contoso.comom de två första tas)
Företagsspecifika e-postdomäner
Scenario 1: Du har flera företag och måste generera e-postadresser med olika domänsuffix baserat på företaget.
Målattribut: e-post
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")
)
Exempel:
- Indatavärden: [Företag] = "Fabrikam", [FirstName] = "John", [LastName] = "Smith"
-
Utdata för uttryck:
john.smith@fabrikam.com - Alternativa indata: [Company] = "Woodgrove", [FirstName] = "Sarah", [LastName] = "Johnson"
-
Alternativa utdata:
s.johnson@woodgrove.com
ProxyAddresses-konfiguration
Scenario 1: Du måste ange flera proxyadresser för Exchange, inklusive primära och sekundära SMTP-adresser.
Målattribut: 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"))
), ","
)
Exempel:
- Indatavärden: [PreferredFirstName] = "Michael", [PreferredLastName] = "Brown"
-
Utdata för uttryck:
["smtp:michael.brown@contoso.mail.onmicrosoft.com", "smtp:michael.brown@contoso.onmicrosoft.com", "SMTP:michael.brown@contoso.com"]
Bearbetning av telefonnummer
Dessa uttrycksmappningar kan användas i Workday Writeback-programmet.
Parsning av internationellt telefonnummer
Scenario 1: Du har telefonnummer i internationellt format (+1 737-626-8331) och behöver bara extrahera telefonnumret utan landskoden.
Målattribut: telephoneNumber
Replace(Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${phoneNumber}", , ), ,"[()\\s-]+", ,"", , )
Exempel:
- Indatavärden: [telephoneNumber] = "+1 737-626-8331"
-
Utdata för uttryck:
7376268331
Scenario 2: Du måste extrahera landskoden från ett telefonnummer för att fastställa landet i katalogsyfte.
Målattribut: c
Switch(Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${isdCode}", , ), "USA",
"1", "USA",
"44", "GBR",
"49", "DEU"
)
Exempel:
- Indatavärden: [telephoneNumber] = "+44 20 7946 0958"
-
Utdata för uttryck:
GBR - Alternativ inmatning: [telephoneNumber] = "+1 555-123-4567"
-
Alternativa utdata:
USA
Scenario 3: Du måste skriva tillbaka det telefonnummer som Microsoft Teams genererar och anger i Microsoft Entra-ID (till exempel +4926180001111). I det här telefonnumret finns det inget utrymme mellan CountryCode och det faktiska telefonnumret. Du kan använda följande regex-parsningsmekanism för att extrahera landskoder som är relevanta för din organisation och använda den för att ange Workday CountryCodeName.
Målattribut: 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")
Exempel:
- Indatavärden: [telephoneNumber] = "+493012345678"
-
Utdata för uttryck:
GER - Alternativa indata: [telephoneNumber] = "+919876543210"
-
Alternativa utdata:
IND - Alternativa indata: [telephoneNumber] = "+15551234567"
-
Alternativa utdata:
USA
Formatering av telefonnummer för olika system
Scenario 1: Du måste bearbeta telefonnummer som innehåller tillägg (till exempel "+1 (206) 291-8163 x8125").
Målattribut: telephoneNumber
Replace(Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.* )[x](?<extension>.*)", , "${phoneNumber}", , ), ,"[()\\s-]+", ,"", , )
Exempel:
- Indatavärden: [telephoneNumber] = "+1 (206) 291-8163 x8125"
-
Utdata för uttryck:
2062918163
Scenario 2: Du vill extrahera tillägget från ett telefonnummer.
Målattribut: extensionAttribute1
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.* )[x](?<extension>.*)", , "${extension}", , )
Exempel:
- Indatavärden: [telephoneNumber] = "+1 (206) 291-8163 x8125"
-
Utdata för uttryck:
8125
Kontostatuslogik för Active Directory
Uttrycken i det här avsnittet gäller för attributet accountDisabled som ingår i "Workday to on-premises Active Directory user provisioning app". Om du vill ange attributet accountEnabled som är en del av "Workday to Microsoft Entra ID user provisioning app" (Användaretableringsapp för Microsoft Entra-ID) läser du avsnittet Kontostatuslogik för Microsoft Entra-ID.
Grundläggande kontostatushantering
Scenario 1: Du vill inaktivera lokala Active Directory-konton för användare som inte är aktiva i Workday.
Målattribut: accountDisabled
Switch([Active], , "1", "False", "0", "True")
Exempel:
- Indatavärden: [Active] = "1"
-
Utdata för uttryck:
False(konto aktiverat) - Alternativa indata: [Aktiv] = "0"
-
Alternativa utdata:
True(kontot är inaktiverat)
Återanställ bearbetning
Scenario 1: Du behöver scenario 1: Du behöver hantera återanställningsscenarier där konton endast ska aktiveras på eller efter anställningsdatumet.
Målattribut: accountDisabled
Switch([Active], ,
"1", IIF([StatusRehire]=1, IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, "False", "True"), "False"),
"0", "True")
Exempel:
- Indatavärden: [Active] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-08-15" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
True(kontot har inaktiverats fram till anställningsdatumet) - Alternativa indata: [Active] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-07-15"
-
Alternativa utdata:
False(kontot har aktiverats när anställningsdatumet har passerat)
Skapa föruthyrningskonto
Scenario 1: Du vill skapa konton för framtida anställningar men behålla dem inaktiverade till 14 dagar före startdatumet.
Målattribut: accountDisabled
Switch([Active], , "1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) <= 14, "False", "True"), "0", "True")
Exempel:
- Indatavärden: [Active] = "1", [StatusHireDate] = "2025-08-10" (aktuellt datum: 2025-07-30)
-
Utdata från uttryck:
False(kontot aktiveras som anställningsdatum är inom 14 dagar) - Alternativa indata: [Active] = "1", [StatusHireDate] = "2025-09-15"
-
Alternativa utdata:
True(kontot har inaktiverats eftersom anställningsdatumet är mer än 14 dagar bort)
Hantering av anställningsåterstingar
Scenario 1: Du måste hantera scenarier som återkallas när du anger accountDisabled attributet. Du vill implementera logiken:
- Om avslutad = 1 i arbetsdagen sedan accountDisabled = True
- Om återkallad = 1 i arbetsdagen sedan accountDisabled = True
- Om Aktiv =1 i arbetsdagen då
- om
- HireDate är mer än sju dagar i framtiden och sedan accountDisabled = True (inaktivera kontot)
- HireDate är <= sju dagar i framtiden och sedan accountDisabled = False (aktivera kontot)
- om
- Om Aktiv = 0 sedan accountDisabled = True
Målattribut: 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"
)
)
)
Exempel:
- Indatavärden: [Terminated] = "1", [Active] = "1", [StatusHireDate] = "2025-08-15"
-
Utdata för uttryck:
True(kontot har inaktiverats på grund av avslutning) - Alternativa indata: [Terminated] = "0", [Rescinded] = "1", [Active] = "1"
-
Alternativa utdata:
True(kontot har inaktiverats på grund av återkallande) - Alternativa indata: [Terminated] = "0", [Rescinded] = "0", [Active] = "1", [StatusHireDate] = "2025-08-15" (aktuellt datum: 2025-07-30)
-
Alternativa utdata:
True(kontot har inaktiverats eftersom anställningsdatumet är mer än 7 dagar bort) - Alternativa indata: [Terminated] = "0", [Rescinded] = "0", [Active] = "1", [StatusHireDate] = "2025-08-05"
-
Alternativa utdata:
False(kontot aktiveras som anställningsdatum är inom 7 dagar)
Kontostatuslogik för Microsoft Entra-ID
Uttrycken i det här avsnittet gäller för attributet accountEnabled som ingår i "Workday to Microsoft Entra ID user provisioning app". Om du vill ange attributet accountDisabled som är en del av "Workday till lokal Active Directory-användaretableringsapp" läser du avsnittet Kontostatuslogik för Active Directory.
Grundläggande kontostatushantering
Scenario 1: Du vill inaktivera Microsoft Entra-ID-konton för användare som inte är aktiva i Workday.
Målattribut: accountEnabled
Switch([Active], , "1", "True", "0", "False")
Exempel:
- Indatavärden: [Active] = "1"
-
Utdata för uttryck:
True(konto aktiverat) - Alternativa indata: [Aktiv] = "0"
-
Alternativa utdata:
False(kontot är inaktiverat)
Återanställ bearbetning
Scenario 1: Du behöver hantera återanställningsscenarier där konton endast ska aktiveras på eller efter anställningsdatumet.
Målattribut: accountEnabled
Switch([Active], ,
"1", IIF([StatusRehire]=1, IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, "True", "False"), "True"),
"0", "False")
Exempel:
- Indatavärden: [Active] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-08-15" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
False(kontot har inaktiverats fram till anställningsdatumet) - Alternativa indata: [Active] = "1", [StatusRehire] = "1", [StatusHireDate] = "2025-07-15"
-
Alternativa utdata:
True(kontot har aktiverats när anställningsdatumet har passerat)
Skapa föruthyrningskonto
Scenario 1: Du vill skapa konton för framtida anställningar men behålla dem inaktiverade till 14 dagar före startdatumet.
Målattribut: accountEnabled
Switch([Active], , "1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) <= 14, "True", "False"), "0", "False")
Exempel:
- Indatavärden: [Active] = "1", [StatusHireDate] = "2025-08-10" (aktuellt datum: 2025-07-30)
-
Utdata från uttryck:
True(kontot aktiveras som anställningsdatum är inom 14 dagar) - Alternativa indata: [Active] = "1", [StatusHireDate] = "2025-09-15"
-
Alternativa utdata:
False(kontot har inaktiverats eftersom anställningsdatumet är mer än 14 dagar bort)
Datumfunktioner
Datumformatering och konvertering
Scenario 1: Du måste konvertera ett slutdatum för Workday-kontraktet till Active Directory-format för attributet accountExpires, så kontot upphör att gälla på kontraktets slutdatum.
Målattribut: accountExpires
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), "T23:59:59-08:00"))
Exempel:
- Indatavärden: [StatusHireDate] = "2025-12-31"
-
Utdata för uttryck:
133835135990000000(numerisk representation av 2025-12-31T23:59:59-07:00)
Scenario 2: Du vill ange ett kontos förfallodatum fem år från anställningsdatumet.
Målattribut: accountExpires
NumFromDate(Join("",FormatDateTime(DateAdd("yyyy", 5, CDate([StatusHireDate])), , "yyyy-MM-dd", "yyyy-MM-dd")," 23:59:59-05:00"))
Exempel:
- Indatavärden: [StatusHireDate] = "2025-01-15"
-
Utdata för uttryck:
139418879990000000(numerisk representation av 2030-01-15 23:59:59-05:00)
Villkorsstyrd datumbaserad logik
Scenario 1: Du vill endast skicka avdelningsinformation om medarbetaren har börjat arbeta (anställningsdatumet har passerat).
Målattribut: avdelning
IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, [Department], IgnoreAttributeFlow)
Exempel:
- Indatavärden: [StatusHireDate] = "2025-07-15", [Avdelning] = "Engineering" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
Engineering(anställningsdatumet har passerat) - Alternativa indata: [StatusHireDate] = "2025-08-15", [Avdelning] = "Marknadsföring"
-
Alternativa utdata:
IgnoreAttributeFlow(anställningsdatumet är i framtiden)
Scenario 2: Du behöver bara skapa användarobjekt om anställningsdatumet är inom 14 dagar.
Målattribut: objectFilter
IIF(DateDiff("d", Now(), CDate([StatusHireDate])) <= 14, "False", IgnoreObjectFlow)
Exempel:
- Indatavärden: [StatusHireDate] = "2025-08-10" (aktuellt datum: 2025-07-30)
-
Utdata från uttryck:
False(skapa användarobjekt som anställningsdatum är inom 14 dagar) - Alternativa indata: [StatusHireDate] = "2025-09-15"
-
Alternativa utdata:
IgnoreObjectFlow(skapa inte användarobjekt eftersom anställningsdatumet är mer än 14 dagar bort)
Organisationsenhetstilldelning (OU)
Enkel OU-tilldelning
Scenario 1: Du vill placera användare i olika organisationsenheter baserat på deras stad.
Målattribut: 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"
)
Exempel:
- Indatavärden: [City] = "Seattle"
-
Utdata för uttryck:
OU=Seattle,OU=Users,DC=contoso,DC=com - Alternativa indata: [City] = "Chicago"
-
Alternativ utdata:
OU=Default,OU=Users,DC=contoso,DC=com(standard för ospecificerade städer)
Komplex organisationsenhetsstruktur
Scenario 1: Du måste skapa en komplex organisationsenhetsstruktur baserat på avdelning, kostnadsställe och land.
Målattribut: 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"
)
Exempel:
- Indatavärden: [SupervisoryOrganization] = "Engineering", [CostCenter] = "Modern Workplace", [CountryReferenceTwoLetter] = "US"
-
Utdata för uttryck:
OU=Engineering,OU=Modern Workplace,OU=USA,OU=Users,DC=contoso,DC=com - Alternativa indata: [SupervisoryOrganization] = "Sales", [CostCenter] = "Marketing", [CountryReferenceTwoLetter] = "UK"
-
Alternativa utdata:
OU=Users,DC=contoso,DC=com(standardvärden när värdena inte matchar)
Avslutad användar-OU-tilldelning
Scenario 1: Du vill flytta avslutade användare till en särskild organisationsenhet på deras uppsägningsdatum.
Målattribut: 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"
)
)
Exempel:
- Indatavärden: [StatusTerminationLastDayOfWork] = "2025-07-25", [City] = "Seattle" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
OU=Leavers,OU=Users,DC=contoso,DC=com(flyttas till Leavers OU när avslutningsdatumet har passerat) - Alternativa indata: [StatusTerminationLastDayOfWork] = "2025-08-15", [City] = "Dallas"
-
Alternativa utdata:
OU=Dallas,OU=Users,DC=contoso,DC=com(förblir i normal organisationsenhet eftersom slutdatumet är i framtiden)
Generering av slumpmässigt ID
GUID-baserad slumpmässig generation
Scenario 1: Du måste generera en slumpmässig sträng på 5 tecken som inte innehåller siffror.
Målattribut: 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", , )
)
Exempel:
- Indatavärden: Genererad GUID konverterad till Base64 (till exempel "mV8dXr...")
-
Utdata för uttryck:
mVAdX(siffror som ersätts med "A" eller med "B"/"C" om det första alternativet tas)
Scenario 2: Du vill generera en slumpmässig sträng som börjar med "D" följt av 4 alfabetiska tecken.
Målattribut: 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}", ,))
)
Exempel:
- Indatavärden: Genererad GUID konverterad till Base64 som innehåller alfabetisk sekvens "mVdX"
-
Utdata för uttryck:
DMVDX(eller annorlunda om det första alternativet tas)
Generering av numeriskt ID
Scenario 1: Du måste generera ett slumpmässigt 4-siffrigt tal från ett GUID.
Målattribut: 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}", ,)
)
Exempel:
- Indatavärden: Genererad GUID som "a1b2c3d4-e5f6-7890-1234-567890abcdef"
-
Utdata från uttryck:
D7890(ellerD1234,D5678osv. beroende på vilken 4-siffrig sekvens som matchas först)
Namnbearbetning
Generering av visningsnamn
Scenario 1: Du vill skapa ett visningsnamn i formatet "Senaste, Första".
Målattribut: displayName
Join(", ", [PreferredLastName], [PreferredFirstName])
Exempel:
- Indatavärden: [PreferredLastName] = "Smith", [PreferredFirstName] = "John"
-
Utdata för uttryck:
Smith, John
Scenario 2: Du måste skapa ett visningsnamn som innehåller mellan- och medarbetar-ID.
Målattribut: displayName
Join("", [PreferredLastName], ",", [PreferredFirstName], " ", Mid([PreferredMiddleName],1,1), "-", [WorkerID])
Exempel:
- Indatavärden: [PreferredLastName] = "Johnson", [PreferredFirstName] = "Sarah", [PreferredMiddleName] = "Elizabeth", [WorkerID] = "12345"
-
Utdata för uttryck:
Johnson,Sarah E-12345
Generering av eget namn (CN) med unikhet
Scenario 1: Du vill generera ett unikt gemensamt namn med återställningsalternativ för dubbletter.
Målattribut: cn
SelectUniqueValue(
NormalizeDiacritics(Join(" ", [PreferredFirstName], [PreferredLastName])),
NormalizeDiacritics(Join(" ", [PreferredFirstName], Mid([PreferredMiddleName],1,1), [PreferredLastName])),
NormalizeDiacritics(Join(" ", [PreferredFirstName], [PreferredMiddleName], [PreferredLastName]))
)
Exempel:
- Indatavärden: [PreferredFirstName] = "José", [PreferredLastName] = "García", [PreferredMiddleName] = "Antonio"
-
Utdata för uttryck:
Jose Garcia(ellerJose A Garciaom det första alternativet tas, ellerJose Antonio Garciaom de två första tas)
SamAccountName-generering
Scenario 1: Du vill skapa ett samAccountName med 20 tecken med första initiala och efternamn med numeriska suffix för dubbletter.
Målattribut: 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")
)
Exempel:
- Indatavärden: [FirstName] = "María José", [LastName] = "González-López"
-
Utdata för uttryck:
mgonzalezlopez(ellermgonzalezlopez1om det första alternativet tas, ellermgonzalezlopez2om de två första tas)
Avancerade scenarier
Dölj från logik för adresslistor
I det här avsnittet beskrivs hur du anger det booleska attributet msExchHideFromAddressLists. Använd alla versaler "TRUE" eller "FALSE" för att ange det booleska attributet. Om du använder andra värden resulterar det i ett HybridSynchronizationActiveDirectoryInvalidParameter fel.
Scenario 1: Du vill ange msExchHideFromAddressLists baserat på den aktiva kontostatusen för Workday-användaren.
Målattribut: msExchHideFromAddressLists
Switch([Active], , "1", "FALSE", "0", "TRUE")
Exempel:
- Indatavärden: [Active] = "0"
-
Utdata från uttryck:
TRUE(dölj från adresslistor eftersom användaren är inaktiv i Workday) - Alternativa indata: [Aktiv] = "1"
-
Alternativa utdata:
FALSE(visas i adresslistor när användaren är aktiv i Workday)
Scenario 2: Du vill ange msExchHideFromAddressLists baserat på anställningsdatumet för arbetaren. Visa användaren i Exchange-adresslistan först efter anställningsdatumet.
Målattribut: msExchHideFromAddressLists
IIF(DateDiff("d", Now(), CDate([StatusHireDate])) >= 0, "TRUE", "FALSE")
Exempel:
- Indatavärden: [StatusHireDate] = "2025-07-31" (aktuellt datum: 2025-07-30)
-
Utdata från uttryck:
TRUE(dölj från adresslistor eftersom anställningsdatumet är i framtiden) - Alternativa indata: [StatusHireDate] = "2025-07-31" (aktuellt datum: 2025-08-01)
-
Alternativa utdata:
FALSE(visas i adresslistor som anställningsdatum är tidigare)
Inställning för flervärdesattribut
Scenario 1: Du måste ange flera värden för attributet msExchPoliciesExcluded i Active Directory.
Målattribut: msExchPoliciesExcluded
Split(
Join(",","a8cccada-a108-47ae-bf9a-f130499aa4cb","{26491cfc-9e50-4857-861b-0cb8df22b5d7}"),
","
)
Exempel:
- Indatavärden: Statiska GUID-värden
-
Utdata för uttryck:
["a8cccada-a108-47ae-bf9a-f130499aa4cb", "{26491cfc-9e50-4857-861b-0cb8df22b5d7}"]
Tillbakaskrivningsscenarier
Scenario 1: Du vill bara skriva tillbaka användarnamnet till Workday om anställningsdatumet har passerat.
Målattribut: Användarnamn
IgnoreFlowIfNullOrEmpty(IIF(DateDiff("d", Now(), CDate([employeeHireDate])) > 0, "", [userPrincipalName]))
Exempel:
- Indatavärden: [employeeHireDate] = "2025-07-15", [userPrincipalName] = "user@contoso.com" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
user@contoso.com(anställningsdatumet har passerat, skriv tillbaka användarnamnet) - Alternativa indata: [employeeHireDate] = "2025-08-15", [userPrincipalName] = "future@contoso.com"
- Alternativa utdata: (tom – ignoreras, anställningsdatumet är i framtiden)
Metodtips
Använd alltid SelectUniqueValue för attribut som kräver unikhet (t.ex. UPN, samAccountName, e-post).
Hantera null- och tomma värden med hjälp av funktioner som
IsNullOrEmpty,IsPresentellerSwitch-instruktioner.Använd NormalizeDiacritics när du bearbetar namn med specialtecken för att säkerställa kompatibilitet.
Testa datumlogik noggrant eftersom olika tidszoner och datumformat kan påverka resultatet.
Använd IgnoreFlowIfNullOrEmpty när du vill hoppa över attributuppdateringar för tomma värden.
Överväg att använda Switch i stället för kapslade IIF-instruktioner för bättre läsbarhet.
Verifiera alltid reguljära uttryck i en regex-testare online innan du implementerar.