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 SuccessFactors voor microsoft Entra ID-inrichting van gebruikers. Met deze functies kunt u gegevens van SuccessFactors transformeren en toewijzen om de juiste gebruikerskenmerken te maken in Microsoft Entra-id.
Inhoudsopgave
- Tekenreeksmanipulatiefuncties
- E-mailadres genereren
- Accountbeheerlogica
- Datumfuncties en vervaldatum van account
- Toewijzing van organisatie-eenheid (OE)
- Naamverwerking en weergavenamen
- SamAccountName generation
- ProxyAddresses-configuratie
- Verwerking van telefoonnummers
- Land- en locatielogica
- Classificatie van werknemers en afhankelijke werknemers
- Geavanceerde scenario's
Tekenreeksmanipulatiefuncties
Eenvoudige tekenreeksbewerkingen
Scenario 1: U wilt een persoons-id met voorloopnullen gebruiken om een tekenreeks van 8 tekens te maken.
Doelkenmerk: employeeId
Replace(Join("","00000000",[personIdExternal]), ,"(.*?)(?<id>.{0,8})$", ,"${id}", ,)
Voorbeeld:
- Invoerwaarden: [personIdExternal] = "12345"
-
Uitvoer van expressie:
00012345
Scenario 2: U moet kostenplaats met voorloopnullen opvultekens gebruiken om deze tien tekens te maken.
Doelkenmerk: extensionAttribute1
Replace(Join("","0000000000",[costCenterId]), ,"(.*?)(?<id>.{0,10})$", ,"${id}", ,)
Voorbeeld:
- Invoerwaarden: [costCenterId] = "567"
-
Uitvoer van expressie:
0000000567
Scenario 3: U wilt een werknemer-id maken door een voorvoegsel toe te voegen aan een opgevuld werknemernummer.
Doelkenmerk: employeeId
Append("05",Replace(Join("","000000",[employeeId]), ,"(.*?)(?<id>.{0,6})$", ,"${id}", ,))
Voorbeeld:
- Invoerwaarden: [employeeId] = "789"
-
Uitvoer van expressie:
05000789
Conversie van tekstcases
Scenario 1: U moet namen van alle hoofdletters converteren naar de juiste hoofdletter (titelcase).
Doelkenmerk: sn
Join("",Mid([lastName],1,1),ToLower(Mid([lastName],2,64)))
Voorbeeld:
- Invoerwaarden: [achternaam] = "JOHNSON"
-
Uitvoer van expressie:
Johnson
Scenario 2: U wilt een weergavenaam maken met de juiste hoofdletteropmaak.
Doelkenmerk: displayName
Join(", ", Join("",Mid([lastName],1,1),ToLower(Mid([lastName],2,64))), Join("",Mid([firstName],1,1),ToLower(Mid([firstName],2,64))))
Voorbeeld:
- Invoerwaarden: [lastName] = "SMITH", [firstName] = "JOHN"
-
Uitvoer van expressie:
Smith, John
Scenario 3: U moet namen afhandelen met spaties door spaties te vervangen door punten.
Doelkenmerk: givenName
Replace([firstName]," ", , ,".", , )
Voorbeeld:
- Invoerwaarden: [firstName] = "Mary Ann"
-
Uitvoer van expressie:
Mary.Ann
E-mailadres genereren
Eenvoudige e-mailgeneratie
Scenario 1: U wilt e-mailadressen genereren met een voornaam en achternaam met bedrijfsspecifieke domeinen.
Doelkenmerk: e-mail
SelectUniqueValue(
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")
),
Switch([company],
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], Mid([middleName],1,1), [lastName]))), "contoso.com"),
"Contoso", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], Mid([middleName],1,1), [lastName]))), "contoso.com"),
"Fabrikam", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], Mid([middleName],1,1), [lastName]))), "fabrikam.com"),
"Woodgrove", Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([firstName],1,1), Mid([middleName],1,1), [lastName]))), "woodgrove.com")
)
)
Voorbeeld:
- Invoerwaarden: [bedrijf] = "Contoso", [firstName] = "John", [lastName] = "Smith", [middleName] = "Michael"
-
Uitvoer van expressie:
john.smith@contoso.com(ofjohn.m.smith@contoso.comals de eerste optie wordt gebruikt)
E-mailgeneratie op basis van een werknemergroep
Scenario 1: U wilt verschillende e-mailindelingen genereren op basis van de classificatie van werknemers (permanent versus tijdelijk).
Doelkenmerk: userPrincipalName
StripSpaces(NormalizeDiacritics(Switch([custom06],
Join("", [firstName], ".", [lastName], "@ltts.com"),
"Temporary", Join("", [firstName], ".", [lastName], "_ext@ltts.com"),
"External", Join("", [firstName], ".", [lastName], "_ext@ltts.com"),
"Permanent", Join("", [firstName], ".", [lastName], "@ltts.com")
)))
Voorbeeld:
- Invoerwaarden: [custom06] = "Tijdelijk", [firstName] = "Sarah", [achternaam] = "Wilson"
-
Uitvoer van expressie:
sarah.wilson_ext@ltts.com
Validatie van bedrijfsdomein
Scenario 1: U wilt alleen e-mailadressen laten stromen die deel uitmaken van een specifiek bedrijfsdomein.
Doelkenmerk: e-mail
IgnoreFlowIfNullOrEmpty(IIF(InStr([emailAddress],"@contoso.com")=0,"",[emailAddress]))
Voorbeeld:
- Invoerwaarden: [emailAddress] = "john.doe@contoso.com"
-
Uitvoer van expressie:
john.doe@contoso.com - Alternatieve invoer: [emailAddress] = "john.doe@external.com"
- Alternatieve uitvoer: (leeg - genegeerd)
Bestaande e-mailbehoud
Scenario 1: U wilt bestaande e-mail van SuccessFactors gebruiken voor bepaalde afdelingen, maar nieuwe voor anderen genereren.
Doelkenmerk: userPrincipalName
SelectUniqueValue(
Switch([divisionId],
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"),
"8900", [email]
),
Join("1@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"),
Join("2@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com")
)
Voorbeeld:
- Invoerwaarden: [divisionId] = "8900", [email] = "existing.user@company.com", [firstName] = "Mike", [achternaam] = "Brown"
-
Uitvoer van expressie:
existing.user@company.com - Alternatieve invoer: [divisionId] = "1200", [firstName] = "Mike", [achternaam] = "Brown"
-
Alternatieve uitvoer:
mike.brown@contoso.com
Accountbeheerlogica
Basisaccountstatus
Scenario 1: U wilt bepalen of een account moet worden uitgeschakeld op basis van de arbeidsstatus.
Doelkenmerk: accountDisabled
Switch([emplStatus], "False", "741", "False", "749", "True", "746", "True")
Voorbeeld:
- Invoerwaarden: [emplStatus] = "741"
-
Uitvoer van expressie:
False(account ingeschakeld) - Alternatieve invoer: [emplStatus] = "746"
-
Alternatieve uitvoer:
True(account uitgeschakeld)
Verbergen in adreslijstenlogica
Scenario 1: U moet het kenmerk msExchHideFromAddressLists instellen op basis van begin- en einddatums.
Doelkenmerk: msExchHideFromAddressLists
IIF(DateDiff("d", CDate(IIF(IsPresent([startDate]), [startDate], DateAdd("d", "10", Now()))), Now()) >= -1, IIF(DateDiff("d", Now(), CDate(IIF(IsPresent([endDate]), [endDate], DateAdd("d", "1", Now())))) >= 0, "FALSE", "TRUE"), "TRUE")
Voorbeeld:
- Invoerwaarden: [startDate] = "2025-01-15", [einddatum] = "2025-12-31" (huidige datum: 2025-07-30)
-
Uitvoer van expressie:
FALSE(niet verborgen in adreslijsten) - Alternatieve invoer: [startDate] = "2025-01-15", [endDate] = "2025-06-30"
-
Alternatieve uitvoer:
TRUE(verborgen in adreslijsten)
Complexe logica voor werknemersstatus
Scenario 1: U hebt een complexe vereiste om accounts uit te schakelen op basis van aangepaste velden en huurdatums.
Doelkenmerk: accountEnabled
Switch([empNavCustomString3], "True",
"62220", Switch([cust_hiredate],
IIF(DateDiff("d", CDate([cust_hiredate]), Now()) = 3,
Switch([cust_customDate67],
IIF(DateDiff("d", CDate([cust_customDate67]), Now())=0, "False", "True"),
"", "False"
), "True"
),
"", "True"
))
Voorbeeld:
- Invoerwaarden: [empNavCustomString3] = "62220", [cust_hiredate] = "2025-07-27", [cust_customDate67] = "2025-07-30" (huidige datum: 2025-07-30)
-
Uitvoer van expressie:
False(account ingeschakeld) - Alternatieve invoer: [empNavCustomString3] = "62220", [cust_hiredate] = "2025-07-27", [cust_customDate67] = "2025-07-29"
-
Alternatieve uitvoer:
True(account uitgeschakeld)
Datumfuncties en vervaldatum van account
Vervaldatum van basisaccount
Scenario 1: U wilt de vervaldatum van het account instellen op basis van de einddatum van SuccessFactors.
Doelkenmerk: accountExpires
Switch([endDate],
NumFromDate(Join("", FormatDateTime([endDate], "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), " 23:59:59-05:00")),
"", "9223372036854775807"
)
Voorbeeld:
- Invoerwaarden: [endDate] = "31-12-2025 12:00:00 am"
-
Uitvoer van expressie:
133835135990000000(numerieke weergave van 2025-12-31 23:59:59-05:00) - Alternatieve invoer: [endDate] = "" (leeg)
-
Alternatieve uitvoer:
9223372036854775807(verloopt nooit)
Verlooptijd op basis van werktype
Scenario 1: U moet verschillende verloopregels voor accounts instellen op basis van het type werkgelegenheid (permanent versus aannemer).
Doelkenmerk: accountExpires
Switch([employmentType],
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-05:00")),
"PM", NumFromDate(Join("",FormatDateTime(DateAdd("yyyy", 60, CDate([DOB])), ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-05:00")),
"CON", NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-05:00"))
)
Voorbeeld:
- Invoerwaarden: [employmentType] = "PM", [DOB] = "1-15-1990 12:00:00 uur"
-
Uitvoer van expressie:
158488415990000000(numerieke weergave van 2050-01-15 23:59:59-05:00, 60 jaar na geboorte) - Alternatieve invoer: [employmentType] = "CON", [endDate] = "12/31/2025 12:00:00 AM"
-
Alternatieve uitvoer:
133835135990000000(numerieke weergave van 2025-12-31 23:59:59-05:00)
Verlopen van account op basis van reden van gebeurtenis
Scenario 1: U wilt de vervaldatum van accounts instellen op basis van specifieke beëindigings- en ontslagdatums.
Doelkenmerk: accountExpires
Switch([event],
IIF(IsPresent([latestTerminationDate]), NumFromDate(Join("", FormatDateTime([latestTerminationDate], , "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), " 23:59:59-08:00")), "9223372036854775807"),
"SEVUNSATP", NumFromDate(Join("", FormatDateTime([severanceStartDate], , "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), " 23:59:59-08:00")),
"SEVPOSELIM", NumFromDate(Join("", FormatDateTime([severanceStartDate], , "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), " 23:59:59-08:00")),
"POSELIM", NumFromDate(Join("", FormatDateTime([severanceStartDate], , "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), " 23:59:59-08:00"))
)
Voorbeeld:
- Invoerwaarden: [gebeurtenis] = "SEVUNSATP", [severanceStartDate] = "8/15/2025 12:00:00 AM"
-
Uitvoer van expressie:
133877247990000000(numerieke weergave van 2025-08-15 23:59:59-08:00) - Alternatieve invoer: [gebeurtenis] = "REGULAR", [latestTerminationDate] = "9/30/2025 12:00:00 AM"
-
Alternatieve uitvoer:
133886207990000000(numerieke weergave van 2025-09-30 23:59:59-08:00)
Verwerking van datumnotatie
Scenario 1: U moet ongeldige datums verwerken, zoals '12-31-9999' die fouten veroorzaken in NumFromDate.
Doelkenmerk: accountExpires
Switch([endDate],
NumFromDate(Join("", FormatDateTime([endDate], "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), "T23:59:59-04:00")),
"12/31/9999 12:00:00 AM", NumFromDate("2099-12-31T23:59:59-04:00")
)
Voorbeeld:
- Invoerwaarden: [endDate] = "31-12-9999 12:00:00 am"
-
Uitvoer van expressie:
441481535990000000(numerieke weergave van 2099-12-31T23:59:59-04:00) - Alternatieve invoer: [endDate] = "15-8-2025 12:00:00 am"
-
Alternatieve uitvoer:
133877283990000000(numerieke weergave van 2025-08-15T23:59:59-04:00)
Toewijzing van organisatie-eenheid (OE)
OE-toewijzing op basis van afdeling
Scenario 1: U wilt gebruikers in verschillende organisatie-eenheden plaatsen op basis van hun afdeling.
Doelkenmerk: parentDistinguishedName
Switch([department], "OU=SuccessFactors,DC=contoso,DC=com",
"Engineering SG", "OU=Engineering,OU=SuccessFactors,DC=contoso,DC=com",
"Shared Services", "OU=Shared Services,OU=SuccessFactors,DC=contoso,DC=com",
"Retail - Finance", "OU=Retail Finance,OU=SuccessFactors,DC=contoso,DC=com",
"Information Technology BR", "OU=Information Technology,OU=SuccessFactors,DC=contoso,DC=com",
"Development", "OU=Development,OU=SuccessFactors,DC=contoso,DC=com"
)
Voorbeeld:
- Invoerwaarden: [afdeling] = "Technische SG"
-
Uitvoer van expressie:
OU=Engineering,OU=SuccessFactors,DC=contoso,DC=com - Alternatieve invoer: [afdeling] = "Marketing"
-
Alternatieve uitvoer:
OU=SuccessFactors,DC=contoso,DC=com(standaard)
Toewijzing van organisatie-eenheid op basis van werkstatus
Scenario 1: U moet gebruikers toewijzen aan verschillende organisatie-eenheden op basis van hun arbeidsstatus en -locatie.
Doelkenmerk: parentDistinguishedName
Join("",
Switch([emplStatus], "OU=SFProvisoinngUsers",
"741", Switch([empJobNavCustomString13],
"OU=SFProvisoinngUsers",
"LOC1016", "OU=Mysore",
"LOC1019", "OU=Baroda",
"LOC1015", Switch([departmentId],
"OU=Bangalore",
"DU1026","OU=IT,OU=Bangalore",
"DU1025","OU=IT,OU=Bangalore"
)
),
"749", Switch([empJobNavCustomString13],
"OU=O365-NoSYNC,OU=SFProvisoinngUsers",
"LOC1016", "OU=O365-NoSYNC,OU=Mysore",
"LOC1019", "OU=O365-NoSYNC,OU=Baroda",
"LOC1015", "OU=O365-NoSYNC,OU=Bangalore"
)
),
",DC=contoso,DC=com")
Voorbeeld:
- Invoerwaarden: [emplStatus] = "741", [empJobNavCustomString13] = "LOC1015", [departmentId] = "DU1026"
-
Uitvoer van expressie:
OU=IT,OU=Bangalore,DC=contoso,DC=com - Alternatieve invoer: [emplStatus] = "749", [empJobNavCustomString13] = "LOC1016"
-
Alternatieve uitvoer:
OU=O365-NoSYNC,OU=Mysore,DC=contoso,DC=com - Alternatieve invoer: [emplStatus] = "741", [empJobNavCustomString13] = "LOC9999" (niet gedefinieerd)
-
Alternatieve uitvoer:
OU=SFProvisoinngUsers,DC=contoso,DC=com(standaard)
OE-toewijzing op basis van land
Scenario 1: U wilt gebruikers in verschillende organisatie-eenheden plaatsen op basis van hun land met een uitgeschakelde organisatie-eenheid voor inactieve gebruikers.
Doelkenmerk: parentDistinguishedName
Switch([activeEmploymentsCount],
Switch([country], "OU=Accounts,DC=corp,DC=contoso,DC=com",
"Mexico", "OU=Mexico,OU=Accounts,DC=corp,DC=contoso,DC=com",
"Sweden", "OU=Sweden,OU=Accounts,DC=corp,DC=contoso,DC=com",
"Colombia", "OU=Internal Accounts,OU=Colombia,OU=Accounts,DC=corp,DC=contoso,DC=com",
"Brazil", "OU=Internal Accounts,OU=Brazil,OU=Accounts,DC=corp,DC=contoso,DC=com"
),
"0", "OU=DisabledAccounts,OU=Accounts,DC=corp,DC=contoso,DC=com"
)
Voorbeeld:
- Invoerwaarden: [activeEmploymentsCount] = "1", [land] = "Mexico"
-
Uitvoer van expressie:
OU=Mexico,OU=Accounts,DC=corp,DC=contoso,DC=com - Alternatieve invoer: [activeEmploymentsCount] = "0", [land] = "Zweden"
-
Alternatieve uitvoer:
OU=DisabledAccounts,OU=Accounts,DC=corp,DC=contoso,DC=com(uitgeschakelde gebruikers gaan naar speciale organisatie-eenheid, ongeacht het land) - Alternatieve invoer: [activeEmploymentsCount] = "1", [land] = "Duitsland"
-
Alternatieve uitvoer:
OU=Accounts,DC=corp,DC=contoso,DC=com(standaard-OE voor landen die niet specifiek zijn gedefinieerd)
Naamverwerking en weergavenamen
Algemene naamgeneratie (CN)
Scenario 1: U wilt een unieke algemene naam genereren met terugvalopties voor duplicaten.
Doelkenmerk: cn
SelectUniqueValue(
NormalizeDiacritics(Join(" ", [firstName], [lastName])),
NormalizeDiacritics(Join(" ", [firstName], Mid([middleName],1,1), [lastName])),
NormalizeDiacritics(Join(" ", [firstName], [middleName], [lastName]))
)
Voorbeeld:
- Invoerwaarden: [firstName] = "José", [lastName] = "Garciaía", [middleName] = "Antonio"
-
Uitvoer van expressie:
Jose Garcia(ofJose A Garciaals de eerste optie wordt genomen, ofJose Antonio Garciaals de eerste twee worden genomen)
Weergavenaam met voorkeursnamen
Scenario 1: U moet een weergavenaam maken die de voorkeursnaam gebruikt wanneer deze beschikbaar is, anders terugvallen op voornaam.
Doelkenmerk: displayName
Join(", ", Join("", Mid([lastName], 1, 1), ToLower(Mid([lastName], 2, 64), )), Join("", Mid(Coalesce([preferredName], [firstName]), 1, 1), ToLower(Mid(Coalesce([preferredName], [firstName]), 2, 64), )))
Voorbeeld:
- Invoerwaarden: [lastName] = "JOHNSON", [preferredName] = "Mike", [firstName] = "Michael"
-
Uitvoer van expressie:
Johnson, Mike - Alternatieve invoer: [lastName] = "SMITH", [preferredName] = "", [firstName] = "Robert"
-
Alternatieve uitvoer:
Smith, Robert
Weergavenaam met numerieke achtervoegsels
Scenario 1: U wilt unieke weergavenamen genereren met numerieke achtervoegsels voor duplicaten.
Doelkenmerk: displayName
SelectUniqueValue(
Join("", NormalizeDiacritics(Join("", [lastName], ", ")), NormalizeDiacritics(Switch([preferredName], [preferredName], "", [firstName]))),
Join("", NormalizeDiacritics(Join("", [lastName], "2, ")), NormalizeDiacritics(Switch([preferredName], [preferredName], "", [firstName]))),
Join("", NormalizeDiacritics(Join("", [lastName], "3, ")), NormalizeDiacritics(Switch([preferredName], [preferredName], "", [firstName]))),
Join("", NormalizeDiacritics(Join("", [lastName], "4, ")), NormalizeDiacritics(Switch([preferredName], [preferredName], "", [firstName])))
)
Voorbeeld:
- Invoerwaarden: [lastName] = "Garciaía", [preferredName] = "Mike", [firstName] = "Michael"
-
Uitvoer van expressie:
Garcia, Mike(ofGarcia2, Mikeals de eerste optie wordt gebruikt, enzovoort) - Alternatieve invoer: [lastName] = "Smith", [preferredName] = "", [firstName] = "John"
-
Alternatieve uitvoer:
Smith, John(ofSmith2, Johnals de eerste optie wordt gebruikt, enzovoort)
SamAccountName generation
Basic samAccountName generation
Scenario 1: U wilt een samAccountName maken met de voor- en achternaam met de juiste tekenschoning.
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: [firstName] = "José", [lastName] = "Garciaía-Gegroepeerd"
-
Uitvoer van expressie:
jgarcialopez(ofjgarcialopez1als de eerste optie wordt genomen, ofjgarcialopez2als de eerste twee worden genomen)
SamAccountName met lengte van variabele voornaam
Scenario 1: U wilt duplicaten afhandelen door het aantal tekens uit de voornaam te verhogen.
Doelkenmerk: sAMAccountName
SelectUniqueValue(
Replace(Mid(Replace(NormalizeDiacritics(StripSpaces(Join("", Mid([firstName],1,1), [lastName]))), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 20), , "(\\.)*$", , "", , ),
Replace(Mid(Replace(NormalizeDiacritics(StripSpaces(Join("", Mid([firstName],1,2), [lastName]))), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 20), , "(\\.)*$", , "", , ),
Replace(Mid(Replace(NormalizeDiacritics(StripSpaces(Join("", Mid([firstName],1,3), [lastName]))), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 20), , "(\\.)*$", , "", , )
)
Voorbeeld:
- Invoerwaarden: [firstName] = "Christopher", [lastName] = "Anderson"
-
Uitvoer van expressie:
canderson(ofchandersonals de eerste optie wordt genomen, ofchrandersonals de eerste twee worden genomen) - Alternatieve invoer: [firstName] = "María", [lastName] = "Rodríquez-Santos"
-
Alternatieve uitvoer:
mrodriguezsantos(ofmarodriguezsantosals de eerste optie wordt genomen, ofmarrodriguezsantosals de eerste twee worden genomen)
SamAccountName van externe gebruikersnaam
Scenario 1: U wilt het gebruikersnaamgedeelte extraheren uit een externe gebruikersnaam in e-mailstijl.
Doelkenmerk: sAMAccountName
Replace(Mid(Replace(Replace([username],,"(?<id>.*)@(?<domain>.*)",,"${id}",,), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 20), , "(\\.)*$", , "", , )
Voorbeeld:
- Invoerwaarden: [gebruikersnaam] = "john.smith@external.com"
-
Uitvoer van expressie:
johnsmith
ProxyAddresses-configuratie
Basic proxyAddresses instellen
Scenario 1: U wilt meerdere proxyadressen instellen, inclusief primaire en secundaire SMTP-adressen.
Doelkenmerk: proxyAddresses
Split(
Join(",",
Append("smtp:", Join("@", NormalizeDiacritics(StripSpaces(Join("", "A", [personIdExternal]))), "contoso.mail.onmicrosoft.com")),
Append("smtp:", Join("@", NormalizeDiacritics(StripSpaces(Join("", "A", [personIdExternal]))), "contoso.com")),
Append("SMTP:", Join("@", Join(".", StripSpaces([firstName]), StripSpaces([lastName])), "contoso.com"))
),
","
)
Voorbeeld:
- Invoerwaarden: [personIdExternal] = "12345", [firstName] = "John", [lastName] = "Smith"
-
Uitvoer van expressie:
["smtp:A12345@contoso.mail.onmicrosoft.com", "smtp:A12345@contoso.com", "SMTP:John.Smith@contoso.com"]
ProxyAddresses op basis van een divisie
Scenario 1: U hebt verschillende proxyadresconfiguraties nodig op basis van de afdeling werknemers.
Doelkenmerk: proxyAddresses
Split(
Switch([divisionId],
Join(",",
Append("smtp:", Join("@", NormalizeDiacritics(StripSpaces(Join("", "A", [personIdExternal]))), "woodgrove.mail.onmicrosoft.com")),
Append("smtp:", Join("@", NormalizeDiacritics(StripSpaces(Join("", "A", [personIdExternal]))), "woodgrove.com")),
Append("SMTP:", Join("@", Join(".", StripSpaces([firstName]), StripSpaces([lastName])), "woodgrove.com"))
),
"EXEC", Join(",",
Append("smtp:", Join("@", Join(".", StripSpaces([firstName]), StripSpaces([lastName])), "contoso.com")),
Append("SMTP:", [email])
)
),
","
)
Voorbeeld:
- Invoerwaarden: [divisionId] = "STANDARD", [personIdExternal] = "67890", [voornaam] = "Sarah", [achternaam] = "Johnson"
-
Uitvoer van expressie:
["smtp:A67890@woodgrove.mail.onmicrosoft.com", "smtp:A67890@woodgrove.com", "SMTP:Sarah.Johnson@woodgrove.com"] - Alternatieve invoer: [divisionId] = "EXEC", [firstName] = "Michael", [achternaam] = "Brown", [email] = "mbrown@fabrikam.com"
-
Alternatieve uitvoer:
["smtp:Michael.Brown@contoso.com", "SMTP:mbrown@fabrikam.com"]
Bedrijfsspecifieke proxyAddresses
Scenario 1: U wilt proxyadressen genereren op basis van bedrijfsrelatie.
Doelkenmerk: proxyAddresses
SelectUniqueValue (
Switch([company],
Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com")),
"NGC", Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com")),
"CNG", Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com")),
"National Energy", Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([firstName],1,1), [lastName]))), "fabrikam.com"))
),
Switch([company],
Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], Mid([middleName],1,1), [lastName]))), "contoso.com")),
"NGC", Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], Mid([middleName],1,1), [lastName]))), "contoso.com")),
"CNG", Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], Mid([middleName],1,1), [lastName]))), "contoso.com")),
"National Energy", Append ("SMTP:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([firstName],1,1), Mid([middleName],1,1), [lastName]))), "fabrikam.com"))
)
)
Voorbeeld:
- Invoerwaarden: [bedrijf] = "NGC", [firstName] = "Trinidad", [lastName] = "Williams", [middleName] = "James"
-
Uitvoer van expressie:
SMTP:trinidad.williams@contoso.com(ofSMTP:trinidad.j.williams@contoso.comals de eerste optie wordt gebruikt) - Alternatieve invoer: [bedrijf] = "National Energy", [firstName] = "Rebecca", [lastName] = "Thompson", [middleName] = "Marie"
-
Alternatieve uitvoer:
SMTP:r.thompson@fabrikam.com(ofSMTP:r.m.thompson@fabrikam.comals de eerste optie wordt genomen) - Alternatieve invoer: [bedrijf] = "Other Company", [firstName] = "David", [lastName] = "Jones", [middleName] = "Paul"
-
Alternatieve uitvoer:
SMTP:david.jones@contoso.com(standaarddomein ofSMTP:david.p.jones@contoso.comals de eerste optie wordt gebruikt)
Verwerking van telefoonnummers
Basisextractie van telefoonnummers
Scenario 1: U wilt het telefoonnummergedeelte extraheren zonder de landcode.
Doelkenmerk: telephoneNumber
Replace(Replace([mobile], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${phoneNumber}", , ), ,"[()\\s-]+", ,"", , )
Voorbeeld:
- Invoerwaarden: [mobiel] = "+1 (555) 123-4567"
-
Uitvoer van expressie:
5551234567
Scenario 2: U moet alleen de landcode extraheren uit een telefoonnummer.
Doelkenmerk: c
Replace(Replace([mobile], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${isdCode}", , ), ,"[()\\s-]+", ,"", , )
Voorbeeld:
- Invoerwaarden: [mobiel] = "+44 20 7946 0958"
-
Uitvoer van expressie:
44
Standaardwaarden voor telefoonnummers
Scenario 1: U wilt standaardtelefoonnummers opgeven wanneer het veld leeg is.
Doelkenmerk: telephoneNumber
IIF(IsNullOrEmpty([telephoneNumber]),"000-000-0000",[telephoneNumber])
Switch([mobile],[mobile],"","000-000-0000")
Voorbeeld:
- Invoerwaarden: [telephoneNumber] = ""
-
Uitvoer van expressie:
000-000-0000 - Alternatieve invoer: [mobiel] = "555-123-4567"
-
Alternatieve uitvoer:
555-123-4567
Primaire telefoonlogica
Scenario 1: U moet bepalen welk telefoonnummer moet worden gemarkeerd als primair.
Doelkenmerk: extensionAttribute2
Switch(Join("+",Switch([businessPhoneIsPrimary],[businessPhoneIsPrimary],"","other"),Switch([cellPhoneIsPrimary],[cellPhoneIsPrimary],"","other")), "no primary phone",
"false+false", "no primary phone",
"true+false", "business phone is primary",
"false+true", "cell phone is primary",
"true+true", "business phone is primary, cell phone is primary",
"other+true", "cell phone is primary",
"other+false", "no primary phone",
"true+other", "business phone is primary",
"false+other", "no primary phone")
Voorbeeld:
- Invoerwaarden: [businessPhoneIsPrimary] = "true", [cellPhoneIsPrimary] = "false"
-
Uitvoer van expressie:
business phone is primary - Alternatieve invoer: [businessPhoneIsPrimary] = "false", [cellPhoneIsPrimary] = "true"
-
Alternatieve uitvoer:
cell phone is primary - Alternatieve invoer: [businessPhoneIsPrimary] = "", [cellPhoneIsPrimary] = "true"
-
Alternatieve uitvoer:
cell phone is primary
Land- en locatielogica
Landcodetoewijzing
Scenario 1: U wilt landnamen toewijzen aan ISO-landcodes.
Doelkenmerk: c
Switch([country], ,
"Trinidad and Tobago", "TT",
"Barbados", "BB"
)
Voorbeeld:
- Invoerwaarden: [land] = "Trinidad en Tobago"
-
Uitvoer van expressie:
TT
Scenario 2: U moet landen toewijzen aan numerieke landcodes.
Doelkenmerk: countryCode
Switch([country], ,
"Trinidad and Tobago", "780",
"Barbados", "52"
)
Voorbeeld:
- Invoerwaarden: [land] = "Einddatums"
-
Uitvoer van expressie:
52
E-maildomeinen op basis van locatie
Scenario 1: U wilt verschillende e-maildomeinen toewijzen op basis van geografische locatie.
Doelkenmerk: e-mail
SelectUniqueValue (
Switch([country],
Join("@", NormalizeDiacritics(StripSpaces(Join("", [firstName], [lastName]))), "fabrikam.com"),
"India", Join("@", NormalizeDiacritics(StripSpaces(Join("", [firstName], [lastName]))), "fabrikam.com"),
"Netherlands", Join("@", NormalizeDiacritics(StripSpaces(Join("", [firstName], [lastName]))), "contoso.com")
),
Switch([country],
Join("1@", NormalizeDiacritics(StripSpaces(Join("", [firstName], [lastName]))), "fabrikam.com"),
"India", Join("1@", NormalizeDiacritics(StripSpaces(Join("", [firstName], [lastName]))), "fabrikam.com"),
"Netherlands", Join("1@", NormalizeDiacritics(StripSpaces(Join("", [firstName], [lastName]))), "contoso.com")
)
)
Voorbeeld:
- Invoerwaarden: [land] = "India", [firstName] = "Raj", [lastName] = "Raj"
-
Uitvoer van expressie:
raj.patel@fabrikam.com(of1raj.patel@fabrikam.comals de eerste optie wordt gebruikt) - Alternatieve invoer: [land] = "Nederland", [firstName] = "Jan", [lastName] = "van der Berg"
-
Alternatieve uitvoer:
jan.vanderberg@contoso.com(of1jan.vanderberg@contoso.comals de eerste optie wordt genomen) - Alternatieve invoer: [land] = "Duitsland", [voornaam] = "Klaus", [achternaam] = "Müller"
-
Alternatieve uitvoer:
klaus.muller@fabrikam.com(standaarddomein of1klaus.muller@fabrikam.comals de eerste optie wordt gebruikt)
Classificatie van werknemers en afhankelijke werknemers
Classificatie van werktype
Scenario 1: U wilt codes van werknemerstype toewijzen aan leesbare beschrijvingen.
Doelkenmerk: extensionAttribute3
Switch([employeeType],"Default-value",
"31202","Employee",
"31230","Contractor"
)
Voorbeeld:
- Invoerwaarden: [employeeType] = "31202"
-
Uitvoer van expressie:
Employee - Alternatieve invoer: [employeeType] = "99999"
-
Alternatieve uitvoer:
Default-value
Identificatie van voorwaardelijke werknemer
Scenario 1: U moet tijdelijke werknemers anders identificeren en afhandelen.
Doelkenmerk: extensionAttribute4
Switch([isContingentWorker], "N/A", "True", "Contractor", "False", "Employee")
Voorbeeld:
- Invoerwaarden: [isContingentWorker] = "True"
-
Uitvoer van expressie:
Contractor
Persoonlijke titeltoewijzing
Scenario 1: U wilt persoonlijke titelcodes toewijzen aan de juiste titels.
IgnoreFlowIfNullOrEmpty(Switch([personalTitle], "", "4443", "Dr.", "4444", "Prof.", "4445", "Prof. Dr."))
Voorbeeld:
- Invoerwaarden: [personalTitle] = "4443"
-
Uitvoer van expressie:
Dr. - Alternatieve invoer: [personalTitle] = ""
- Alternatieve uitvoer: (leeg - genegeerd)
Geavanceerde scenario's
Verwerking van voorwaardelijke afdeling
Scenario 1: U wilt globale toewijzingsafdeling gebruiken wanneer deze beschikbaar is, anders terugvallen op de reguliere afdeling.
Doelkenmerk: afdeling
Switch([globalAssignmentDepartment],[globalAssignmentDepartment],
"",[department])
Voorbeeld:
- Invoerwaarden: [globalAssignmentDepartment] = "Global IT", [department] = "Local IT"
-
Uitvoer van expressie:
Global IT - Alternatieve invoer: [globalAssignmentDepartment] = "", [afdeling] = "Sales"
-
Alternatieve uitvoer:
Sales
E-mailverwerking voorlopig verwijderen
Scenario 1: U moet e-mailadressen wijzigen wanneer gebruikers voorlopig worden verwijderd voor write-backscenario's.
Doelkenmerk: e-mail
IIF([IsSoftDeleted]="True", Join("_",FormatDateTime(Now(), , "M/d/yyyy h:mm:ss tt", "yyyy-MM-dd"),[mail]), [mail])
Voorbeeld:
- Invoerwaarden: [IsSoftDeleted] = "True", [mail] = "john.smith@company.com" (huidige datum: 2025-07-30)
-
Uitvoer van expressie:
2025-07-30_john.smith@company.com - Alternatieve invoer: [IsSoftDeleted] = "False", [mail] = "jane.doe@company.com"
-
Alternatieve uitvoer:
jane.doe@company.com
Complexe OE-toewijzing met beëindigingslogica
Scenario 1: U wilt beëindigde gebruikers na een bepaald aantal dagen verplaatsen naar een speciale organisatie-eenheid.
Doelkenmerk: parentDistinguishedName
IIF(DateDiff("d", Now(), CDate(Switch([latestTerminationDate], [latestTerminationDate], "", "9999-01-01"))) <= -14,
"OU=DELETED,DC=company,DC=com",
Switch([department], "OU=Default,DC=company,DC=com",
"Engineering", "OU=Engineering,DC=company,DC=com",
"Finance", "OU=Finance,DC=company,DC=com"
)
)
Voorbeeld:
- Invoerwaarden: [latestTerminationDate] = "2025-07-10", [afdeling] = "Engineering" (huidige datum: 2025-07-30)
-
Uitvoer van expressie:
OU=DELETED,DC=company,DC=com(beëindigd meer dan 14 dagen geleden) - Alternatieve invoer: [latestTerminationDate] = "2025-07-25", [afdeling] = "Financiën"
-
Alternatieve uitvoer:
OU=Finance,DC=company,DC=com(beëindigd minder dan 14 dagen geleden)
UPN-generatie met meerdere bedrijven met werknemersklasse
Scenario 1: U moet UPN's genereren op basis van bedrijfs- en werknemersklassegegevens.
Doelkenmerk: userPrincipalName
SelectUniqueValue (
Switch([employeeClass],
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"),
"1916", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"),
"1915", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "fabrikam.com"),
"1917", Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([firstName],1,1), [lastName]))), "woodgrove.com")
),
Switch([employeeClass],
Join("01@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"),
"1916", Join("01@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"),
"1915", Join("01@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "fabrikam.com"),
"1917", Join("01@", NormalizeDiacritics(StripSpaces(Join(".", Mid([firstName],1,1), [lastName]))), "woodgrove.com")
)
)
Voorbeeld:
- Invoerwaarden: [employeeClass] = "1915", [firstName] = "Anna", [achternaam] = "Johnson"
-
Uitvoer van expressie:
anna.johnson@fabrikam.com(of01anna.johnson@fabrikam.comals de eerste optie wordt gebruikt)
Apostrof en speciale karakterverwerking
Scenario 1: U moet apostrofs en streepjes verwijderen uit e-mailadressen voor compatibiliteit met Azure AD Connect.
Doelkenmerk: e-mail
SelectUniqueValue(
Switch ([divisionId],
Replace(Join("@", NormalizeDiacritics(StripSpaces(Join(".", Coalesce([preferredName], [firstName]), [lastName]))), "contoso.com"), , "['-]+", , "", , ),
"8900", [email]
),
Replace(Join("1@", NormalizeDiacritics(StripSpaces(Join(".", Coalesce([preferredName], [firstName]), [lastName]))), "contoso.com"), , "['-]+", , "", , ),
Replace(Join("2@", NormalizeDiacritics(StripSpaces(Join(".", Coalesce([preferredName], [firstName]), [lastName]))), "contoso.com"), , "['-]+", , "", , )
)
Voorbeeld:
- Invoerwaarden: [divisionId] = "1200", [preferredName] = "Mary-Ann", [voornaam] = "Mary", [achternaam] = "O'Connor"
-
Uitvoer van expressie:
maryann.oconnor@contoso.com(apostrofs en streepjes verwijderd) - Alternatieve invoer: [divisionId] = "8900", [email] = "existing.user@company.com"
-
Alternatieve uitvoer:
existing.user@company.com
SIP-adresgeneratie
Scenario 1: U wilt SIP-adressen genereren voor de integratie van Skype voor Bedrijven/Teams.
Doelkenmerk: proxyAddresses
SelectUniqueValue(
Append("sip:", Join("@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com")),
Append("sip:", Join("01@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com")),
Append("sip:", Join("02@", NormalizeDiacritics(StripSpaces(Join(".", [firstName], [lastName]))), "contoso.com"))
)
Voorbeeld:
- Invoerwaarden: [firstName] = "David", [lastName] = "Wilson"
-
Uitvoer van expressie:
sip:david.wilson@contoso.com(ofsip:01david.wilson@contoso.comals de eerste optie wordt gebruikt) - Alternatieve invoer: [firstName] = "María José", [achternaam] = "González-Pérez"
-
Alternatieve uitvoer:
sip:mariajose.gonzalezperez@contoso.com(ofsip:01mariajose.gonzalezperez@contoso.comals de eerste optie wordt genomen, ofsip:02mariajose.gonzalezperez@contoso.comals de eerste twee worden genomen)
Voorwaardelijke logica terugschrijven
Scenario 1: U wilt e-mailadressen voorwaardelijk terugschrijven op basis van specifieke datumcriteria.
Doelkenmerk: mailNickname
IgnoreFlowIfNullOrEmpty(IIF(DateDiff("d", Now(), CDate([extensionAttribute9])) <> 1, "", [mail]))
Voorbeeld:
- Invoerwaarden: [extensionAttribute9] = "2025-07-31", [mail] = "user@company.com" (huidige datum: 2025-07-30)
- Uitvoer van expressie: (leeg - genegeerd, omdat het datumverschil 1 dag is)
- Alternatieve invoer: [extensionAttribute9] = "2025-08-01", [mail] = "user@company.com"
-
Alternatieve uitvoer:
user@company.com
Scenario 2: U moet ontbrekende kenmerken afhandelen in writeback-scenario's.
Doelkenmerk: mailNickname
IgnoreFlowIfNullOrEmpty(IIF(IsPresent([extensionAttribute9]),IIF(DateDiff("d", Now(), CDate([extensionAttribute9])) <> 1, "", [mail]),"noemail@contoso.com"))
Voorbeeld:
- Invoerwaarden: [extensionAttribute9] = "" (leeg), [mail] = "user@company.com"
-
Uitvoer van expressie:
noemail@contoso.com - Alternatieve invoer: [extensionAttribute9] = "2025-08-01", [mail] = "user@company.com" (huidige datum: 2025-07-30)
-
Alternatieve uitvoer:
user@company.com
Beste praktijken
Gebruik SelectUniqueValue voor alle kenmerken waarvoor uniekheid is vereist (UPN, samAccountName, email).
Null- en lege waarden verwerken met behulp van functies zoals
IsNullOrEmpty,IsPresent,SwitchofCoalesce.Gebruik NormalizeDiacritics en StripSpaces bij het verwerken van namen om compatibiliteit tussen systemen te garanderen.
Valideer JSONPath-expressies in een JSONPath-tester voordat u in productie implementeert.
Gebruik de juiste datumopmaak bij het werken met SuccessFactors-datumvelden om conversiefouten te voorkomen.
Houd rekening met tijdzones wanneer u werkt met datumvergelijkingen en verlooplogica voor accounts.
Gebruik IgnoreFlowIfNullOrEmpty voor voorwaardelijke kenmerkstromen en write-backscenario's.
Test complexe Switch-instructies grondig, omdat ze moeilijk kunnen worden opgespoord.
Documenteer bedrijfslogica duidelijk, met name voor complexe arbeidsstatus- en accountbeheerregels.
Gebruik regex-patronen zorgvuldig en valideer ze in online regex-testers vóór de implementatie.