Informazioni di riferimento per la scrittura di espressioni per i mapping degli attributi in Microsoft Entra ID
Quando configuri il provisioning in un'applicazione SaaS, come mapping degli attributi puoi specificare il mapping di espressioni. Per questi mapping, è necessario scrivere un'espressione simile a uno script che consente di trasformare i dati degli utenti in formati più accettabili per l'applicazione SaaS.
Panoramica della sintassi
La sintassi per le espressioni per i mapping degli attributi è simile a quella delle funzioni di Visual Basic for Applications (VBA).
L'intera espressione deve essere definita in termini di funzioni, costituite da un nome seguito da argomenti tra parentesi: FunctionName(
<<argument 1>>
,<<argument N>>
)È possibile annidare le funzioni l'una all'altra. Ad esempio: FunctionOne(FunctionTwo(
<<argument1>>
))È possibile passare tre tipi diversi di argomenti nelle funzioni:
- Attributi, che devono essere racchiusi tra parentesi quadre. Ad esempio: [NomeAttributo]
- Costanti di stringa, che devono essere racchiuse tra virgolette doppie. Ad esempio: "Stati Uniti"
- Altre funzioni. Ad esempio: FunzioneUno(
<<argument1>>
, FunzioneDue(<<argument2>>
))
Eventuali barre rovesciate ( \ ) o virgolette ( " ) da inserire nella costante di stringa dovranno essere precedute dal simbolo di barra rovesciata ( \ ) come carattere di escape. Ad esempio: "Nome società: \"Contoso\""
La sintassi fa distinzione tra maiuscole e minuscole, che deve essere considerata durante la digitazione come stringhe in una funzione e copia le incolla direttamente da qui.
Elenco di funzioni
AppendAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNull IsNullOrEmptyIsPresentIsStringJoin elementoa sinistraMidNormalizeDiacriticsNotnowNumFromDatePCaseRandomStringRedactRemoveDuplicatesReplaceSelectUniqueValueSingleAppRoleAssignmentSplitStripSpacesSwitchToLowerToUpper Word
Aggiunta
Funzione: Append(source, suffix)
Descrizione: accetta un valore stringa di origine e aggiunge il suffisso alla fine di esso.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | In genere è il nome dell'attributo dell'oggetto source. |
suffix | Richiesto | String | Stringa da aggiungere alla fine del valore di origine. |
Aggiungere un suffisso costante al nome utente
Esempio: se si usa una sandbox salesforce, potrebbe essere necessario aggiungere un altro suffisso a tutti i nomi utente prima di sincronizzarli.
Expression:Append([userPrincipalName], ".test")
Input/output di esempio:
- INPUT (userPrincipalName): "John.Doe@contoso.com"
- OUTPUT: "John.Doe@contoso.com.test"
AppRoleAssignmentsComplex
Funzione: AppRoleAssignmentsComplex([appRoleAssignments])
Descrizione: usato per configurare più ruoli per un utente. Per informazioni dettagliate sull'utilizzo, vedere Esercitazione - Personalizzare i mapping degli attributi di provisioning degli utenti per le applicazioni SaaS in Microsoft Entra ID.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
[appRoleAssignments] | Richiesto | String | Oggetto [appRoleAssignments]. |
BitAnd
Funzione: BitAnd(value1, value2)
Descrizione: questa funzione converte entrambi i parametri nella rappresentazione binaria e imposta un bit su:
- 0: se il valore di uno o entrambi i bit corrispondenti in value1 e value2 è 0
- 1: se entrambi i bit corrispondenti sono pari a 1.
In altre parole, restituisce 0 in tutti i casi tranne quando i bit corrispondenti di entrambi i parametri sono pari a 1.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
value1 | Richiesto | Num | Valore numerico che deve essere AND'ed con value2 |
value2 | Richiesto | Num | Valore numerico che deve essere AND'ed con value1 |
Esempio:BitAnd(&HF, &HF7)
11110111 AND 00000111 = 00000111 restituisce quindi BitAnd
7, il valore binario di 00000111.
CBool
FunzioneCBool(Expression)
:
Descrizione:CBool
restituisce un valore booleano basato sull'espressione valutata. Se l'espressione restituisce un valore diverso da zero, CBool
restituisce True, altrimenti restituisce False.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | expression | Qualsiasi espressione valida |
Esempio:CBool([attribute1] = [attribute2])
Restituisce True se entrambi gli attributi hanno lo stesso valore.
CDate
Funzione:
CDate(expression)
Descrizione:
La funzione CDate restituisce un valore di data/ora UTC da una stringa. DateTime non è un tipo di attributo nativo, ma può essere usato all'interno di funzioni date, ad esempio FormatDateTime e DateAdd.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | Espressione | Qualsiasi stringa valida che rappresenta una data/ora. Per i formati supportati, vedere Stringhe di formato di data e ora personalizzate .NET. |
Note:
La stringa restituita è sempre in formato UTC e segue il formato M/d/aaaa h:mm:ss tt.
Esempio 1:
CDate([StatusHireDate])
Input/output di esempio:
- INPUT (StatusHireDate): "2020-03-16-07:00"
- OUTPUT: "16/3/2020 7:00:00 AM" <-- Si noti che viene restituito l'equivalente UTC di DateTime precedente
Esempio 2:
CDate("2021-06-30+08:00")
Input/output di esempio:
- INPUT: "2021-06-30+08:00"
- OUTPUT: "29/6/2021 4:00:00 PM" <-- Si noti che viene restituito l'equivalente UTC del valore DateTime precedente
Esempio 3:
CDate("2009-06-15T01:45:30-07:00")
Input/output di esempio:
- INPUT: "2009-06-15T01:45:30-07:00"
- OUTPUT: "15/6/2009 8:45:30 AM" <-- Si noti che viene restituito l'equivalente UTC del valore DateTime precedente
Coalesce
Funzione: Coalesce(source1, source2, ..., defaultValue)
Descrizione: restituisce il primo valore di origine che non è NULL. Se tutti gli argomenti sono NULL e defaultValue è presente, viene restituito defaultValue. Se tutti gli argomenti sono NULL e defaultValue non è presente, Coalesce restituisce NULL.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source1 sourceN | Richiesto | String | Obbligatorio, numero variabile di volte. In genere è il nome dell'attributo dell'oggetto source. |
defaultValue | Facoltativo | String | Valore predefinito da utilizzare quando tutti i valori di origine sono NULL. Può essere una stringa vuota (""). |
Valore di posta del flusso se non NULL; in caso contrario, flow userPrincipalName
Esempio: si vuole scorrere l'attributo di posta elettronica, se presente. In caso contrario, si vuole scorrere il valore di userPrincipalName.
Expression:Coalesce([mail],[userPrincipalName])
Input/output di esempio:
- INPUT (mail): NULL
- INPUT (userPrincipalName): "John.Doe@contoso.com"
- OUTPUT: "John.Doe@contoso.com"
ConvertToBase64
Funzione: ConvertToBase64(source)
Descrizione: la funzione ConvertToBase64 converte una stringa in una stringa Base64 Unicode.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | Stringa da convertire in base 64 |
Esempio:ConvertToBase64("Hello world!")
Restituisce "SABlAGwAbABvACAAdwBvAHIAbABkACEA"
ConvertToUTF8Hex
Funzione: ConvertToUTF8Hex(source)
Descrizione: la funzione ConvertToUTF8Hex converte una stringa in un valore con codifica hex UTF8.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | Stringa da convertire in hex UTF8 |
Esempio:ConvertToUTF8Hex("Hello world!")
Restituisce 48656C6C6F20776F726C6421
Count
Funzione: Count(attribute)
Descrizione: la funzione Count restituisce il numero di elementi in un attributo multivalore.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
attribute | Richiesto | Attributo | Attributo multivalore con elementi conteggiati |
CStr
Funzione: CStr(value)
Descrizione: la funzione CStr converte un valore in un tipo di dati stringa.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
value | Richiesto | numeric, reference o boolean | può essere un valore numerico, un attributo di riferimento o un valore booleano. |
Esempio:CStr([dn])
Restituisce "cn=Joe,dc=contoso,dc=com"
DateAdd
Funzione:
DateAdd(interval, value, dateTime)
Descrizione:
Restituisce una stringa di data/ora che rappresenta una data a cui viene aggiunto un intervallo di tempo specificato. La data restituita è nel formato M /d/aaaa h:mm:ss tt.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
interval | Richiesto | String | Intervallo di tempo da aggiungere. Vedere i valori accettati dopo questa tabella. |
value | Richiesto | Numero | numero di unità da aggiungere. Può essere positivo (per ottenere date nel futuro) o negativo (per ottenere date nel passato). |
dateTime | Richiesto | Data/Ora | valore DateTime che rappresenta la data alla quale viene aggiunto l'intervallo. |
Quando si passa una stringa di data come input, usare la funzione CDate per eseguire il wrapping della stringa datetime. Per ottenere l'ora di sistema in formato UTC, usare la funzione Now .
La stringa interval deve avere uno dei valori seguenti:
- yyyy Year
- m Month
- d Day
- ww Week
- h Hour
- n Minute
- s Second
Esempio 1: Generare un valore di data basato su StatusHireDate in ingresso da Workday
DateAdd("d", 7, CDate([StatusHireDate]))
Esempio | interval | value | dateTime (valore della variabile StatusHireDate) | output |
---|---|---|---|---|
Aggiungere 7 giorni alla data di assunzione | "d" | 7 | 2012-03-16-07:00 | 23/3/2012 7:00:00 |
Ottenere una data dieci giorni prima di assumere la data | "d" | -10 | 2012-03-16-07:00 | 3/6/2012 7:00:00 |
Aggiungere due settimane alla data di assunzione | "ww" | 2 | 2012-03-16-07:00 | 3/30/2012 7:00:00 |
Aggiungere dieci mesi alla data di assunzione | "m" | 10 | 2012-03-16-07:00 | 16/16/2013 7:00:00 |
Aggiungere due anni alla data di assunzione | "yyyy" | 2 | 2012-03-16-07:00 | 16/3/2014 7:00:00 |
DateDiff
Funzione:
DateDiff(interval, date1, date2)
Descrizione:
Questa funzione usa il parametro interval per restituire un numero che indica la differenza tra le due date di input. Restituisce
- un numero positivo se date2 > date1,
- un numero negativo se date2 < date1,
- 0 se date2 == date1
Parametri:
Nome | Obbligatoria/Facoltativa | Type | Note |
---|---|---|---|
interval | Richiesto | String | Intervallo di tempo da usare per calcolare la differenza. |
date1 | Richiesto | Data/Ora | DateTime che rappresenta una data valida. |
date2 | Richiesto | Data/Ora | DateTime che rappresenta una data valida. |
Quando si passa una stringa di data come input, usare la funzione CDate per eseguire il wrapping della stringa datetime. Per ottenere l'ora di sistema in formato UTC, usare la funzione Now .
La stringa interval deve avere uno dei valori seguenti:
- yyyy Year
- m Month
- d Day
- ww Week
- h Hour
- n Minute
- s Second
Esempio 1: Confrontare la data corrente con la data di assunzione di Workday con intervalli diversi
DateDiff("d", Now(), CDate([StatusHireDate]))
Esempio | interval | date1 | date2 | output |
---|---|---|---|---|
Differenza positiva nei giorni tra due date | d | 2021-08-18+08:00 | 2021-08-31+08:00 | 13 |
Differenza negativa nei giorni tra due date | d | 25/8/2021 5:41:18 PM | 2012-03-16-07:00 | -3449 |
Differenza nelle settimane tra due date | ww | 25/8/2021 5:41:18 PM | 2012-03-16-07:00 | -493 |
Differenza nei mesi tra due date | m | 25/8/2021 5:41:18 PM | 2012-03-16-07:00 | -113 |
Differenza negli anni tra due date | yyyy | 25/8/2021 5:41:18 PM | 2012-03-16-07:00 | -9 |
Differenza quando entrambe le date sono uguali | d | 2021-08-31+08:00 | 2021-08-31+08:00 | 0 |
Differenza nelle ore tra due date | h | 2021-08-24 | 2021-08-25 | 24 |
Differenza in minuti tra due date | n | 2021-08-24 | 2021-08-25 | 1440 |
Differenza in secondi tra due date | s | 2021-08-24 | 2021-08-25 | 86400 |
Esempio 2: Combinare DateDiff con la funzione IIF per impostare il valore dell'attributo
Se un account è Attivo in Workday, impostare l'attributo accountEnabled dell'utente su True solo se la data di assunzione rientra nei cinque giorni successivi.
Switch([Active], ,
"1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"),
"0", "False")
DateFromNum
Funzione: DateFromNum(value)
Descrizione: la funzione DateFromNum converte un valore nel formato data di AD in un tipo DateTime.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
value | Richiesto | Data | Data di Active Directory da convertire in tipo DateTime |
Esempio:DateFromNum([lastLogonTimestamp])
DateFromNum(129699324000000000)
Restituisce un valore DateTime che rappresenta il 1° gennaio 2012 alle 11:00.
FormatDateTime
Funzione: FormatDateTime(source, dateTimeStyles, inputFormat, outputFormat)
Descrizione: accetta una stringa di data da un formato e la converte in un formato diverso.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | In genere è il nome dell'attributo dell'oggetto source. |
dateTimeStyles | Facoltativo | String | Usare questo parametro per specificare le opzioni di formattazione che consentono di personalizzare l'analisi delle stringhe per alcuni metodi di analisi di data e ora. Per i valori supportati, vedere la documentazione dateTimeStyles. Se lasciato vuoto, il valore predefinito usato è DateTimeStyles.RoundKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite |
inputFormat | Richiesto | String | Formato previsto del valore source. Per i formati supportati, vedere Stringhe di formato di data e ora personalizzate .NET. |
outputFormat | Richiesto | String | Formato della data di output. |
Eseguire l'output della data come stringa in un formato specifico
Esempio: si vogliono inviare date a un'applicazione SaaS come ServiceNow in un determinato formato. È possibile prendere in considerazione l'uso dell'espressione seguente.
Expression:
FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
Input/output di esempio:
- INPUT (extensionAttribute1): "20150123105347.1Z"
- OUTPUT: "2015-01-23"
GUID
Funzione: Guid()
Descrizione: il GUID della funzione genera un nuovo GUID casuale
Esempio:
Guid()
Output di esempio: "00aa00a-bb11-cc22-dd33-44ee44ee4ee"
IgnoreFlowIfNullOrEmpty
Funzione: IgnoreFlowIfNullOrEmpty(expression)
Descrizione: la funzione IgnoreFlowIfNullOrEmpty indica al servizio di provisioning di ignorare l'attributo e rilasciarlo dal flusso se la funzione o l'attributo racchiuso è NULL o vuoto.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | Espressione | Espressione da valutare |
Esempio 1: Non eseguire il flusso di un attributo se è Null
IgnoreFlowIfNullOrEmpty([department])
L'espressione precedente elimina l'attributo department dal flusso di provisioning se è null o vuoto.
Esempio 2: Non eseguire il flusso di un attributo se il mapping dell'espressione restituisce una stringa vuota o null
Si supponga che il prefisso dell'attributo SuccessFactors sia mappato all'attributo Active Directory locale personalTitle usando il mapping di espressioni seguente:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
L'espressione precedente valuta innanzitutto la funzione Switch . Se l'attributo prefisso non ha alcun valore elencato all'interno della funzione Switch, ** restituisce una stringa vuota e l'attributo personalTitle non è incluso nel flusso di provisioning a Active Directory locale.
IIF
Funzione: IIF(condition,valueIfTrue,valueIfFalse)
Descrizione: la funzione IIF restituisce un set di valori possibili in base a una condizione specificata.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
condition | Richiesto | Variabile o espressione | Qualsiasi valore o espressione che può essere valutata su true o false. |
valueIfTrue | Richiesto | Variabile o stringa | se la condizione restituisce true, il valore restituito. |
valueIfFalse | Richiesto | Variabile o stringa | se la condizione restituisce false, il valore restituito. |
Nella condizione possono essere usati gli operatori di confronto seguenti:
- Uguale a (=) e non uguale a (<>)
- Maggiore di (>) e maggiore di (>=)
- Minore di (<) e minore di (<=)
Esempio: impostare il valore dell'attributo di destinazione sull'attributo paese di origine se country="USA", altrimenti impostare il valore dell'attributo di destinazione sull'attributo del reparto di origine.
IIF([country]="USA",[country],[department])
Limitazioni note
Questa sezione include limitazioni e soluzioni alternative per la funzione IIF. Per informazioni sulla risoluzione dei problemi di creazione dell'utente, vedere Creazione non riuscita a causa di valori null/vuoti.
- La funzione IIF attualmente non supporta gli operatori logici AND e OR.
- Per implementare la logica AND, usare l'istruzione IIF annidata concatenato lungo il percorso trueValue .
Esempio: se country="USA" e state="CA", il valore restituito "True", altrimenti restituisce "False".
IIF([country]="USA",IIF([state]="CA","True","False"),"False")
- Per implementare la logica OR, usare l'istruzione IIF annidata concatenato lungo il percorso falseValue .
Esempio: se country="USA" o state="CA", il valore restituito "True", altrimenti restituisce "False".
IIF([country]="USA","True",IIF([state]="CA","True","False"))
- Se l'attributo di origine usato all'interno della funzione IIF è vuoto o Null, il controllo della condizione ha esito negativo.
- Esempi di espressioni IIF non supportate:
IIF([country]="","Other",[country])
IIF(IsNullOrEmpty([country]),"Other",[country])
IIF(IsPresent([country]),[country],"Other")
- Soluzione alternativa consigliata: usare la funzione Switch per verificare la presenza di valori vuoti/null. Esempio: se l'attributo country è vuoto, impostare il valore "Other". Se presente, passare il valore dell'attributo country all'attributo di destinazione.
Switch([country],[country],"","Other")
- Esempi di espressioni IIF non supportate:
InStr
Funzione: InStr(value1, value2, start, compareType)
Descrizione: la funzione InStr trova la prima occorrenza di una sottostringa in una stringa.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
value1 | Richiesto | String | Stringa da cercare |
value2 | Richiesto | String | Stringa da trovare |
start | Facoltativo | Intero | Posizione iniziale per trovare la sottostringa |
compareType | Facoltativo | Enum | Può essere vbTextCompare o vbBinaryCompare |
Esempio:InStr("The quick brown fox","quick")
Restituisce 5
InStr("repEated","e",3,vbBinaryCompare)
Restituisce 7
IsNull
Funzione: IsNull(Expression)
Descrizione: se l'espressione restituisce Null, la funzione IsNull restituisce true. Per un attributo, Null è espresso dall'assenza dell'attributo.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | Espressione | Espressione da valutare |
Esempio:IsNull([displayName])
Restituisce True se l'attributo non è presente.
IsNullorEmpty
Funzione: IsNullOrEmpty(Expression)
Descrizione: se l'espressione è null o una stringa vuota, la funzione IsNullOrEmpty restituisce true. Restituisce True se l'attributo è assente o è presente ma è una stringa vuota. La funzione inversa di questa funzione è denominata IsPresent.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | Espressione | Espressione da valutare |
Esempio:IsNullOrEmpty([displayName])
Restituisce True se l'attributo non è presente o è una stringa vuota.
IsPresent
Funzione: IsPresent(Expression)
Descrizione: se l'espressione restituisce una stringa che non è Null e non è vuota, la funzione IsPresent restituisce true. La funzione inversa di questa funzione è denominata IsNullOrEmpty.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | Espressione | Espressione da valutare |
Esempio:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
IsString
Funzione: IsString(Expression)
Descrizione: se l'espressione può essere valutata in un tipo stringa, la funzione IsString restituisce True.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Expression | Richiesto | Espressione | Espressione da valutare |
Articolo
Funzione: Item(attribute, index)
Descrizione: la funzione Item restituisce un elemento da una stringa/attributo multivalore.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
attribute | Richiesto | Attributo | Attributo multivalore da cercare |
index | Richiesto | Intero | Indicizzare un elemento nella stringa multivalore |
Esempio:Item([proxyAddresses], 1)
restituisce il primo elemento nell'attributo multivalore. L'indice 0 non deve essere usato.
Join.
Funzione: Join(separator, source1, source2, ...)
Descrizione: Join() è simile a Append(), ad eccezione del fatto che può combinare più valori di stringa di origine in una singola stringa e ogni valore è separato da una stringa separatore .
Se uno dei valori di origine è un attributo multivalore, ogni valore di tale attributo viene unito, separato dal valore separatore.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
separator | Richiesto | String | Stringa usata per separare i valori di origine quando vengono concatenati in una sola stringa. Può essere "" se non sono necessari separatori. |
source1 sourceN | Obbligatorio per un numero variabile di volte | String | Valori stringa da unire. |
Sinistra
Funzione: Left(String, NumChars)
Descrizione: la funzione Left restituisce un numero specificato di caratteri a sinistra di una stringa. Se numChars = 0, restituisce una stringa vuota. Se numChars < 0, restituisce una stringa di input. Se string è Null, restituisce una stringa vuota. Se string contiene un numero di caratteri inferiore al numero specificato in numChars, viene restituita una stringa identica a string (ovvero contenente tutti i caratteri nel parametro 1).
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Stringa | Richiesto | Attributo | Stringa da cui restituire caratteri |
NumChars | Richiesto | Intero | Numero che identifica il numero di caratteri da restituire dall'inizio (a sinistra) della stringa |
Esempio:Left("John Doe", 3)
Restituisce "Joh".
Mid
Funzione: Mid(source, start, length)
Descrizione: restituisce una sottostringa del valore di origine. Una sottostringa è una stringa che contiene solo alcuni caratteri della stringa di origine.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | Corrisponde in genere al nome dell'attributo. |
start | Richiesto | Intero | Indice nella stringa source che indica il punto di inizio della sottostringa. Il primo carattere nella stringa ha un indice pari a 1, il secondo carattere ha un indice 2 e così via. |
length | Richiesto | Intero | Lunghezza della sottostringa. Se la lunghezza termina all'esterno della stringa di origine , la funzione restituisce la sottostringa dall'indice iniziale fino alla fine della stringa di origine . |
NormalizeDiacritics
Funzione: NormalizeDiacritics(source)
Descrizione: richiede un argomento stringa. Restituisce la stringa, ma con qualsiasi carattere diacritico sostituito con caratteri nondiacritici equivalenti. Viene in genere usata per convertire i nomi e i cognomi contenenti caratteri diacritici (accenti) in valori validi che possono essere usati in vari ID utente, ad esempio nomi dell'entità utente, nomi di account SAM e indirizzi di posta elettronica.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | In genere un attributo nome o cognome. |
Carattere con diacritico | Carattere normalizzato | Carattere con diacritico | Carattere normalizzato |
---|---|---|---|
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̂, ā̃, ǟ, ā, a̱, å̄ | a | Ä, À, Â, Ã, Å, Á, Ą, Ă, Ā, Ā́, Ā̀, Ā̂, Ā̃, Ǟ, Ā̈, Ǡ, A̱, Å̄ | Un |
æ, ǣ | ae | Æ, Ǣ | AE |
ç, č, ć, c̄, c̱ | c | Ç, Č, Ć, C̄, C̱ | A |
ď, d̄, ḏ | d | Ď, D̄, Ḏ | D |
ë, è, é, ê, ę, ė, ė, ē, ḗ, ḕ, ē̂, ē̃, ê̄, e̱, ë̄, e̊̄ | e | Ë, È, É, Ê, Ę, Ě, Ė, Ē, Ḗ, Ḕ, Ē̂, Ē̃, Ê̄, E̱, Ë̄, E̊̄ | E |
ğ, ḡ, g̱ | g | Ğ, Ḡ, G̱ | G |
ï, î, ì, í, ı, ī, ī́, ī̂, ī̃, i̱ | i | Ï, Î, Ì, Í, İ, Ī, Ī́, Ī̀, Ī̂, Ī̃, I̱ | I |
ł, ł, l̄, ḹ, ḻ | l | Ł, Ľ, L̄, Ḹ, Ḻ | L |
ñ, ̄, ṉ | n | Ñ, ̄, Ṉ | N |
ö, ò, õ, õ, ô, ó, ō, ṓ, ṑ, ō̂, ō̃, ȫ, ō, ȭ, ȱ, o̱ | o | Ö, Ò, Ő, Õ, Ô, Ó, Ō, Ṓ, Ṑ, Ō̂, Ō̃, Ȫ, Ō̈, Ǭ, Ȭ, Ȱ, O̱ | O |
ø, ø̄, ̄ | oe | Ø, Ø̄, ̄ | OE |
ř, r̄, ṟ, ṝ | r | Ř, R̄, Ṟ, Ṝ | R |
ß | ss | ||
š, ś, ş, s̄, s̱ | s | Š, Ś, Ș, Ş, S̄, S̱ | S |
ť, ť, t̄, ṯ | t | Ť, Ț, T̄, Ṯ | T |
ü, ù, ū, ú, ú, ū, ū, ū́, ū̂, ū̃, u̇̄, ǖ, ṻ, ṳ̄, u̱ | u | Ü, Ù, Ū, Ú, Ú, ̄, Ū, Ū̂, Ū̃, U̇̄, Ǖ, Ṻ, Ṳ̄, U̱ | U |
ý, ý, ȳ, ȳ' , ȳ scalabilità, ȳ̃, y̱ | y | Ȳ, Ȳ, Ȳ' , Ȳ̃, Y̱ | Y |
̄, ž, ž, z̄, ẕ | z | ̄, Ž, Ž, Z̄, Ẕ | Z |
Rimuovere i segni diacritici da una stringa
Esempio: sostituire caratteri contenenti segni accenti con caratteri equivalenti che non contengono segni accenti.
Espressione: NormalizeDiacritics([givenName])
Input/output di esempio:
- INPUT (givenName): "Zoë"
- OUTPUT: "Zoe"
Not
Funzione: Not(source)
Descrizione: capovolge il valore booleano dell'origine. Se il valore di origine è True, restituisce False. In caso contrario, restituisce True.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | Stringa booleana | I valori previsti per source sono "True" o "False". |
Ora
Funzione: Now()
Descrizione:
La funzione Now restituisce una stringa che rappresenta l'ora UTC corrente nel formato M/d/aaaa h:mm:ss tt.
Esempio:Now()
Valore di esempio restituito 2/7/2021 3:33:38 PM
NumFromDate
Funzione: NumFromDate(value)
Descrizione: la funzione NumFromDate converte un valore DateTime in formato Active Directory necessario per impostare attributi come accountExpires. Usare questa funzione per convertire i valori DateTime ricevuti da app hr cloud come Workday e SuccessFactors nella rappresentazione ad ad equivalente.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
value | Richiesto | String | Stringa di data e ora nel formato ISO 8601 . Se la variabile di data è in un formato diverso, usare la funzione FormatDateTime per convertire la data in formato ISO 8601. |
Esempio:
Esempio di Workday: supponendo di voler eseguire il mapping dell'attributo ContractEndDate da Workday, che è nel formato 2020-12-31-08:00 al campo accountExpires in AD, ecco come è possibile usare questa funzione e modificare l'offset del fuso orario in modo che corrisponda alle impostazioni locali.
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
Esempio di SuccessFactors: supponendo di voler eseguire il mapping dell'attributo endDate da SuccessFactors, che è nel formato M/d/aaaaa hh:mm:ss tt al campo accountExpires in AD, ecco come usare questa funzione e modificare l'offset del fuso orario in modo che corrisponda alle impostazioni locali.
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))
PCase
Funzione: PCase(source, wordSeparators)
Descrizione: la funzione PCase converte il primo carattere di ogni parola in una stringa in lettere maiuscole e tutti gli altri caratteri vengono convertiti in lettere minuscole.
Parametri:
Nome | Obbligatoria/Facoltativa | Type | Note |
---|---|---|---|
source | Richiesto | String | valore di origine da convertire in lettere maiuscole/minuscole appropriate. |
wordSeparators | Facoltativo | String | Specificare un set di caratteri che viene usato come separatori di parole (ad esempio: " ,-'") |
Note:
- Se il parametro wordSeparators non viene specificato, PCase richiama internamente la funzione .NET ToTitleCase per convertire la stringa di origine nel caso corretto. La funzione .NET ToTitleCase supporta un set completo di categorie di caratteri Unicode come separatori di parole.
- Spazio
- Nuovo carattere riga
- Caratteri di controllo come CRLF
- Formattare i caratteri di controllo
- Caratteri connectorPunctuation come carattere di sottolineatura
- Caratteri DashPunctuation come trattino e trattino (inclusi caratteri come En Dash, Em Dash, trattino doppio e così via)
- Caratteri OpenPunctuation e ClosePunctuation che si verificano in coppie come parentesi graffe, parentesi graffe, parentesi angolare e così via.
- Caratteri InitialQuotePunctuation e FinalQuotePunctuation come virgolette singole, virgolette doppie e virgolette angolari.
- Altri caratteri di punteggiatura , ad esempio punto esclamativo, segno di numero, segno percentuale, e commerciale, asterisco, virgola, virgola, punti, punti e così via.
- Caratteri MathSymbol come segno più, segno minore e maggiore di, linea verticale, tilde, segno di uguale e così via.
- CurrencySymbol personaggi come segno di dollaro, segno di centesimo, segno di sterlina, segno di euro e così via.
- ModifierSymbol caratteri come i tasti di colore, le punte di freccia e così via.
- Altri caratteri diSymbol come il segno di copyright, il segno di laurea, il segno registrato e così via.
- Se viene specificato il parametro wordSeparators , PCase usa solo i caratteri specificati come separatori di parole.
Esempio:
Si supponga di eseguire l'origine degli attributi firstName e lastName di SAP SuccessFactors e in HR entrambi questi attributi si trovano in lettere maiuscole. Usando la funzione PCase, è possibile convertire il nome in maiuscolo appropriato, come illustrato di seguito.
Espressione | Input | Output | Note |
---|---|---|---|
PCase([firstName]) |
firstName = "PABLO GONSALVES (SECOND)" | "Pablo Gonsalves (Secondo)" | Poiché il parametro wordSeparators non viene specificato, la funzione PCase usa il set di caratteri separatori di parole predefinito. |
PCase([lastName]," '-") |
lastName = "PINTO-DE'SILVA" | "Pinto-De'Silva" | La funzione PCase usa caratteri nel parametro wordSeparators per identificare le parole e trasformarle in maiuscole e minuscole appropriate. |
PCase(Join(" ",[firstName],[lastName])) |
firstName = GREGORY, lastName = "JAMES" | "Gregory James" | È possibile annidare la funzione Join all'interno di PCase. Poiché il parametro wordSeparators non viene specificato, la funzione PCase usa il set di caratteri separatori di parole predefinito. |
RandomString
Funzione: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)
Descrizione: la funzione RandomString genera una stringa casuale in base alle condizioni specificate. I caratteri consentiti possono essere identificati qui.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Lunghezza | Richiesto | Numero | Lunghezza totale della stringa casuale. Deve essere maggiore o uguale alla somma di MinimumNumbers, MinimumSpecialCharacters e MinimumCapital. Massimo 256 caratteri. |
MinimumNumbers | Richiesto | Numero | Numeri minimi nella stringa casuale. |
MinimumSpecialCharacters | Richiesto | Numero | Numero minimo di caratteri speciali. |
MinimumCapital | Richiesto | Numero | Numero minimo di lettere maiuscole nella stringa casuale. |
MinimumLowerCase | Richiesto | Numero | Numero minimo di lettere minuscole nella stringa casuale. |
CharactersToAvoid | Facoltativo | String | Caratteri da escludere durante la generazione della stringa casuale. |
Esempio 1: - Generare una stringa casuale senza restrizioni di caratteri speciali: RandomString(6,3,0,0,3)
Genera una stringa casuale con 6 caratteri. La stringa contiene 3 numeri e 3 caratteri minuscoli (1a73qt).
Esempio 2: - Generare una stringa casuale con restrizioni di caratteri speciali: RandomString(10,2,2,2,1,"?,")
Genera una stringa casuale con 10 caratteri. La stringa contiene almeno 2 numeri, 2 caratteri speciali, 2 lettere maiuscole, 1 lettera minuscola ed esclude i caratteri "?" e "," (1@!2BaRg53).
Redigere
Funzione: Redact()
Descrizione: la funzione Redact sostituisce il valore dell'attributo con il valore letterale stringa "[Redact]" nei log di provisioning.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
attributo/valore | Richiesto | String | Specificare l'attributo o la costante/stringa da ripetere dai log. |
Esempio 1: Redact an attribute :Example 1: Redact an attribute: Redact([userPrincipalName])
Rimuove userPrincipalName dai log di provisioning.
Esempio 2: Redact a string:Example 2: Redact a string: Redact("StringToBeRedacted")
Rimuove una stringa costante dai log di provisioning.
Esempio 3: Redact a random string:Example 3: Redact a random string: Redact(RandomString(6,3,0,0,3))
Rimuove la stringa casuale dai log di provisioning.
RemoveDuplicates
Funzione: RemoveDuplicates(attribute)
Descrizione: la funzione RemoveDuplicates accetta una stringa multivalore e assicurarsi che ogni valore sia univoco.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
attribute | Richiesto | Attributo multivalore | Attributo multivalore con duplicati rimossi |
Esempio:RemoveDuplicates([proxyAddresses])
restituisce un attributo proxyAddress sanificato in cui vengono rimossi tutti i valori duplicati.
Sostituzione
Funzione: Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)
Descrizione: sostituisce i valori all'interno di una stringa in modo con distinzione tra maiuscole e minuscole. La funzione si comporta in modo diverso a seconda dei parametri forniti:
Se vengono forniti oldValue e replacementValue:
- Sostituisce tutte le occorrenze di oldValue in source con replacementValue
Se vengono forniti oldValue e template:
- Sostituisce tutte le occorrenze di oldValue in template con il valore source
Se vengono forniti regexPattern e replacementValue:
- La funzione applica regexPattern alla stringa source ed è possibile usare i nomi del gruppo di regex per creare la stringa per replacementValue
Nota
Per altre informazioni sui costrutti di raggruppamento regex e sulle sottoespressione denominate, vedere Costrutti di raggruppamento nelle espressioni regolari.
Se vengono forniti regexPattern, regexGroupName e replacementValue:
- La funzione applica regexPattern alla stringa source e sostituisce tutti i valori che corrispondono a regexGroupName con replacementValue
Se vengono forniti regexPattern, regexGroupName e replacementAttributeName:
- Se l'origine ha un valore, viene restituita l'origine
- Se source non ha alcun valore, la funzione applica regexPattern a replacementAttributeName e restituisce il valore corrispondente a regexGroupName
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | In genere è il nome dell'attributo dell'oggetto source. |
oldValue | Facoltativo | String | Valore da sostituire in source o template. |
regexPattern | Facoltativo | String | Criterio di espressione regolare per il valore da sostituire in source. Quando si usa replacementAttributeName , il regexPattern viene applicato per estrarre un valore da replacementAttributeName. |
regexGroupName | Facoltativo | String | Nome del gruppo in regexPattern. Quando si usa replacementAttributeName denominato, si estrae il valore del gruppo regex denominato da replacementAttributeName e lo si restituisce come valore di sostituzione. |
replacementValue | Facoltativo | String | Nuovo valore con cui sostituire il precedente. |
replacementAttributeName | Facoltativo | String | Nome dell'attributo da usare per il valore di sostituzione |
annidato | Facoltativo | String | Quando viene specificato il valore del modello , cercare oldValue all'interno del modello e sostituirlo con il valore di origine . |
Sostituire caratteri usando un'espressione regolare
Esempio 1: uso di oldValue e replacementValue per sostituire l'intera stringa di origine con un'altra stringa.
Si supponga che il sistema HR abbia un attributo BusinessTitle
. Nell'ambito delle recenti modifiche al titolo di lavoro, l'azienda vuole aggiornare chiunque abbia il titolo aziendale "Product Developer" a "Software Engineer".
In questo caso, è quindi possibile usare l'espressione seguente nel mapping degli attributi.
Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )
- origine:
[BusinessTitle]
- oldValue: "Product Developer"
- replacementValue: "Software Engineer"
- Output dell'espressione: Software Engineer
Esempio 2: Uso di oldValue e modello per inserire la stringa di origine in un'altra stringa templatizzata .
Il parametro oldValue è un errore in questo scenario. In realtà è il valore che viene sostituito.
Si supponga di voler generare sempre l'ID di accesso nel formato <username>@contoso.com
. È presente un attributo di origine denominato UserID e si vuole usare tale valore per la <username>
parte dell'ID di accesso.
In questo caso, è quindi possibile usare l'espressione seguente nel mapping degli attributi.
Replace([UserID],"<username>", , , , , "<username>@contoso.com")
- source:
[UserID]
= "jsmith" - oldValue: "
<username>
" - modello: "
<username>@contoso.com
" - Output dell'espressione: "jsmith@contoso.com"
Esempio 3: Uso di regexPattern e replacementValue per estrarre una parte della stringa di origine e sostituirla con una stringa vuota o un valore personalizzato compilato usando modelli regex o nomi di gruppi regex.
Si supponga di avere un attributo telephoneNumber
di origine con componenti country code
e phone number
separati da uno spazio. Ad esempio, +91 9998887777
in questo caso, è possibile usare l'espressione seguente nel mapping degli attributi per estrarre il numero di telefono a 10 cifre.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )
- source:
[telephoneNumber]
= "+91 9998887777" - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - replacementValue: "
${phoneNumber}
" - Output dell'espressione: 9998887777
È anche possibile usare questo modello per rimuovere i caratteri e comprimere una stringa. Ad esempio, l'espressione seguente rimuove le parentesi, i trattini e gli spazi nella stringa del numero di cellulare e restituisce solo cifre.
Replace([mobile], , "[()\\s-]+", , "", , )
- fonte:
[mobile] = "+1 (999) 888-7777"
- regexPattern: "
[()\\s-]+
" - replacementValue: "" (stringa vuota)
- Output dell'espressione: 19998887777
Esempio 4: uso di regexPattern, regexGroupName e replacementValue per estrarre una parte della stringa di origine e sostituirla con un altro valore letterale o stringa vuota.
Si supponga che il sistema di origine abbia un attributo AddressLineData con due componenti numero di strada e nome della strada. Come parte di uno spostamento recente, si supponga che il numero di strada dell'indirizzo sia cambiato e si voglia aggiornare solo la parte del numero di strada della riga dell'indirizzo. In questo caso, è quindi possibile usare l'espressione seguente nel mapping degli attributi per estrarre il numero di strada.
Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )
- source:
[AddressLineData]
= "545 Tremont Street" - regexPattern: "
(?<streetNumber>^\\d*)
" - regexGroupName: "streetNumber"
- replacementValue: "888"
- Output dell'espressione: 888 Tremont Street
Ecco un altro esempio in cui il suffisso del dominio da un UPN viene sostituito con una stringa vuota per generare l'ID di accesso senza suffisso di dominio.
Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )
- source:
[userPrincipalName]
= "jsmith@contoso.com" - regexPattern: "
(?<Suffix>@(.)*)
" - regexGroupName: "Suffix"
- replacementValue: "" (stringa vuota)
- Output dell'espressione: jsmith
Esempio 5: uso di regexPattern, regexGroupName e replacementAttributeName per gestire gli scenari quando l'attributo di origine è vuoto o non ha un valore.
Si supponga che il sistema di origine abbia un attributo telephoneNumber. Se telephoneNumber è vuoto, si desidera estrarre le 10 cifre dell'attributo numero di cellulare. In questo caso, è quindi possibile usare l'espressione seguente nel mapping degli attributi.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )
- source:
[telephoneNumber]
= "" (stringa vuota) - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - regexGroupName: "phoneNumber"
- replacementAttributeName:
[mobile]
= "+91 8887779999" - Output dell'espressione: 8887779999
Esempio 6: è necessario trovare caratteri che corrispondono a un valore di espressione regolare e rimuoverli.
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
- source [mailNickname]
- oldValue: "john_doe72"
- replaceValue: ""
- Output dell'espressione: 72
SelectUniqueValue
Funzione: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, ...)
Descrizione: richiede almeno due argomenti, ovvero regole di generazione di valori univoche definite tramite espressioni. La funzione valuta ogni regola e controlla quindi il valore generato per verificarne l'univocità nella directory/app di destinazione. Il primo valore univoco trovato è quello restituito. Se tutti i valori sono già presenti nella destinazione, la voce viene depositata e il motivo viene registrato nei log di controllo. Non esiste alcun limite superiore al numero di argomenti che è possibile specificare.
Questa funzione deve essere al livello superiore e non può essere annidata.
Questa funzione non può essere applicata agli attributi con precedenza corrispondente.
Questa funzione è destinata a essere usata solo per la creazione di voci. Se viene usata con un attributo, impostare la proprietà Applica questo mapping su Solo durante la creazione dell'oggetto.
Questa funzione è attualmente supportata per l'uso con queste applicazioni:
- Provisioning utenti da Workday ad Active Directory
- Provisioning utenti da SuccessFactors ad Active Directory
- Provisioning basato su API per Active Directory locale
SelectUniqueValue non è supportato per l'uso con altre applicazioni di provisioning.
La ricerca LDAP eseguita dalla funzione SelectUniqueValue in Active Directory locale non esegue l'escape di caratteri speciali come diacritici. Se si passa una stringa come "Jéssica Smith" che contiene un carattere speciale, si verificano errori di elaborazione. Annidare la funzione NormalizeDiacritics come illustrato in questo esempio per normalizzare i caratteri speciali.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
uniqueValueRule1 … uniqueValueRuleN | Sono necessari almeno 2 argomenti, nessun limite superiore | String | Elenco delle regole di generazione di valori univoci da valutare. |
Generare un valore univoco per l'attributo userPrincipalName (UPN)
Esempio: in base al nome dell'utente, al secondo nome e al cognome dell'utente, è necessario generare un valore per l'attributo UPN e verificarne l'univocità nella directory di AD di destinazione prima di assegnare il valore all'attributo UPN.
Expression:
SelectUniqueValue(
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 1), [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 2), [PreferredLastName]))), "contoso.com")
)
Input/output di esempio:
- INPUT (PreferredFirstName): "John"
- INPUT (PreferredLastName): "Smith"
- OUTPUT: "John.Smith@contoso.com" se il valore UPN di John.Smith@contoso.com non esiste già nella directory
- OUTPUT: "J.Smith@contoso.com" se il valore UPN di John.Smith@contoso.com esiste già nella directory
- OUTPUT: "Jo.Smith@contoso.com" se i due valori UPN precedenti esistono già nella directory
SingleAppRoleAssignment
Funzione: SingleAppRoleAssignment([appRoleAssignments])
Descrizione: restituisce un'unica appRoleAssignment dall'elenco di tutte le appRoleAssignments assegnate a un utente per una determinata applicazione. Questa funzione è necessaria per convertire l'oggetto appRoleAssignments in una singola stringa relativa al nome di un ruolo. La procedura consigliata consiste nel garantire che venga assegnato un solo appRoleAssignment a un utente alla volta. Questa funzione non è supportata negli scenari in cui gli utenti hanno più assegnazioni di ruolo dell'app.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
[appRoleAssignments] | Richiesto | String | Oggetto [appRoleAssignments]. |
Divisa
Funzione: Split(source, delimiter)
Descrizione: suddivide una stringa in una matrice multivalore, usando il carattere delimitatore specificato.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | source da aggiornare. |
delimiter | Richiesto | String | Specifica il carattere utilizzato per suddividere la stringa (esempio: ",") |
Dividere una stringa in una matrice multivalore
Esempio: è necessario prendere un elenco delimitato da virgole di stringhe e suddividerli in una matrice che può essere collegata a un attributo multivalore come l'attributo PermissionSets di Salesforce. In questo esempio, un elenco di set di autorizzazioni viene popolato in extensionAttribute5 in Microsoft Entra ID.
Espressione: Split([extensionAttribute5], ",")
Input/output di esempio:
- INPUT (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- OUTPUT: ["PermissionSetOne", "PermissionSetTwo"]
StripSpaces
Funzione: StripSpaces(source)
Descrizione: rimuove tutti gli spazi (" ") dalla stringa di origine.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | source da aggiornare. |
Switch
Funzione: Switch(source, defaultValue, key1, value1, key2, value2, ...)
Descrizione: quando il valore di origine corrisponde a una chiave, restituisce il valore per tale chiave. Se il valore del parametro source non corrisponde ad alcuna chiave, verrà restituito defaultValue. I parametri key e value devono essere sempre accoppiati. Le funzioni prevedono sempre un numero pari di parametri. La funzione non deve essere usata per gli attributi referenziale, ad esempio manager.
Nota
La funzione Switch esegue un confronto tra stringhe con distinzione tra maiuscole e minuscole dei valori di origine e chiave . Se si vuole eseguire un confronto senza distinzione tra maiuscole e minuscole, normalizzare la stringa di origine prima del confronto usando una funzione ToLower annidata e assicurarsi che tutte le stringhe chiave usino lettere minuscole.
Esempio: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")
. In questo esempio, l'attributo statusFlag
di origine può avere valori ("True" / "true" / "TRUE"). Tuttavia, la funzione Switch lo converte sempre in stringa minuscola "true" prima del confronto con i parametri chiave .
Attenzione
Per il parametro di origine , non usare le funzioni annidate IsPresent, IsNull o IsNullOrEmpty. Usare invece una stringa vuota letterale come uno dei valori chiave.
Esempio: Switch([statusFlag], "Default Value", "true", "1", "", "0")
. In questo esempio, se l'attributo statusFlag
di origine è vuoto, la funzione Switch restituisce il valore 0.
Attenzione
Problema: il servizio di provisioning imposta erroneamente un valore di attributo su Null nel sistema di destinazione quando si usa un'istruzione switch.
Soluzione: usare un'istruzione IIF anziché un'istruzione switch per evitare valori Null imprevisti o usare la funzione IgnoreFlowIfNullOrEmpty con l'istruzione switch. Ad esempio, switch([companyName], "External", "Company A", "A", "Company B", "B") deve essere rappresentato come IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")). Nei casi in cui il valore predefinito è un attributo, usare un'espressione come IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], "Company A", "A", "Company B", "B")).
Causa radice: questo problema è specifico per gli scenari in cui Microsoft Entra ID è il sistema di origine e l'istruzione switch contiene un valore predefinito.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | Source da aggiornare. |
defaultValue | Facoltativo | String | Valore predefinito da usare se l'origine non corrisponde ad alcuna chiave. Può essere una stringa vuota (""). |
key | Richiesto | String | Parametro key con cui confrontare il valore di source. |
value | Richiesto | String | Valore di sostituzione per il valore source corrispondente al parametro key. |
Sostituire un valore in base a un set di opzioni predefinito
Esempio: definire il fuso orario dell'utente in base al codice di stato archiviato in Microsoft Entra ID. Se il codice di stato non corrisponde ad alcuna opzione predefinita, usare il valore predefinito "Australia/Sydney".
Expression:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
Input/output di esempio:
- INPUT (state): "QLD"
- OUTPUT: "Australia/Brisbane"
ToLower
Funzione: ToLower(source, culture)
Descrizione: accetta un valore stringa di origine e lo converte in lettere minuscole usando le regole delle impostazioni cultura specificate. Se non sono specificate informazioni sulle impostazioni cultura , usa le impostazioni cultura invarianti.
Se si desidera impostare valori esistenti nel sistema di destinazione in lettere minuscole, aggiornare lo schema per l'applicazione di destinazione e impostare la proprietà caseExact su "true" per l'attributo a cui si è interessati.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | In genere è il nome dell'attributo dell'oggetto di origine. |
Impostazioni cultura | Facoltativo | String | Il formato per il nome delle impostazioni cultura basato su RFC 4646 è languagecode2-country/regioncode2, in cui languagecode2 è il codice lingua a due lettere e country/regioncode2 è il codice di impostazioni cultura secondarie a due lettere. Gli esempi includono ja-JP per il giapponese (Giappone) e en-US per l'inglese (Stati Uniti). Nei casi in cui non è disponibile un codice linguistico a due lettere, viene usato un codice di tre lettere derivato da ISO 639-2. |
Converte il valore userPrincipalName (UPN) generato in caratteri minuscoli
Esempio: si vuole generare il valore UPN concatenando i campi di origine PreferredFirstName e PreferredLastName e convertendo tutti i caratteri in lettere minuscole.
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
Input/output di esempio:
- INPUT (PreferredFirstName): "John"
- INPUT (PreferredLastName): "Smith"
- OUTPUT: "john.smith@contoso.com"
ToUpper
Funzione: ToUpper(source, culture)
Descrizione: accetta un valore stringa di origine e lo converte in lettere maiuscole usando le regole delle impostazioni cultura specificate. Se non sono specificate informazioni sulle impostazioni cultura , usa le impostazioni cultura invarianti.
Se si desidera impostare i valori esistenti nel sistema di destinazione in lettere maiuscole, aggiornare lo schema per l'applicazione di destinazione e impostare la proprietà caseExact su "true" per l'attributo a cui si è interessati.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
source | Richiesto | String | In genere è il nome dell'attributo dell'oggetto source. |
Impostazioni cultura | Facoltativo | String | Il formato per il nome delle impostazioni cultura basato su RFC 4646 è languagecode2-country/regioncode2, in cui languagecode2 è il codice lingua a due lettere e country/regioncode2 è il codice di impostazioni cultura secondarie a due lettere. Gli esempi includono ja-JP per il giapponese (Giappone) e en-US per l'inglese (Stati Uniti). Nei casi in cui non è disponibile un codice linguistico a due lettere, viene usato un codice di tre lettere derivato da ISO 639-2. |
Word
Funzione: Word(String,WordNumber,Delimiters)
Descrizione: la funzione word restituisce una parola contenuta all'interno di una stringa, in base ai parametri che descrivono i delimitatori da utilizzare e il numero di parola da restituire. Ogni stringa di caratteri contenuta nella stringa con valori separati da uno dei caratteri specificati nei delimitatori viene identificata come una parola:
Se number è < 1, restituisce una stringa vuota. Se string è Null, restituisce una stringa vuota. Se la stringa contiene meno di parole numeri o la stringa non contiene parole identificate dai delimitatori, viene restituita una stringa vuota.
Parametri:
Nome | Obbligatorio/Ripetuto | Type | Note |
---|---|---|---|
Stringa | Richiesto | Attributo multivalore | Stringa da cui restituire una parola. |
WordNumber | Richiesto | Intero | Numero che identifica il numero di parola da restituire |
Delimitatori | Richiesto | String | Stringa che rappresenta i delimitatori da utilizzare per identificare le parole |
Esempio:Word("The quick brown fox",3," ")
Restituisce "marrone".
Word("This,string!has&many separators",3,",!&#")
Restituisce "has".
Esempi
In questa sezione vengono forniti altri esempi di utilizzo delle funzioni di espressione.
Rimuovere un nome di dominio noto
Rimuovere un nome di dominio noto dal messaggio di posta elettronica di un utente per ottenere un nome utente. Ad esempio, se il dominio è "contoso.com", è possibile usare l'espressione seguente:
Expression:Replace([mail], "@contoso.com", , ,"", ,)
Input/output di esempio:
- INPUT (mail): "john.doe@contoso.com"
- OUTPUT: "john.doe"
Generare un alias utente concatenando parti del nome e del cognome
Generare un alias utente prendendo le prime tre lettere del nome dell'utente e le prime cinque lettere del cognome dell'utente.
Expression:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
Input/output di esempio:
- INPUT (givenName): "John"
- INPUT (surname): "Doe"
- OUTPUT: "JohDoe"
Aggiungere una virgola tra il cognome e il nome.
Aggiungere una virgola tra il cognome e il nome.
Expression:Join(", ", "", [surname], [givenName])
Input/output di esempio:
- INPUT (givenName): "John"
- INPUT (surname): "Doe"
- OUTPUT: "Doe, John"
Generare un ID per un utente in base all'ID oggetto Microsoft Entra. Rimuovere tutte le lettere dall'ID e aggiungere 1000 all'inizio.
Questa espressione consente di generare un identificatore per un utente che inizia con 1000 ed è probabilmente univoco.
Espressione: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", , ,)
Input/output di esempio:
- INPUT: "00aa00a-bb11-cc22-dd33-44ee44ee4ee"
- OUTPUT: "100064303565343762312333930392343435612626135652636136306362633065346234"
Articoli correlati
- Automatizzare il provisioning e il deprovisioning utenti in app SaaS
- Personalizzazione dei mapping degli attributi per il Provisioning dell’utente
- Ambito dei filtri per il Provisioning utente
- Usare SCIM per abilitare il provisioning automatico di utenti e gruppi da Microsoft Entra ID alle applicazioni
- Notifiche relative al provisioning dell'account
- Elenco di esercitazioni pratiche sulla procedura di integrazione delle applicazioni SaaS