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 SuccessFactors till Microsoft Entra ID-användaretablering. Dessa funktioner hjälper till att transformera och mappa data från SuccessFactors för att skapa lämpliga användarattribut i Microsoft Entra-ID.
Innehållsförteckning
- Funktioner för strängmanipulering
- Generering av e-postadress
- Kontohanteringslogik
- Datumfunktioner och förfallodatum för kontot
- Organisationsenhetstilldelning (OU)
- Namnbearbetning och visningsnamn
- SamAccountName-generering
- ProxyAddresses-konfiguration
- Bearbetning av telefonnummer
- Land- och platsbaserad logik
- Klassificering av anställda och kontingentarbetare
- Avancerade scenarier
Funktioner för strängmanipulering
Grundläggande strängåtgärder
Scenario 1: Du vill fylla på ett person-ID med inledande nollor för att skapa en sträng med 8 tecken.
Målattribut: employeeId
Replace(Join("","00000000",[personIdExternal]), ,"(.*?)(?<id>.{0,8})$", ,"${id}", ,)
Exempel:
- Indatavärden: [personIdExternal] = "12345"
-
Utdata för uttryck:
00012345
Scenario 2: Du måste fylla på kostnadsställe med inledande nollor så att det blir 10 tecken.
Målattribut: extensionAttribute1
Replace(Join("","0000000000",[costCenterId]), ,"(.*?)(?<id>.{0,10})$", ,"${id}", ,)
Exempel:
- Indatavärden: [costCenterId] = "567"
-
Utdata för uttryck:
0000000567
Scenario 3: Du vill skapa ett medarbetar-ID genom att lägga till ett prefix på ett vadderat personalnummer.
Målattribut: employeeId
Append("05",Replace(Join("","000000",[employeeId]), ,"(.*?)(?<id>.{0,6})$", ,"${id}", ,))
Exempel:
- Indatavärden: [employeeId] = "789"
-
Utdata för uttryck:
05000789
Konvertering av textfall
Scenario 1: Du måste konvertera namn från alla versaler till rätt skiftläge (rubrikfall).
Målattribut: sn
Join("",Mid([lastName],1,1),ToLower(Mid([lastName],2,64)))
Exempel:
- Indatavärden: [lastName] = "JOHNSON"
-
Utdata för uttryck:
Johnson
Scenario 2: Du vill skapa ett visningsnamn med rätt skiftlägesformatering.
Målattribut: displayName
Join(", ", Join("",Mid([lastName],1,1),ToLower(Mid([lastName],2,64))), Join("",Mid([firstName],1,1),ToLower(Mid([firstName],2,64))))
Exempel:
- Indatavärden: [lastName] = "SMITH", [firstName] = "JOHN"
-
Utdata för uttryck:
Smith, John
Scenario 3: Du måste hantera namn med blanksteg genom att ersätta blanksteg med punkter.
Målattribut: givenName
Replace([firstName]," ", , ,".", , )
Exempel:
- Indatavärden: [firstName] = "Mary Ann"
-
Utdata för uttryck:
Mary.Ann
Generering av e-postadress
Grundläggande e-postgenerering
Scenario 1: Du vill generera e-postadresser med förnamn och efternamn med företagsspecifika domäner.
Målattribut: e-post
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")
)
)
Exempel:
- Indatavärden: [företag] = "Contoso", [firstName] = "John", [lastName] = "Smith", [middleName] = "Michael"
-
Utdata för uttryck:
john.smith@contoso.com(ellerjohn.m.smith@contoso.comom det första alternativet tas)
Gruppbaserad e-postgenerering för medarbetare
Scenario 1: Du vill generera olika e-postformat baserat på klassificering av anställda (permanent jämfört med tillfälligt).
Målattribut: 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")
)))
Exempel:
- Indatavärden: [custom06] = "Temporary", [firstName] = "Sarah", [lastName] = "Wilson"
-
Utdata för uttryck:
sarah.wilson_ext@ltts.com
Validering av företagsdomän
Scenario 1: Du vill bara skicka e-postadresser som tillhör en specifik företagsdomän.
Målattribut: e-post
IgnoreFlowIfNullOrEmpty(IIF(InStr([emailAddress],"@contoso.com")=0,"",[emailAddress]))
Exempel:
- Indatavärden: [emailAddress] = "john.doe@contoso.com"
-
Utdata för uttryck:
john.doe@contoso.com - Alternativa indata: [emailAddress] = "john.doe@external.com"
- Alternativa utdata: (tom – ignorerad)
Befintlig e-postbevarande
Scenario 1: Du vill använda befintlig e-post från SuccessFactors för vissa divisioner, men generera nya för andra.
Målattribut: 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")
)
Exempel:
- Indatavärden: [divisionId] = "8900", [email] = "existing.user@company.com", [firstName] = "Mike", [lastName] = "Brown"
-
Utdata för uttryck:
existing.user@company.com - Alternativa indata: [divisionId] = "1200", [firstName] = "Mike", [lastName] = "Brown"
-
Alternativa utdata:
mike.brown@contoso.com
Kontohanteringslogik
Grundläggande kontostatus
Scenario 1: Du vill avgöra om ett konto ska inaktiveras baserat på anställningsstatus.
Målattribut: accountDisabled
Switch([emplStatus], "False", "741", "False", "749", "True", "746", "True")
Exempel:
- Indatavärden: [emplStatus] = "741"
-
Utdata för uttryck:
False(konto aktiverat) - Alternativa indata: [emplStatus] = "746"
-
Alternativa utdata:
True(kontot är inaktiverat)
Dölj från logik för adresslistor
Scenario 1: Du måste ange attributet msExchHideFromAddressLists baserat på start- och slutdatum.
Målattribut: 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")
Exempel:
- Indatavärden: [startDate] = "2025-01-15", [endDate] = "2025-12-31" (aktuellt datum: 2025-07-30)
-
Utdata från uttryck:
FALSE(inte dolt från adresslistor) - Alternativa indata: [startDate] = "2025-01-15", [endDate] = "2025-06-30"
-
Alternativa utdata:
TRUE(dolda från adresslistor)
Komplex statuslogik för medarbetare
Scenario 1: Du har ett komplext krav på att inaktivera konton baserat på anpassade fält och anställningsdatum.
Målattribut: 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"
))
Exempel:
- Indatavärden: [empNavCustomString3] = "62220", [cust_hiredate] = "2025-07-27", [cust_customDate67] = "2025-07-30" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
False(konto aktiverat) - Alternativa indata: [empNavCustomString3] = "62220", [cust_hiredate] = "2025-07-27", [cust_customDate67] = "2025-07-29"
-
Alternativa utdata:
True(kontot är inaktiverat)
Datumfunktioner och förfallodatum för kontot
Förfallodatum för grundläggande konto
Scenario 1: Du vill ange kontots förfallodatum baserat på slutdatumet från SuccessFactors.
Målattribut: accountExpires
Switch([endDate],
NumFromDate(Join("", FormatDateTime([endDate], "M/d/yyyy hh:mm:ss tt", "yyyy-MM-dd"), " 23:59:59-05:00")),
"", "9223372036854775807"
)
Exempel:
- Indatavärden: [endDate] = "12/31/2025 12:00:00 AM"
-
Utdata för uttryck:
133835135990000000(numerisk representation av 2025-12-31 23:59:59-05:00) - Alternativa indata: [endDate] = "" (tom)
-
Alternativa utdata:
9223372036854775807(upphör aldrig att gälla)
Anställningstypbaserad förfallotid
Scenario 1: Du måste ange olika förfalloregler för kontot baserat på anställningstyp (permanent jämfört med entreprenör).
Målattribut: 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"))
)
Exempel:
- Indatavärden: [employmentType] = "PM", [DOB] = "1/15/1990 12:00:00 AM"
-
Utdata för uttryck:
158488415990000000(numerisk representation av 2050-01-15 23:59:59-05:00, 60 år efter födseln) - Alternativa indata: [employmentType] = "CON", [endDate] = "12/31/2025 12:00:00 AM"
-
Alternativa utdata:
133835135990000000(numerisk representation av 2025-12-31 23:59:59-05:00)
Förfallodatum för händelseorsaksbaserat konto
Scenario 1: Du vill ange kontots förfallodatum baserat på specifika uppsägningshändelser och avgångsvederlag.
Målattribut: 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"))
)
Exempel:
- Indatavärden: [event] = "SEVUNSATP", [severanceStartDate] = "8/15/2025 12:00:00 AM"
-
Utdata för uttryck:
133877247990000000(numerisk representation av 2025-08-15 23:59:59-08:00) - Alternativa indata: [händelse] = "REGULAR", [latestTerminationDate] = "9/30/2025 12:00:00 AM"
-
Alternativa utdata:
133886207990000000(numerisk representation av 2025-09-30 23:59:59-08:00)
Hantering av datumformat
Scenario 1: Du måste hantera ogiltiga datum som "12/31/9999" som orsakar fel i NumFromDate.
Målattribut: 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")
)
Exempel:
- Indatavärden: [endDate] = "12/31/9999 12:00:00 AM"
-
Utdata för uttryck:
441481535990000000(numerisk representation av 2099-12-31T23:59:59-04:00) - Alternativa indata: [endDate] = "8/15/2025 12:00:00 AM"
-
Alternativa utdata:
133877283990000000(numerisk representation av 2025-08-15T23:59:59-04:00)
Organisationsenhetstilldelning (OU)
Avdelningsbaserad organisationsenhetstilldelning
Scenario 1: Du vill placera användare i olika organisationsenheter baserat på deras avdelning.
Målattribut: 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"
)
Exempel:
- Indatavärden: [avdelning] = "Engineering SG"
-
Utdata för uttryck:
OU=Engineering,OU=SuccessFactors,DC=contoso,DC=com - Alternativa indata: [avdelning] = "Marknadsföring"
-
Alternativa utdata:
OU=SuccessFactors,DC=contoso,DC=com(standard)
Anställningsstatusbaserad organisationsenhetstilldelning
Scenario 1: Du måste tilldela användare till olika organisationsenheter baserat på deras anställningsstatus och plats.
Målattribut: 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")
Exempel:
- Indatavärden: [emplStatus] = "741", [empJobNavCustomString13] = "LOC1015", [departmentId] = "DU1026"
-
Utdata för uttryck:
OU=IT,OU=Bangalore,DC=contoso,DC=com - Alternativa indata: [emplStatus] = "749", [empJobNavCustomString13] = "LOC1016"
-
Alternativa utdata:
OU=O365-NoSYNC,OU=Mysore,DC=contoso,DC=com - Alternativa indata: [emplStatus] = "741", [empJobNavCustomString13] = "LOC9999" (inte definierad)
-
Alternativa utdata:
OU=SFProvisoinngUsers,DC=contoso,DC=com(standard)
Landbaserad organisationsenhetstilldelning
Scenario 1: Du vill placera användare i olika organisationsenheter baserat på deras land med en inaktiverad organisationsenhet för inaktiva användare.
Målattribut: 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"
)
Exempel:
- Indatavärden: [activeEmploymentsCount] = "1", [land] = "Mexiko"
-
Utdata för uttryck:
OU=Mexico,OU=Accounts,DC=corp,DC=contoso,DC=com - Alternativa indata: [activeEmploymentsCount] = "0", [land] = "Sverige"
-
Alternativa utdata:
OU=DisabledAccounts,OU=Accounts,DC=corp,DC=contoso,DC=com(inaktiverade användare går till särskild organisationsenhet oavsett land) - Alternativa indata: [activeEmploymentsCount] = "1", [land] = "Tyskland"
-
Alternativ utdata:
OU=Accounts,DC=corp,DC=contoso,DC=com(standard-OU för länder som inte har definierats specifikt)
Namnbearbetning och visningsnamn
Generering av eget namn (CN)
Scenario 1: Du vill generera ett unikt gemensamt namn med återställningsalternativ för dubbletter.
Målattribut: cn
SelectUniqueValue(
NormalizeDiacritics(Join(" ", [firstName], [lastName])),
NormalizeDiacritics(Join(" ", [firstName], Mid([middleName],1,1), [lastName])),
NormalizeDiacritics(Join(" ", [firstName], [middleName], [lastName]))
)
Exempel:
- Indatavärden: [firstName] = "José", [lastName] = "García", [middleName] = "Antonio"
-
Utdata för uttryck:
Jose Garcia(ellerJose A Garciaom det första alternativet tas, ellerJose Antonio Garciaom de två första tas)
Visningsnamn med önskade namn
Scenario 1: Du måste skapa ett visningsnamn som använder önskat namn när det är tillgängligt, annars återgår du till förnamnet.
Målattribut: 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), )))
Exempel:
- Indatavärden: [lastName] = "JOHNSON", [preferredName] = "Mike", [firstName] = "Michael"
-
Utdata för uttryck:
Johnson, Mike - Alternativa indata: [lastName] = "SMITH", [preferredName] = "", [firstName] = "Robert"
-
Alternativa utdata:
Smith, Robert
Visningsnamn med numeriska suffix
Scenario 1: Du vill generera unika visningsnamn med numeriska suffix för dubbletter.
Målattribut: 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])))
)
Exempel:
- Indatavärden: [lastName] = "García", [preferredName] = "Mike", [firstName] = "Michael"
-
Utdata för uttryck:
Garcia, Mike(ellerGarcia2, Mikeom det första alternativet tas osv.) - Alternativa indata: [lastName] = "Smith", [preferredName] = "", [firstName] = "John"
-
Alternativa utdata:
Smith, John(ellerSmith2, Johnom det första alternativet tas osv.)
SamAccountName-generering
Grundläggande samAccountName-generering
Scenario 1: Du vill skapa ett samAccountName med hjälp av första initiala och efternamn med korrekt teckensanering.
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] = "José", [lastName] = "García-López"
-
Utdata för uttryck:
jgarcialopez(ellerjgarcialopez1om det första alternativet tas, ellerjgarcialopez2om de två första tas)
SamAccountName med variabel förnamnslängd
Scenario 1: Du vill hantera dubbletter genom att öka antalet tecken från förnamnet.
Målattribut: 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), , "(\\.)*$", , "", , )
)
Exempel:
- Indatavärden: [firstName] = "Christopher", [lastName] = "Anderson"
-
Utdata för uttryck:
canderson(ellerchandersonom det första alternativet tas, ellerchrandersonom de två första tas) - Alternativa indata: [firstName] = "María", [lastName] = "Rodríguez-Santos"
-
Alternativa utdata:
mrodriguezsantos(ellermarodriguezsantosom det första alternativet tas ellermarrodriguezsantosom de två första tas)
SamAccountName från externt användarnamn
Scenario 1: Du vill extrahera användarnamnsdelen från ett externt användarnamn i e-postformat.
Målattribut: sAMAccountName
Replace(Mid(Replace(Replace([username],,"(?<id>.*)@(?<domain>.*)",,"${id}",,), , "([\\/\\\\\\[\\]\\:\\;\\|\\=\\,\\+\\*\\?\\<\\>])", , "", , ), 1, 20), , "(\\.)*$", , "", , )
Exempel:
- Indatavärden: [användarnamn] = "john.smith@external.com"
-
Utdata för uttryck:
johnsmith
ProxyAddresses-konfiguration
Grundläggande proxyAddresses-konfiguration
Scenario 1: Du vill ange flera proxyadresser, inklusive primära och sekundära SMTP-adresser.
Målattribut: 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"))
),
","
)
Exempel:
- Indatavärden: [personIdExternal] = "12345", [firstName] = "John", [lastName] = "Smith"
-
Utdata för uttryck:
["smtp:A12345@contoso.mail.onmicrosoft.com", "smtp:A12345@contoso.com", "SMTP:John.Smith@contoso.com"]
Divisionsbaserad proxyAddresses
Scenario 1: Du behöver olika proxyadresskonfigurationer baserat på personalavdelningen.
Målattribut: 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])
)
),
","
)
Exempel:
- Indatavärden: [divisionId] = "STANDARD", [personIdExternal] = "67890", [firstName] = "Sarah", [lastName] = "Johnson"
-
Utdata för uttryck:
["smtp:A67890@woodgrove.mail.onmicrosoft.com", "smtp:A67890@woodgrove.com", "SMTP:Sarah.Johnson@woodgrove.com"] - Alternativa indata: [divisionId] = "EXEC", [firstName] = "Michael", [lastName] = "Brown", [email] = "mbrown@fabrikam.com"
-
Alternativa utdata:
["smtp:Michael.Brown@contoso.com", "SMTP:mbrown@fabrikam.com"]
Företagsspecifik proxyAddresses
Scenario 1: Du vill generera proxyadresser baserat på företagets anknytning.
Målattribut: 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"))
)
)
Exempel:
- Indatavärden: [företag] = "NGC", [firstName] = "Trinidad", [lastName] = "Williams", [middleName] = "James"
-
Utdata för uttryck:
SMTP:trinidad.williams@contoso.com(ellerSMTP:trinidad.j.williams@contoso.comom det första alternativet tas) - Alternativa indata: [företag] = "National Energy", [firstName] = "Rebecca", [lastName] = "Thompson", [middleName] = "Marie"
-
Alternativa utdata:
SMTP:r.thompson@fabrikam.com(ellerSMTP:r.m.thompson@fabrikam.comom det första alternativet tas) - Alternativa indata: [företag] = "Other Company", [firstName] = "David", [lastName] = "Jones", [middleName] = "Paul"
-
Alternativa utdata:
SMTP:david.jones@contoso.com(standarddomän ellerSMTP:david.p.jones@contoso.comom det första alternativet tas)
Bearbetning av telefonnummer
Extrahering av grundläggande telefonnummer
Scenario 1: Du vill extrahera telefonnummerdelen utan landskoden.
Målattribut: telephoneNumber
Replace(Replace([mobile], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${phoneNumber}", , ), ,"[()\\s-]+", ,"", , )
Exempel:
- Indatavärden: [mobil] = "+1 (555) 123-4567"
-
Utdata för uttryck:
5551234567
Scenario 2: Du behöver bara extrahera landskoden från ett telefonnummer.
Målattribut: c
Replace(Replace([mobile], , "\\+(?<isdCode>\\d* )(?<phoneNumber>.*)", , "${isdCode}", , ), ,"[()\\s-]+", ,"", , )
Exempel:
- Indatavärden: [mobil] = "+44 20 7946 0958"
-
Utdata för uttryck:
44
Standardvärden för telefonnummer
Scenario 1: Du vill ange standardtelefonnummer när fältet är tomt.
Målattribut: telephoneNumber
IIF(IsNullOrEmpty([telephoneNumber]),"000-000-0000",[telephoneNumber])
Switch([mobile],[mobile],"","000-000-0000")
Exempel:
- Indatavärden: [telephoneNumber] = ""
-
Utdata för uttryck:
000-000-0000 - Alternativa indata: [mobil] = "555-123-4567"
-
Alternativa utdata:
555-123-4567
Primär telefonlogik
Scenario 1: Du måste bestämma vilket telefonnummer som ska markeras som primärt.
Målattribut: 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")
Exempel:
- Indatavärden: [businessPhoneIsPrimary] = "true", [cellPhoneIsPrimary] = "false"
-
Utdata för uttryck:
business phone is primary - Alternativa indata: [businessPhoneIsPrimary] = "false", [cellPhoneIsPrimary] = "true"
-
Alternativa utdata:
cell phone is primary - Alternativa indata: [businessPhoneIsPrimary] = "", [cellPhoneIsPrimary] = "true"
-
Alternativa utdata:
cell phone is primary
Land- och platsbaserad logik
Landskodsmappning
Scenario 1: Du vill mappa landsnamn till ISO-landskoder.
Målattribut: c
Switch([country], ,
"Trinidad and Tobago", "TT",
"Barbados", "BB"
)
Exempel:
- Indatavärden: [land] = "Trinidad och Tobago"
-
Utdata för uttryck:
TT
Scenario 2: Du måste mappa länder till numeriska landskoder.
Målattribut: countryCode
Switch([country], ,
"Trinidad and Tobago", "780",
"Barbados", "52"
)
Exempel:
- Indatavärden: [land] = "Barbados"
-
Utdata för uttryck:
52
Platsbaserade e-postdomäner
Scenario 1: Du vill tilldela olika e-postdomäner baserat på geografisk plats.
Målattribut: e-post
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")
)
)
Exempel:
- Indatavärden: [country] = "India", [firstName] = "Raj", [lastName] = "Patel"
-
Utdata för uttryck:
raj.patel@fabrikam.com(eller1raj.patel@fabrikam.comom det första alternativet tas) - Alternativa indata: [land] = "Nederländerna", [firstName] = "Jan", [lastName] = "van der Berg"
-
Alternativa utdata:
jan.vanderberg@contoso.com(eller1jan.vanderberg@contoso.comom det första alternativet tas) - Alternativa indata: [land] = "Tyskland", [firstName] = "Klaus", [efternamn] = "Müller"
-
Alternativa utdata:
klaus.muller@fabrikam.com(standarddomän eller1klaus.muller@fabrikam.comom det första alternativet tas)
Klassificering av anställda och kontingentarbetare
Klassificering av anställningstyp
Scenario 1: Du vill mappa de anställdas typkoder till läsbara beskrivningar.
Målattribut: extensionAttribute3
Switch([employeeType],"Default-value",
"31202","Employee",
"31230","Contractor"
)
Exempel:
- Indatavärden: [employeeType] = "31202"
-
Utdata för uttryck:
Employee - Alternativa indata: [employeeType] = "99999"
-
Alternativa utdata:
Default-value
Identifiering av kontingentarbetare
Scenario 1: Du måste identifiera och hantera kontingentarbetare på olika sätt.
Målattribut: extensionAttribute4
Switch([isContingentWorker], "N/A", "True", "Contractor", "False", "Employee")
Exempel:
- Indatavärden: [isContingentWorker] = "True"
-
Utdata för uttryck:
Contractor
Personlig rubrikmappning
Scenario 1: Du vill mappa personliga titelkoder till rätt rubriker.
IgnoreFlowIfNullOrEmpty(Switch([personalTitle], "", "4443", "Dr.", "4444", "Prof.", "4445", "Prof. Dr."))
Exempel:
- Indatavärden: [personalTitle] = "4443"
-
Utdata för uttryck:
Dr. - Alternativa indata: [personalTitle] = ""
- Alternativa utdata: (tom – ignorerad)
Avancerade scenarier
Hantering av villkorsstyrd avdelning
Scenario 1: Du vill använda den globala tilldelningsavdelningen när den är tillgänglig, annars återgå till den vanliga avdelningen.
Målattribut: avdelning
Switch([globalAssignmentDepartment],[globalAssignmentDepartment],
"",[department])
Exempel:
- Indatavärden: [globalAssignmentDepartment] = "Global IT", [avdelning] = "Lokal IT"
-
Utdata för uttryck:
Global IT - Alternativa indata: [globalAssignmentDepartment] = "", [avdelning] = "Försäljning"
-
Alternativa utdata:
Sales
Mjuk borttagning av e-posthantering
Scenario 1: Du måste ändra e-postadresser när användare tas bort mjukt för tillbakaskrivningsscenarier.
Målattribut: e-post
IIF([IsSoftDeleted]="True", Join("_",FormatDateTime(Now(), , "M/d/yyyy h:mm:ss tt", "yyyy-MM-dd"),[mail]), [mail])
Exempel:
- Indatavärden: [IsSoftDeleted] = "True", [mail] = "john.smith@company.com" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
2025-07-30_john.smith@company.com - Alternativa indata: [IsSoftDeleted] = "False", [mail] = "jane.doe@company.com"
-
Alternativa utdata:
jane.doe@company.com
Komplex OU-tilldelning med avslutningslogik
Scenario 1: Du vill flytta avslutade användare till en särskild organisationsenhet efter ett visst antal dagar.
Målattribut: 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"
)
)
Exempel:
- Indatavärden: [latestTerminationDate] = "2025-07-10", [avdelning] = "Engineering" (aktuellt datum: 2025-07-30)
-
Utdata för uttryck:
OU=DELETED,DC=company,DC=com(avslutades för mer än 14 dagar sedan) - Alternativa indata: [latestTerminationDate] = "2025-07-25", [avdelning] = "Ekonomi"
-
Alternativa utdata:
OU=Finance,DC=company,DC=com(avslutades för mindre än 14 dagar sedan)
UPN-generation med flera företag med medarbetarklass
Scenario 1: Du måste generera UPN baserat på klassinformation för både företag och anställda.
Målattribut: 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")
)
)
Exempel:
- Indatavärden: [employeeClass] = "1915", [firstName] = "Anna", [lastName] = "Johnson"
-
Utdata för uttryck:
anna.johnson@fabrikam.com(eller01anna.johnson@fabrikam.comom det första alternativet tas)
Apostrofer och specialteckenhantering
Scenario 1: Du måste ta bort apostrofer och bindestreck från e-postadresser för Azure AD Connect-kompatibilitet.
Målattribut: e-post
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"), , "['-]+", , "", , )
)
Exempel:
- Indatavärden: [divisionId] = "1200", [preferredName] = "Mary-Ann", [firstName] = "Mary", [lastName] = "O'Connor"
-
Utdata från uttryck:
maryann.oconnor@contoso.com(apostrofer och bindestreck har tagits bort) - Alternativa indata: [divisionId] = "8900", [e-post] = "existing.user@company.com"
-
Alternativa utdata:
existing.user@company.com
SIP-adressgenerering
Scenario 1: Du vill generera SIP-adresser för Skype för företag/Teams-integrering.
Målattribut: 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"))
)
Exempel:
- Indatavärden: [firstName] = "David", [lastName] = "Wilson"
-
Utdata för uttryck:
sip:david.wilson@contoso.com(ellersip:01david.wilson@contoso.comom det första alternativet tas) - Alternativa indata: [firstName] = "María José", [lastName] = "González-Pérez"
-
Alternativa utdata:
sip:mariajose.gonzalezperez@contoso.com(ellersip:01mariajose.gonzalezperez@contoso.comom det första alternativet tas ellersip:02mariajose.gonzalezperez@contoso.comom de två första tas)
Villkorslogik för tillbakaskrivning
Scenario 1: Du vill villkorligt skriva tillbaka e-postadresser baserat på specifika datumvillkor.
Målattribut: mailNickname
IgnoreFlowIfNullOrEmpty(IIF(DateDiff("d", Now(), CDate([extensionAttribute9])) <> 1, "", [mail]))
Exempel:
- Indatavärden: [extensionAttribute9] = "2025-07-31", [mail] = "user@company.com" (aktuellt datum: 2025-07-30)
- Utdata för uttryck: (tom – ignoreras, eftersom datumskillnaden är 1 dag)
- Alternativa indata: [extensionAttribute9] = "2025-08-01", [mail] = "user@company.com"
-
Alternativa utdata:
user@company.com
Scenario 2: Du måste hantera attribut som saknas i tillbakaskrivningsscenarier.
Målattribut: mailNickname
IgnoreFlowIfNullOrEmpty(IIF(IsPresent([extensionAttribute9]),IIF(DateDiff("d", Now(), CDate([extensionAttribute9])) <> 1, "", [mail]),"noemail@contoso.com"))
Exempel:
- Indatavärden: [extensionAttribute9] = "" (tom), [e-post] = "user@company.com"
-
Utdata för uttryck:
noemail@contoso.com - Alternativa indata: [extensionAttribute9] = "2025-08-01", [mail] = "user@company.com" (aktuellt datum: 2025-07-30)
-
Alternativa utdata:
user@company.com
Metodtips
Använd SelectUniqueValue för alla attribut som kräver unikhet (UPN, samAccountName, e-post).
Hantera null- och tomma värden med hjälp av funktioner som
IsNullOrEmpty,IsPresent,SwitchellerCoalesce.Använd NormalizeDiacritics och StripSpaces när du bearbetar namn för att säkerställa kompatibilitet mellan system.
Verifiera JSONPath-uttryck i en JSONPath-testare innan du implementerar i produktion.
Använd rätt datumformatering när du arbetar med SuccessFactors-datumfält för att undvika konverteringsfel.
Överväg tidszoner när du arbetar med datumjämförelser och kontoförfallologik.
Använd IgnoreFlowIfNullOrEmpty för villkorsstyrda attributflöden och tillbakaskrivningsscenarier.
Testa komplexa Switch-instruktioner noggrant eftersom de kan bli svåra att felsöka.
Dokumentera affärslogik tydligt, särskilt för komplexa anställningsstatus och kontohanteringsregler.
Använd regex-mönster noggrant och verifiera dem i regextestare online före implementeringen.