Microsoft Entra ID의 특성 매핑에 대한 식 작성 참고자료
SaaS 애플리케이션에 프로비전을 구성하면 식 매핑은 지정할 수 있는 특성 매핑의 유형 중 하나입니다. 이러한 매핑의 경우 사용자의 데이터를 SaaS 애플리케이션에 대해 사용하는 형식으로 변환할 수 있는 스크립트 방식의 식을 작성해야 합니다.
구문 개요
특성 매핑을 위한 식의 구문은 VBA(Visual Basic Applications) 함수를 연상시킵니다.
전체 식은 이름 뒤 괄호 안에 인수가 있는 함수(FunctionName(
<<argument 1>>
,<<argument N>>
))를 기준으로 정의해야 합니다.함수를 서로 중첩할 수 있습니다. 예: FunctionOne(FunctionTwo(
<<argument1>>
))함수에 3가지 다른 유형의 인수를 전달할 수 있습니다.
- 특성은 대괄호로 묶어야 합니다. 예: [attributeName]
- 문자열 상수는 큰따옴표로 묶어야 합니다. 예: "미국"
- 기타 함수 예: FunctionOne(
<<argument1>>
, FunctionTwo(<<argument2>>
))
문자열 상수의 경우, 백슬래시 (\) 또는 따옴표(")가 문자열에 필요한 경우 백슬래시(\) 기호로 이스케이프되어야 합니다. 예: "회사 이름: \"Contoso\""
구문은 대/소문자를 구분하므로 함수에 구문을 문자열로 입력할 때 이를 고려해야 하며, 아니면 여기서 바로 복사하여 붙여넣습니다.
함수 목록
AppendAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNullIsNullOrEmptyIsPresentIsStringItemJoinLeftMidNormalizeDiacriticsNotNowNumFromDatePCaseRandomStringRedactRemoveDuplicatesReplaceSelectUniqueValueSingleAppRoleAssignmentSplitStripSpacesSwitchToLowerToUpperWord
추가
함수: Append(source, suffix)
설명: 원본 문자열 값을 문자열의 끝에 접미사로 추가합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 대개는 원본 개체의 특성 이름입니다. |
접미사 | Required | 문자열 | 원본 값의 끝에 추가하려는 문자열입니다. |
사용자 이름에 상수 접미사 추가
예: Salesforce 샌드박스를 사용하는 경우 동기화하기 전에 모든 사용자 이름에 다른 접미사를 추가해야 할 수 있습니다.
표현식:Append([userPrincipalName], ".test")
샘플 입/출력:
- 입력: (userPrincipalName): “John.Doe@contoso.com”
- 출력: "John.Doe@contoso.com.test"
AppRoleAssignmentsComplex
함수: AppRoleAssignmentsComplex([appRoleAssignments])
설명: 사용자에 대해 여러 역할을 구성하는 데 사용됩니다. 자세한 사용법은 자습서 - Microsoft Entra ID에서 SaaS 애플리케이션에 대한 사용자 프로비전 특성 매핑 사용자 지정를 참조하세요.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
[appRoleAssignments] | Required | 문자열 | [appRoleAssignments] 개체. |
BitAnd
함수: BitAnd(value1, value2)
설명: 이 함수는 두 매개 변수를 전부 이진 표현으로 변환시키고 비트를 다음과 같이 설정합니다.
- 0 - value1 및 value2의 해당 비트 중 하나 또는 둘 모두가 0인 경우
- 1 - 2개 모두 해당 비트일 경우 1입니다.
즉, 두 매개 변수의 해당 비트가 1일 경우를 제외하는 모든 경우에는 0을 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
value1 | Required | Num | value2를 사용하여 AND로 입력해야 하는 숫자 값 |
value2 | Required | Num | value1을 사용하여 AND로 입력해야 하는 숫자 값 |
예제BitAnd(&HF, &HF7)
:
11110111 AND 00000111 = 00000111이므로 BitAnd
는 7, 즉 이진 값으로 00000111을 반환합니다.
CBool
기능:CBool(Expression)
설명:CBool
은 계산된 식에 따라 부울을 반환합니다. 식이 0이 아닌 값으로 계산되는 경우 CBool
은 True를 반환하고, 그러지 않으면 False를 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 유효한 식 |
예제CBool([attribute1] = [attribute2])
:
두개의 속성이 같은 동일한 값을 가지면 True로 반환합니다.
CDate
기능:
CDate(expression)
설명:
CDate 함수는 문자열에서 UTC 날짜/시간을 반환합니다. DateTime은 네이티브 특성 유형이 아니지만 FormatDateTime 및 DateAdd와 같은 날짜 함수 내에서 사용할 수 있습니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 날짜/시간을 나타내는 유효한 문자열입니다. 지원되는 형식은 .NET 사용자 지정 날짜 및 시간 형식 문자열을 참조하세요. |
설명:
반환된 문자열은 항상 UTC이며 M/d/yyyy h:mm:ss tt 형식을 따릅니다.
예제 1:
CDate([StatusHireDate])
샘플 입/출력:
- 입력(StatusHireDate): "2020-03-16-07:00"
- 출력: "3/16/2020 7:00:00 AM" <-- 위의 DateTime에 해당하는 UTC가 반환됩니다.
예 2:
CDate("2021-06-30+08:00")
샘플 입/출력:
- 입력: "2021-06-30+08:00"
- 출력: "6/29/2021 4:00:00 PM" <-- 위의 DateTime에 해당하는 UTC가 반환됩니다.
예제 3:
CDate("2009-06-15T01:45:30-07:00")
샘플 입/출력:
- 입력: "2009-06-15T01:45:30-07:00"
- 출력: "6/15/2009 8:45:30 AM" <-- 위의 DateTime에 해당하는 UTC가 반환됩니다.
Coalesce
함수: Coalesce(source1, source2, ..., defaultValue)
설명: NULL이 아닌 첫 번째 원본 값을 반환합니다. 모든 인수가 NULL이고 defaultValue가 존재하는 경우 defaultValue가 반환됩니다. 모든 인수가 NULL이고 defaultValue가 없으면 Coalesce는 NULL을 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
**source1 sourceN | Required | 문자열 | 필수, 가변 횟수. 대개는 원본 개체의 특성 이름입니다. |
defaultValue | 선택 사항 | 문자열 | 모든 원본 값이 NULL일 때 사용할 기본값입니다. 빈 문자열("")일 수 있습니다. |
mail 값이 NULL이 아닌 경우 userPrincipalName을 전달
예: mail 특성이 있는 경우 이를 전달하고 그렇지 않은 경우에는 userPrincipalName 값을 대신 전달하려고 합니다.
표현식:Coalesce([mail],[userPrincipalName])
샘플 입/출력:
- 입력(mail): NULL
- 입력(userPrincipalName): “John.Doe@contoso.com”
- 출력: "John.Doe@contoso.com"
ConvertToBase64
함수: ConvertToBase64(source)
설명: ConvertToBase64 함수는 문자열을 유니코드 base64 문자열로 변환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | base 64로 변환할 문자열 |
예제ConvertToBase64("Hello world!")
:
"SABlAGwAbABvACAAdwBvAHIAbABkACEA"를 반환합니다.
ConvertToUTF8Hex
함수: ConvertToUTF8Hex(source)
설명: ConvertToUTF8Hex 함수는 문자열을 UTF8 16진수로 인코딩된 값으로 변환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | UTF8 16진수로 변환할 문자열 |
예제ConvertToUTF8Hex("Hello world!")
:
48656C6C6F20776F726C6421을 반환합니다.
Count
함수: Count(attribute)
설명: Count 함수는 다중값 특성의 요소 수를 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
attribute | Required | attribute | 계산된 요소가 있는 다중값 특성 |
CStr
함수: CStr(value)
설명: CStr 함수는 값을 문자열 데이터 형식으로 변환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
value | Required | 숫자, 참조 또는 부울 | 숫자 값, 참조 특성 또는 부울입니다. |
예제CStr([dn])
:
“cn=Joe,dc=contoso,dc=com”을 반환
DateAdd
기능:
DateAdd(interval, value, dateTime)
설명:
지정된 시간 간격이 추가된 날짜를 나타내는 날짜/시간 문자열을 반환합니다. 반환된 날짜는 M/d/yyyy h:mm:ss tt 형식입니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
interval | Required | 문자열 | 추가하려는 시간 간격입니다. 이 표 다음에 수락되는 값을 참조하세요. |
value | Required | 숫자 | 추가하려는 단위 수 입니다. 양수(미래 날짜) 또는 음수(과거 날짜)가 될 수 있습니다. |
dateTime | Required | DateTime | 간격이 추가되는 날짜를 나타내는 날짜/시간입니다. |
날짜 문자열을 입력으로 전달하는 경우 CDate 함수를 사용하여 날짜/시간 문자열을 래핑합니다. 시스템 시간을 UTC로 구하려면 Now 함수를 사용합니다.
interval 문자열은 다음 값 중 하나가 있어야 합니다.
- yyyy 년
- m 월
- d 일
- ww 주
- h 시간
- n 분
- s 초
예 1: Workday에서 들어오는 StatusHireDate를 기반으로 날짜 값 생성
DateAdd("d", 7, CDate([StatusHireDate]))
예시 | interval | value | dateTime(StatusHireDate 변수의 값) | output |
---|---|---|---|---|
채용 날짜에 7일 추가 | "d" | 7 | 2012-03-16-07:00 | 2012/3/23 오전 7:00:00 |
고용 날짜 10일 전 날짜 가져오기 | "d" | -10 | 2012-03-16-07:00 | 2012/3/6 오전 7:00:00 |
채용 날짜에 2주 추가 | "ww" | 2 | 2012-03-16-07:00 | 2012/3/30 오전 7:00:00 |
채용 날짜에 10개월 추가 | "m" | 10 | 2012-03-16-07:00 | 2013/1/16 오전 7:00:00 |
채용 날짜에 2년 추가 | "yyyy" | 2 | 2012-03-16-07:00 | 2014/3/16 오전 7:00:00 |
DateDiff
기능:
DateDiff(interval, date1, date2)
설명:
이 함수는 interval 매개 변수를 사용하여 두 입력 날짜 간의 차이를 나타내는 숫자를 반환합니다. 다음을 반환합니다.
- date2 > date1이면 양수,
- date2 < date1이면 음수,
- date2 == date1이면 0
매개 변수:
이름 | 필수/선택 사항 | Type | 주의 |
---|---|---|---|
interval | Required | 문자열 | 차이를 계산하는 데 사용할 시간 간격입니다. |
date1 | Required | DateTime | 유효한 날짜를 나타내는 DateTime입니다. |
date2 | Required | DateTime | 유효한 날짜를 나타내는 DateTime입니다. |
날짜 문자열을 입력으로 전달하는 경우 CDate 함수를 사용하여 날짜/시간 문자열을 래핑합니다. 시스템 시간을 UTC로 구하려면 Now 함수를 사용합니다.
interval 문자열은 다음 값 중 하나가 있어야 합니다.
- yyyy 년
- m 월
- d 일
- ww 주
- h 시간
- n 분
- s 초
예 1: 다양한 간격을 사용하여 현재 날짜와 Workday의 고용 날짜를 비교
DateDiff("d", Now(), CDate([StatusHireDate]))
예시 | interval | date1 | date2 | output |
---|---|---|---|---|
두 날짜 간의 양수 차이(일) | d | 2021-08-18+08:00 | 2021-08-31+08:00 | 13 |
두 날짜 간의 음수 차이(일) | d | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -3449 |
두 날짜 간의 차이(주) | ww | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -493 |
두 날짜 간의 차이(월) | 분 | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -113 |
두 날짜 간의 연 차이 | yyyy | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -9 |
두 날짜가 동일한 경우의 차이 | d | 2021-08-31+08:00 | 2021-08-31+08:00 | 0 |
두 날짜 간의 차이(시간) | 시간 | 2021-08-24 | 2021-08-25 | 24 |
두 날짜 간의 차이(분) | n | 2021-08-24 | 2021-08-25 | 1440 |
두 날짜 간의 차이(초) | s | 2021-08-24 | 2021-08-25 | 86400 |
예제 2: DateDiff 함수를 IIF 함수와 결합하여 특성 값 설정
Workday에서 계정이 활성 상태인 경우 고용 날짜가 앞으로 5일 이내인 경우에만 사용자의 accountEnabled 특성을 True로 설정합니다.
Switch([Active], ,
"1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"),
"0", "False")
DateFromNum
함수: DateFromNum(value)
설명: DateFromNum 함수는 AD의 날짜 값 형식을 DateTime 형식으로 변환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
value | Required | 날짜 | DateTime 형식으로 변환할 AD 날짜 |
예제DateFromNum([lastLogonTimestamp])
:
DateFromNum(129699324000000000)
2012년 1월 1일 오후 11시를 나타내는 DateTime을 반환합니다.
FormatDateTime
함수: FormatDateTime(source, dateTimeStyles, inputFormat, outputFormat)
설명: 한 형식의 날짜 문자열을 다른 형식으로 변환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 대개는 원본 개체의 특성 이름입니다. |
dateTimeStyles | 선택 사항 | 문자열 | 이 매개 변수를 사용하여 일부 날짜 및 시간 구문 분석 메서드에 대해 문자열 구문 분석을 사용자 지정하는 서식 옵션을 지정할 수 있습니다. 지원되는 값은 DateTimeStyles 문서를 참조하세요. 빈 상태로 두면 사용되는 기본값은 DateTimeStyles.RoundtripKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite입니다. |
inputFormat | Required | 문자열 | 원본 값의 예상된 형식입니다. 지원되는 형식은 .NET 사용자 지정 날짜 및 시간 형식 문자열을 참조하세요. |
outputFormat | Required | 문자열 | 출력 날짜의 형식입니다. |
특정 형식에서 문자열로 출력 날짜
예: ServiceNow와 같은 SaaS 애플리케이션에 특정 형식으로 된 날짜를 보내려고 합니다. 이때 다음 식의 사용을 고려할 수 있습니다.
표현식:
FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
샘플 입/출력:
- 입력 (extensionAttribute1): "20150123105347.1Z"
- 출력: "2015-01-23"
GUID
함수: Guid()
설명: Guid 함수는 임의의 새 GUID를 생성합니다.
예제:
Guid()
샘플 출력: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
IgnoreFlowIfNullOrEmpty
함수: IgnoreFlowIfNullOrEmpty(expression)
설명: IgnoreFlowIfNullOrEmpty 함수는 묶은 함수 또는 특성이 NULL이거나 비어 있는 경우 특성을 무시하고 흐름에서 삭제하도록 프로비저닝 서비스에 지시합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 계산할 식 |
예 1: null인 경우 특성을 전달하지 마세요.
IgnoreFlowIfNullOrEmpty([department])
위 식은 부서 특성이 null이거나 비어 있는 경우 프로비전 흐름에서 해당 특성을 삭제합니다.
예 2: 식 매핑이 빈 문자열 또는 Null로 평가되는 경우 특성을 전달하지 않음
SuccessFactors 특성 prefix가 다음 식 매핑을 사용하여 온-프레미스 Active Directory 특성 personalTitle에 매핑된다고 가정해 보겠습니다.
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
위 식은 먼저 Switch 함수를 평가합니다. 접두사 특성에 Switch 함수 내에 나열된 값이 없는 경우 ** 는 빈 문자열을 반환하고 personalTitle 특성은 온-프레미스 Active Directory 프로비저닝 흐름에 포함되지 않습니다.
IIF
함수: IIF(condition,valueIfTrue,valueIfFalse)
함수: IIF 함수는 지정된 조건에 따라 가능한 값 집합 중 하나를 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
condition | Required | 변수 또는 식 | true 또는 false로 평가될 수 있는 값 또는 식입니다. |
valueIfTrue | Required | 변수 또는 문자열 | 조건이 true로 평가되는 경우 반환된 값입니다. |
valueIfFalse | Required | 변수 또는 문자열 | 조건이 false로 평가되는 경우 반환된 값입니다. |
조건에서 다음 비교 연산자를 사용할 수 있습니다.
- 같음(=) 및 같지 않음(<>)
- 보다 큼(>) 및 보다 크거나 같음(>=)
- 보다 작음(<) 및 보다 작거나 같음(<=)
예: country="USA"이면 대상 특성 값을 원본 국가 특성으로 설정하고, 그렇지 않으면 대상 특성 값을 원본 부서 특성으로 설정합니다.
IIF([country]="USA",[country],[department])
알려진 제한 사항
이 섹션에는 IIF 함수에 대한 제한 사항과 해결 방법이 포함되어 있습니다. 사용자 만들기 문제 해결에 대한 자세한 내용은 null/빈 값으로 인해 만들기 실패를 참조하세요.
- IIF 함수는 현재 AND 및 OR 논리 연산자를 지원하지 않습니다.
- AND 논리를 구현하려면 trueValue 경로를 따라 연결된 중첩 IIF 문을 사용합니다.
예: country="USA"이고 state="CA"이면 값 "True"를 반환하고, 그렇지 않으면 "False"를 반환합니다.
IIF([country]="USA",IIF([state]="CA","True","False"),"False")
- OR 논리를 구현하려면 falseValue 경로를 따라 연결된 중첩 IIF 문을 사용합니다.
예: country="USA" 또는 state="CA"이면 값 "True"를 반환하고 그렇지 않으면 "False"를 반환합니다.
IIF([country]="USA","True",IIF([state]="CA","True","False"))
- IIF 함수 내에서 사용되는 원본 특성이 비어 있거나 null이면 조건 검사가 실패합니다.
- 지원되지 않는 IIF 식 예:
IIF([country]="","Other",[country])
IIF(IsNullOrEmpty([country]),"Other",[country])
IIF(IsPresent([country]),[country],"Other")
- 권장 해결 방법: Switch 함수를 사용하여 빈/null 값을 확인합니다. 예: country 특성이 비어 있으면 "Other" 값을 설정합니다. 존재하면 country 특성 값을 대상 특성에 전달합니다.
Switch([country],[country],"","Other")
- 지원되지 않는 IIF 식 예:
InStr
함수: InStr(value1, value2, start, compareType)
설명: InStr 함수는 문자열에서 첫 번째 하위 문자열을 찾습니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
value1 | Required | 문자열 | 검색할 문자열 |
value2 | Required | 문자열 | 검색될 문자열 |
start | 선택 사항 | 정수 | 하위 문자열을 찾을 시작 위치 |
compareType | 선택 사항 | 열거형 | vbTextCompare 또는 vbBinaryCompare |
예제InStr("The quick brown fox","quick")
:
5로 계산됩니다.
InStr("repEated","e",3,vbBinaryCompare)
7로 계산합니다.
IsNull
함수: IsNull(Expression)
설명: 식이 Null로 계산되면 IsNull 함수는 true를 반환합니다. 특성이 없는 경우 Null로 표현됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 계산할 식 |
예제IsNull([displayName])
:
특성이 없으면 True를 반환합니다.
IsNullorEmpty
함수: IsNullOrEmpty(Expression)
설명: 식이 null 또는 빈 문자열일 경우 IsNullOrEmpty 함수는 true를 반환합니다. 특성이 없거나 존재하지만 빈 문자열인 경우 True로 평가됩니다. 이 함수의 역원을 IsPresnt라고 합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 계산할 식 |
예제IsNullOrEmpty([displayName])
:
특성이 없거나 빈 문자열인 경우 True를 반환합니다.
IsPresent
함수: IsPresent(Expression)
설명: 식이 Null이 아니고 비어 있지 않은 문자열로 계산되는 경우 IsPresent 함수는 true를 반환합니다. 이 함수의 역함수는 IsNullOrEmpty으로 지칭됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 계산할 식 |
예제Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
:
IsString
함수: IsString(Expression)
설명: 식이 문자열 형식으로 계산될 수 있는 경우 IsString 함수는 True로 계산됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
식 | Required | 식 | 계산할 식 |
Item
함수: Item(attribute, index)
함수: Item 함수는 다중값 문자열/특성에서 하나의 항목을 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
attribute | Required | Attribute | 검색할 다중 값 특성 |
인덱스 | Required | 정수 | 다중값 문자열에서 항목에 대한 인덱스 |
예:Item([proxyAddresses], 1)
은 다중값 특성의 첫 번째 항목을 반환합니다. 인덱스 0은 사용하면 안 됩니다.
Join
함수: Join(separator, source1, source2, …)
설명: 다중 source 문자열 값을 단일 문자열로 조인할 수 있다는 점을 제외하고 Join()은 Append()와 유사하며, 각 값은 separator 문자열로 구분됩니다.
원본 값 중 하나가 다중값 특성인 경우, 해당 특성의 모든 값은 함께 조인되며 구분 기호 값에 의해 구분됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
separator | Required | 문자열 | 문자열이 하나의 문자열로 연결되면 원본 값을 구분하는데 문자열을 사용합니다. 구분 기호가 필요하지 않은 경우 ""일 수 있습니다. |
**source1 sourceN | 필수, 시간 변수 | 문자열 | 값이 함께 조인될 문자열입니다. |
Left
함수: Left(String, NumChars)
설명: Left 함수는 문자열 왼쪽부터 지정된 수의 문자를 반환합니다. numChars = 0 인 경우, 빈 문자열을 반환합니다. numCahrs < 0,인 경우, 입력된 문자열을 반환합니다. 문자열이 null이면 빈 문자열을 반환합니다. 문자열이 numChars 내에서 숫자가 지정한 문자보다 적은 문자를 포함하는 경우, 문자열과 동일한 문자열(즉, 매개 변수 1의 모든 문자가 포함)이 반환됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
String | Required | Attribute | 문자를 반환할 문자열 |
NumChars | Required | 정수 | 문자열의 시작(왼쪽)부터 반환할 문자 수를 나타내는 숫자 |
예제Left("John Doe", 3)
:
"Joh"를 반환합니다.
Mid
함수: Mid(source, start, length)
설명: 원본 값의 부분 문자열을 반환합니다. 부분 문자열은 원본 문자열에서 문자 중 일부만 포함하는 문자열입니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 일반적으로 특성 이름입니다. |
start | Required | 정수 | 부분 문자열이 시작될 원본 문자열의 인덱스입니다. 문자열의 첫 번째 문자에는 인덱스 1이 있고, 두 번째 문자에는 인덱스 2가 있는 식입니다. |
length | Required | 정수 | 부분 문자열의 길이입니다. 길이가 source 문자열 외부에서 끝나면 함수는 start 인덱스에서 source 문자열 끝까지 하위 문자열을 반환합니다. |
NormalizeDiacritics
함수: NormalizeDiacritics(source)
설명: 문자열 인수가 하나 필요합니다. 문자열을 반환하지만 해당하는 비분음 부호 문자로 바뀐 분음 부호 문자를 포함합니다. 일반적으로 분음 부호 문자(악센트 부호)를 포함하는 이름 및 성을 다양한 사용자 ID(예: 사용자 계정 이름, SAM 계정 이름 및 이메일 주소)에 사용할 수 있는 올바른 값으로 변환하는 데 사용됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 일반적으로 이름 또는 성 특성입니다. |
분음 부호가 있는 문자 | 정규화된 문자 | 분음 부호가 있는 문자 | 정규화된 문자 |
---|---|---|---|
ä, à, â, ã, å, á, ą, ă, ā, ā́, ā̀, ā̂, ā̃, ǟ, ā̈, ǡ, a̱, å̄ | a | Ä, À, Â, Ã, Å, Á, Ą, Ă, Ā, Ā́, Ā̀, Ā̂, Ā̃, Ǟ, Ā̈, Ǡ, A̱, Å̄ | A |
æ, ǣ | ae | Æ, Ǣ | AE |
ç, č, ć, c̄, c̱ | c | Ç, Č, Ć, C̄, C̱ | C |
ď, d̄, ḏ | d | Ď, D̄, Ḏ | D |
ë, è, é, ê, ę, ě, ė, ē, ḗ, ḕ, ē̂, ē̃, ê̄, e̱, ë̄, e̊̄ | e | Ë, È, É, Ê, Ę, Ě, Ė, Ē, Ḗ, Ḕ, Ē̂, Ē̃, Ê̄, E̱, Ë̄, E̊̄ | E |
ğ, ḡ, g̱ | g | Ğ, Ḡ, G̱ | G |
ï, î, ì, í, ı, ī, ī́, ī̀, ī̂, ī̃, i̱ | i | Ï, Î, Ì, Í, İ, Ī, Ī́, Ī̀, Ī̂, Ī̃, I̱ | I |
ľ, ł, l̄, ḹ, ḻ | l | Ł, Ľ, L̄, Ḹ, Ḻ | L |
ñ, ń, ň, n̄, ṉ | n | Ñ, Ń, Ň, 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 |
ÿ, ý, ȳ, ȳ́, ȳ̀, ȳ̃, y̱ | y | Ÿ, Ý, Ȳ, Ȳ́, Ȳ̀, Ȳ̃, Y̱ | Y |
ź, ž, ż, z̄, ẕ | z | Ź, Ž, Ż, Z̄, Ẕ | Z |
문자열에서 분음 부호 제거
예: 악센트 기호를 포함하지 않는 해당 문자로 악센트 기호를 포함하는 문자로 대체합니다.
식: NormalizeDiacritics([givenName])
샘플 입/출력:
- 입력 (givenName): "Zoë"
- 출력: "Zoe"
Not
함수: Not(source)
설명: 원본의 부울 값을 대칭 이동합니다. 원본 값이 True인 경우 False를 반환합니다. 그렇지 않은 경우 True를 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 부울 문자열 | 예상 원본 값은 "True" 또는 "False"입니다. |
Now
함수: Now()
설명:
Now 함수는 현재 UTC DateTime을 나타내는 문자열을 M/d/yyyy h:mm:ss tt 형식으로 반환합니다.
예제Now()
:
반환 값 예 7/2/2021 3:33:38 PM
NumFromDate
함수: NumFromDate(value)
설명: NumFromDate 함수는 DateTime 값을 accountExpires와 같은 특성을 설정하는 데 필요한 Active Directory 형식으로 변환합니다. 이 함수를 사용하면 Workday 및 SuccessFactors와 같은 클라우드 HR 앱에서 받은 DateTime 값을 그에 상응하는 AD 표현으로 변환할 수 있습니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
value | Required | 문자열 | ISO 8601 형식의 날짜 시간 문자열입니다. 날짜 변수가 다른 형식인 경우 FormatDateTime 함수를 사용하여 날짜를 ISO 8601 형식으로 변환합니다. |
예제:
Workday를 예로 들어 Workday에서 2020-12-31-08:00 형식으로 된 ContractEndDate 특성을 AD의 accountExpires 필드로 매핑하는 경우 이 함수를 사용하여 로캘에 맞게 표준 시간대 오프셋을 변경하는 방법은 다음과 같습니다.
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
SuccessFactors를 예로 들어 SuccessFactors에서 M/d/yyyy hh:mm:ss tt 형식으로 된 endDate 특성을 AD의 accountExpires 필드로 매핑하는 경우 이 함수를 사용하여 로캘에 맞게 표준 시간대 오프셋을 변경하는 방법은 다음과 같습니다.
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))
PCase
함수: PCase(source, wordSeparators)
설명: PCase 함수는 문자열 내의 각 단어의 첫 문자를 대문자로 변환하고 다른 모든 문자를 소문자로 변환합니다.
매개 변수:
이름 | 필수/선택 사항 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 적절한 대/소문자로 변환할 원본 값입니다. |
wordSeparators | 선택 사항 | 문자열 | 단어 구분 기호로 사용되는 문자 집합을 지정합니다(예: " ,-""). |
설명:
- wordSeparators 매개 변수가 지정되지 않은 경우 PCase는 내부적으로 .NET 함수 ToTitleCase를 호출하여 원본 문자열을 적절한 대/소문자로 변환합니다. .NET 함수 ToTitleCase는 단어 구분 기호로 포괄적인 유니코드 문자 범주의 집합을 지원합니다.
- 공백 문자
- 줄 바꿈 문자
- CRLF와 같은 제어 문자
- 형식 제어 문자
- 밑줄과 같은 ConnectorPunctuation 문자
- 대시, 하이픈과 같은 DashPunctuation 문자(En 대시, Em 대시, 이중 하이픈과 같은 문자 포함)
- 괄호, 중괄호, 꺾쇠 괄호 등과 같은 쌍으로 나타나는 OpenPunctuation 및 ClosePunctuation 문자입니다.
- 작은따옴표, 큰따옴표 및 각따옴표와 같은 InitialQuotePunctuation 및 FinalQuotePunctuation 문자.
- 느낌표, 숫자 기호, 퍼센트 기호, 앰퍼샌드, 별표, 쉼표, 마침표, 콜론, 세미 콜론과 같은 OtherPunctuation 문자
- 더하기 기호, 보다 작음, 보다 큼 부호, 세로줄, 물결표, 등호와 같은 MathSymbol 문자
- 달러 기호, 센트 기호, 파운드 기호, 유로 기호 등과 같은 CurrencySymbol 문자입니다.
- 매크로, 강조, 화살표 등과 같은 ModifierSymbol 문자입니다.
- 저작권 기호, 학위 기호, 등록 기호 등과 같은 OtherSymbol 문자입니다.
- wordSeparators 매개 변수가 지정된 경우 PCase는 단어 구분 기호로 지정된 문자만 사용합니다.
예제:
SAP SuccessFactors에서 firstName 및 lastName 특성을 소싱하고 있으며 HR에서는 이 두 특성이 모두 대문자라고 가정해 봅니다. PCase 함수를 사용하여 여기에 표시된 것 같이 이름을 적절한 대/소문자로 변환할 수 있습니다.
식 | 입력 | 출력 | 주의 |
---|---|---|---|
PCase([firstName]) |
firstName = "PABLO GONSALVES(SECOND)" | "Pablo Gonsalves(Second)" | wordSeparators 매개 변수가 지정되지 않은 경우 PCase 함수는 기본 단어 구문 문자 집합을 사용합니다. |
PCase([lastName]," '-") |
lastName = "PINTO-DE'SILVA" | "Pinto-De'Silva" | PCase 함수는 wordSeparators 매개 변수의 문자를 사용하여 단어를 식별하고 이를 적절한 대/소문자로 변환합니다. |
PCase(Join(" ",[firstName],[lastName])) |
firstName = GREGORY, lastName = "JAMES" | "Gregory James" | PCase 내에서 조인 함수를 중첩할 수 있습니다. wordSeparators 매개 변수가 지정되지 않은 경우 PCase 함수는 기본 단어 구문 문자 집합을 사용합니다. |
RandomString
함수: RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)
설명: RandomString 함수는 지정된 조건에 따라 임의 문자열을 생성합니다. 허용되는 문자를 여기에서 식별할 수 있습니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
길이 | Required | 숫자 | 임의 문자열의 총 길이입니다. 이 값은 MinimumNumbers, MinimumSpecialCharacters 및 MinimumCapital의 합계보다 크거나 같아야 합니다. 최대 256자입니다. |
MinimumNumbers | Required | 숫자 | 임의 문자열의 최소 숫자입니다. |
MinimumSpecialCharacters | Required | 숫자 | 최소 특수 문자 수입니다. |
MinimumCapital | Required | 숫자 | 임의 문자열의 최소 대문자 수입니다. |
MinimumLowerCase | Required | 숫자 | 임의 문자열의 최소 소문자 수입니다. |
CharactersToAvoid | 선택 사항 | 문자열 | 임의 문자열을 생성할 때 제외할 문자입니다. |
예제 1: - 특수 문자 제한 없이 임의 문자열을 생성합니다. RandomString(6,3,0,0,3)
6자로 임의 문자열을 생성합니다. 문자열은 3개의 숫자와 3개의 소문자(1a73qt)를 포함합니다.
예제 2: - 특수 문자 제한이 있는 임의 문자열을 생성합니다. RandomString(10,2,2,2,1,"?,")
10자로 임의 문자열을 생성합니다. 문자열은 2개 이상의 숫자, 2개의 특수 문자, 2개의 대문자, 1개의 소문자를 포함하고 "?" 및 ","(1 @! 2BaRg53) 문자를 제외합니다.
편집
함수: Redact()
설명: Redact 함수는 프로비저닝 로그에서 특성 값을 문자열 리터럴 "[Redact]"로 바꿉니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
attribute/value | Required | 문자열 | 로그에서 수정할 특성 또는 상수/문자열을 지정합니다. |
예 1: 특성 수정: Redact([userPrincipalName])
프로비저닝 로그에서 userPrincipalName을 제거합니다.
예 2: 문자열 수정: Redact("StringToBeRedacted")
프로비저닝 로그에서 상수 문자열을 제거합니다.
예 3: 임의의 문자열 수정: Redact(RandomString(6,3,0,0,3))
프로비저닝 로그에서 임의의 문자열을 제거합니다.
RemoveDuplicates
함수: RemoveDuplicates(attribute)
설명: RemoveDuplicates 함수는 다중값 문자열을 사용하여 개별 값을 고유하게 만듭니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
attribute | Required | 다중값 특성 | 중복 항목이 제거된 다중값 특성 |
예:RemoveDuplicates([proxyAddresses])
모든 중복 값이 제거되는 정리된 ProxyAddress 특성을 반환합니다.
바꾸기
함수: Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)
설명: 대/소문자를 구분하는 방식으로 문자열 내의 값을 바꿉니다. 함수는 제공된 매개 변수에 따라 다르게 작동합니다.
oldValue 및 replacementValue가 제공되는 경우:
- source에서 발생하는 모든 oldValue를 replacementValue로 바꿉니다.
oldValue 및 template이 제공되는 경우:
- template에서 oldValue의 모든 항목을 원본 값으로 바꿉니다.
regexPattern 및 replacementValue가 제공되는 경우:
- 함수에서 regexPattern을 source 문자열에 적용하고, regex 그룹 이름을 사용하여 replacementValue에 대한 문자열을 생성할 수 있습니다.
참고 항목
정규식 그룹화 생성자 및 명명된 하위 식에 대한 자세한 내용은 정규식의 그룹화 생성자를 참조하세요.
regexPattern, regexGroupName, replacementValue가 제공되는 경우:
- 함수에서 regexPattern을 source 문자열에 적용하고, regexGroupName과 일치하는 모든 값을 replacementValue로 바꿉니다.
regexPattern, regexGroupName, replacementAttributeName이 제공되는 경우:
- source에 값이 있는 경우 source가 반환됩니다.
- source에 값이 없는 경우 함수는 regexPattern을 replacementAttributeName에 적용하고 regexGroupName과 일치하는 값을 반환합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 일반적으로 source 개체의 특성 이름입니다. |
oldValue | 선택 사항 | 문자열 | 원본 또는 템플릿에서 대체될 값입니다. |
regexPattern | 선택 사항 | 문자열 | 원본에서 대체될 값에 대한 Regex 패턴입니다. replacementAttributeName을 사용하면 regexPattern이 적용되어 replacementAttributeName에서 값을 추출합니다. |
regexGroupName | 선택 사항 | 문자열 | regexPattern내 그룹의 이름입니다. 명명된 replacementAttributeName을 사용하면 replacementAttributeName 에서 명명된 정규식 그룹의 값이 추출되어 대체 값으로 반환됩니다. |
replacementValue | 선택 사항 | 문자열 | 이전 값과 대체할 새로운 값입니다. |
replacementAttributeName | 선택 사항 | 문자열 | 대체 값에 사용할 특성의 이름입니다. |
템플릿 | 선택 사항 | 문자열 | template 값이 제공되는 경우 템플릿 내에서 oldValue를 찾아서 source 값으로 바꿉니다. |
정규식을 사용하여 문자를 바꿈
예제 1: oldValue 및 replacementValue를 사용하여 전체 원본 문자열을 다른 문자열로 바꿉니다.
HR 시스템에 BusinessTitle
특성이 있다고 가정해 보겠습니다. 최근 직위 변경의 일환으로 회사는 "제품 개발자"라는 직위를 가진 모든 사용자를 "소프트웨어 엔지니어"로 업데이트하려고 합니다.
이 경우 특성 매핑에서 다음 식을 사용할 수 있습니다.
Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )
- source:
[BusinessTitle]
- oldValue: "제품 개발자"
- replacementValue: "소프트웨어 엔지니어"
- 식 출력: 소프트웨어 엔지니어
예제 2: oldValue 및 template을 사용하여 원본 문자열을 다른 templatized 문자열에 삽입합니다.
oldValue 매개 변수는 이 시나리오에서 잘못된 명칭입니다. 실제로 바뀌는 값입니다.
항상 로그인 ID를 <username>@contoso.com
형식으로 생성하려는 경우를 가정해 보겠습니다. UserID라는 원본 특성이 있으며 로그인 ID의 <username>
부분에 이 값을 사용하려고 합니다.
이 경우 특성 매핑에서 다음 식을 사용할 수 있습니다.
Replace([UserID],"<username>", , , , , "<username>@contoso.com")
- 출처:
[UserID]
= "jsmith" - oldValue: "
<username>
" - template: "
<username>@contoso.com
" - 식 출력: "jsmith@contoso.com"
예제 3: regexPattern 및 replacementValue를 사용하여 원본 문자열의 일부를 추출하고 정규식 패턴 또는 정규식 그룹 이름을 사용하여 작성된 빈 문자열 또는 사용자 지정 값으로 바꿉니다.
country code
및 phone number
구성 요소가 공백 문자로 구분된 원본 특성 telephoneNumber
가 있다고 가정해 보겠습니다. 예를 들면 +91 9998887777
입니다. 이 경우 특성 매핑에서 다음 식을 사용하여 10자리 전화번호를 추출할 수 있습니다.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )
- source:
[telephoneNumber]
= "+91 9998887777" - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - replacementValue: "
${phoneNumber}
" - 식 출력: 9998887777
이 패턴을 사용하여 문자를 제거하고 문자열을 축소할 수도 있습니다. 예를 들어, 다음 식은 휴대폰 번호 문자열에서 괄호, 대시 및 공백 문자를 제거하고 숫자만 반환합니다.
Replace([mobile], , "[()\\s-]+", , "", , )
- source:
[mobile] = "+1 (999) 888-7777"
- regexPattern: "
[()\\s-]+
" - replacementValue: ""(빈 문자열)
- 식 출력: 19998887777
예제 4: regexPattern, regexGroupName 및 replacementValue를 사용하여 원본 문자열의 일부를 추출하고 다른 리터럴 값 또는 빈 문자열로 바꾸기.
원본 시스템에 거리 번호와 거리 이름이라는 두 개의 구성 요소가 있는 AddressLineData 특성이 있다고 가정해 보겠습니다. 최근 이사로 인해 주소의 거리 번호가 변경되어 주소 줄의 거리 번호 부분만 업데이트하려고 한다고 가정하겠습니다. 이 경우 특성 매핑에서 다음 식을 사용하여 거리 번호를 추출할 수 있습니다.
Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )
- 출처:
[AddressLineData]
= "545 트레몬트 스트리트" - regexPattern: "
(?<streetNumber>^\\d*)
" - regexGroupName: "streetNumber"
- replacementValue: "888"
- 식 출력: 888 Tremont Street
다음은 도메인 접미사 없이 로그인 ID를 생성하기 위해 UPN의 도메인 접미사를 빈 문자열로 바꾸는 또 다른 예입니다.
Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )
- source:
[userPrincipalName]
= "jsmith@contoso.com" - regexPattern: "
(?<Suffix>@(.)*)
" - regexGroupName: "Suffix"
- replacementValue: ""(빈 문자열)
- 식 출력: jsmith
예제 5: regexPattern, regexGroupName 및 replacementAttributeName을 사용하여 원본 특성이 비어 있거나 값이 없는 시나리오 처리.
원본 시스템에 telephoneNumber 특성이 있다고 가정해 보겠습니다. telephoneNumber가 비어 있는 경우 휴대폰 번호 특성의 10자리를 추출하려고 합니다. 이 경우 특성 매핑에서 다음 식을 사용할 수 있습니다.
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )
- source:
[telephoneNumber]
= ""(빈 문자열) - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - regexGroupName: "phoneNumber"
- replacementAttributeName:
[mobile]
= "+91 8887779999" - 식 출력: 8887779999
예 6: 정규식 값과 일치하는 문자를 찾아 제거해야 합니다.
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
- source [mailNickname]
- oldValue: "john_doe72"
- replaceValue: ""
- 식 출력: 72
SelectUniqueValue
함수: SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
설명: 최소 두 개의 인수가 필요하며, 이는 식을 사용하여 정의된 고유한 값 생성 규칙입니다. 함수는 각 규칙을 평가한 후 대상 앱/디렉터리에서 생성된 값이 고유한지 확인합니다. 발견된 첫 번째 고유 값이 반환된 값입니다. 모든 값이 대상에 이미 존재하는 경우 항목이 에스크로되고 그 이유가 감사 로그에 기록됩니다. 제공할 수 있는 인수 수에 상한은 없습니다.
이 함수는 최상위 수준에 있어야 하며 중첩될 수 없습니다.
우선 순위가 일치하는 특성에는 이 함수를 적용할 수 없습니다.
이 함수는 항목 만들기에만 사용할 수 있습니다. 특성과 함께 사용할 경우 매핑 적용 속성을 개체를 만드는 동안만으로 설정합니다.
이 함수는 현재 다음 애플리케이션과 함께 사용하도록 지원됩니다.
- Workday에서 Active Directory로의 사용자 프로비저닝
- SuccessFactors에서 Active Directory로 사용자 프로비저닝
- 온-프레미스 Active Directory에 대한 API 기반 프로비전
SelectUniqueValue는 다른 프로비전 애플리케이션과 함께 사용할 수 없습니다.
SelectUniqueValue 기능이 온-프레미스 Active Directory에서 수행하는 LDAP 검색은 분음 부호와 같은 특수 문자를 이스케이프하지 않습니다. 특수 문자가 포함된 "Jéssica Smith"와 같은 문자열을 전달하면 처리 오류가 발생합니다. 특수 문자를 표준화하려면 이 예에 표시된 대로 NormalizeDiacritics 함수를 중첩합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
uniqueValueRule1 … uniqueValueRuleN | 2개 이상 필요, 상한 없음 | 문자열 | 평가할 고유한 값 생성 규칙 목록입니다. |
UPN(userPrincipalName) 특성의 고유한 값 생성
예: 사용자의 이름, 중간 이름, 성에 따라, UPN 특성에 값을 할당하려면 먼저 해당 UPN 특성에 대해 값을 생성하고 대상 AD 디렉터리에서 해당 값이 고유한지 확인해야 합니다.
표현식:
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")
)
샘플 입/출력:
- (PreferredFirstName) 입력: “John”
- (PreferredLastName) 입력: “Smith”
- 출력: John.Smith@contoso.com의 UPN 값이 디렉터리에 아직 없는 경우 “John.Smith@contoso.com”
- 출력: John.Smith@contoso.com의 UPN 값이 디렉터리에 이미 있는 경우 “J.Smith@contoso.com”
- 출력: 위의 두 UPN 값이 디렉터리에 이미 있는 경우 “Jo.Smith@contoso.com”
SingleAppRoleAssignment
함수: SingleAppRoleAssignment([appRoleAssignments])
설명: 지정된 애플리케이션에 대해 사용자에게 할당된 모든 appRoleAssignment 목록에서 단일 appRoleAssignment를 반환합니다. 이 함수는 appRoleAssignments 개체를 단일 역할 이름 문자열로 변환하는 데 필요합니다. 모범 사례는 한 번에 하나의 appRoleAssignment만 한 사용자에게 할당되도록 하는 것입니다. 이 함수는 사용자에게 여러 앱 역할 할당이 있는 시나리오에서는 지원되지 않습니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
[appRoleAssignments] | Required | 문자열 | [appRoleAssignments] 개체. |
분할
함수: Split(source, delimiter)
설명: 지정된 구분 기호 문자를 사용하여 문자열을 다중 값 배열로 분할합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 원본 값입니다. |
delimiter | Required | 문자열 | 문자열을 분할하는 데 사용되는 문자를 지정합니다(예: ",") |
문자열을 다중 값 배열로 분할
예: 문자열의 쉼표로 구분된 목록을 가져와 Salesforce의 PermissionSets 특성과 같은 다중 값 특성에 연결할 수 있는 배열로 분할해야 합니다. 이 예에서는 권한 집합 목록이 Microsoft Entra ID의 ExtensionAttribute5에 채워집니다.
식: Split([extensionAttribute5], ",")
샘플 입/출력:
- 입력 (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- OUTPUT: ["PermissionSetOne", "PermissionSetTwo"]
StripSpaces
함수: StripSpaces(source)
설명: 원본 문자열에서 모든 공백(" ")을 제거합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 원본 값입니다. |
Switch
함수: Switch(source, defaultValue, key1, value1, key2, value2, …)
설명:: 원본 값이 key와 일치하면, 해당 key의 value를 반환합니다. 원본 값과 일치하는 키가 없으면 defaultValue를 반환합니다. Key 및 value 매개 변수는 항상 쌍으로 제공되어야 합니다. 함수는 항상 짝수 개수의 매개 변수를 예상합니다. 함수는 manager와 같은 참조 특성에 사용하면 안 됩니다.
참고 항목
Switch 함수는 source 및 key 값의 대/소문자를 구분하는 문자열 비교를 수행합니다. 대/소문자를 구분하지 않는 비교를 수행하려면 중첩된 ToLower 함수를 사용하여 비교하기 전에 source 문자열을 정규화하고 모든 key 문자열이 소문자를 사용하는지 확인합니다.
예: Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")
. 이 예제에서 source 특성 statusFlag
에는 값("True" / "true" / "TRUE")이 있을 수 있습니다. 그러나 Switch 함수는 key 매개 변수와 비교하기 전에 항상 이를 소문자 문자열 "true"로 변환합니다.
주의
source 매개 변수의 경우 중첩 함수 IsPresent, IsNull 또는 IsNullOrEmpty를 사용하지 마세요. 대신 리터럴 빈 문자열을 키 값 중 하나로 사용합니다.
예: Switch([statusFlag], "Default Value", "true", "1", "", "0")
. 이 예에서 source 특성 statusFlag
가 비어 있으면 Switch 함수는 값 0을 반환합니다.
주의
문제: switch 문을 사용할 때 프로비전 서비스가 대상 시스템에서 특성 값을 null로 잘못 설정했습니다.
해결 방법: switch 문 대신 IIF 문을 사용하여 예기치 않은 null 값을 방지하거나 switch 문과 함께 IgnoreFlowIfNullOrEmpty 함수를 사용합니다. 예를 들어 switch([companyName], "External", "Company A", "A", "Company B", "B")는 IIF([companyName] = "Company A", "A", IIF([companyName] = "Company B", "B", "External")로 표현되어야 합니다. 기본값이 특성인 경우 IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], "Company A", "A", "Company B", "B")와 같은 식을 사용합니다.
근본 원인: 이 문제는 Microsoft Entra ID가 원본 시스템이고 switch 문에 기본값이 포함된 시나리오와 관련이 있습니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | Source 값입니다. |
defaultValue | 선택 사항 | 문자열 | 원본이 모든 키와 일치하지 않는 경우 사용할 기본값입니다. 빈 문자열("")일 수 있습니다. |
key | Required | 문자열 | 원본 값과 비교할 Key입니다. |
value | Required | 문자열 | 키와 일치하는 원본 의 대체 값입니다. |
미리 정의된 옵션 집합을 기반으로 값 바꾸기
예: Microsoft Entra ID에 저장된 상태 코드를 기반으로 사용자의 표준 시간대를 정의합니다. 상태 코드가 미리 정의된 옵션 중 하나와 일치하지 않으면 기본값인 "오스트레일리아/시드니"를 사용합니다.
표현식:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
샘플 입/출력:
- 입력 (상태): "QLD"
- 출력: "오스트레일리아/브리즈번"
ToLower
함수: ToLower(source, culture)
설명: ‘원본’ 문자열 값을 가져와서 지정된 문화권 규칙을 사용하여 소문자로 변환합니다. 지정된 문화권 정보가 없으면 고정 문화권을 사용합니다.
대상 시스템의 기존 값을 소문자로 설정하려면 대상 애플리케이션의 스키마를 업데이트하고 관심 있는 특성에 대해 caseExact 속성을 'true'로 설정합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 대개는 원본 개체의 특성 이름 |
culture | 선택 사항 | 문자열 | RFC 4646 기반의 문화권 이름 형식은 languagecode2-country/regioncode2이며, 여기서 languagecode2는 2자 언어 코드이고 country/regioncode2는 2자 하위 문화권 코드입니다. 일본어(일본)의 ja-JP와 영어(미국)의 en-US를 예로 들 수 있습니다. 2자 언어 코드를 사용할 수 없는 경우 ISO 639-2에서 파생된 3자 코드가 사용됩니다. |
생성된 userPrincipalName(UPN) 값을 소문자로 변환
예: PreferredFirstName 및 PreferredLastName 원본 필드를 결합하고 모든 문자를 소문자로 변환하여 UPN 값을 생성하려고 합니다.
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
샘플 입/출력:
- (PreferredFirstName) 입력: “John”
- (PreferredLastName) 입력: “Smith”
- 출력: "john.smith@contoso.com"
ToUpper
함수: ToUpper(source, culture)
설명: ‘원본’ 문자열 값을 가져와서 지정된 문화권 규칙을 사용하여 대문자로 변환합니다. 지정된 문화권 정보가 없으면 고정 문화권을 사용합니다.
대상 시스템의 기존 값을 대문자로 설정하려면 대상 애플리케이션의 스키마를 업데이트하고 관심 있는 특성에 대해 caseExact 속성을 'true'로 설정합니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
source | Required | 문자열 | 대개는 원본 개체의 특성 이름입니다. |
culture | 선택 사항 | 문자열 | RFC 4646 기반의 문화권 이름 형식은 languagecode2-country/regioncode2이며, 여기서 languagecode2는 2자 언어 코드이고 country/regioncode2는 2자 하위 문화권 코드입니다. 일본어(일본)의 ja-JP와 영어(미국)의 en-US를 예로 들 수 있습니다. 2자 언어 코드를 사용할 수 없는 경우 ISO 639-2에서 파생된 3자 코드가 사용됩니다. |
Word
함수: Word(String,WordNumber,Delimiters)
설명: Word 함수는 사용할 구분 기호를 설명하는 매개 변수에 따라 문자열 내에 포함된 단어와 반환할 단어 수를 반환합니다. 구분 기호 내의 문자 중 하나로 구분되는 전체 문자열의 각 문자열은 단어로 식별됩니다.
숫자가 < 1인 경우 , 빈 문자열을 반환합니다. 문자열이 null이면, 빈 문자열을 반환합니다. 문자열이 단어 수보다 적거나, 구분 기호로 식별되는 단어를 포함할 경우, 빈 문자열이 반환됩니다.
매개 변수:
이름 | 필수/ 반복 | Type | 주의 |
---|---|---|---|
String | Required | 다중값 특성 | 단어를 반환할 문자열. |
WordNumber | Required | 정수 | 반환해야 하는 단어 수를 식별하는 번호입니다. |
delimiters | Required | 문자열 | 단어를 식별하는 데 사용해야 하는 구분 기호를 나타내는 문자열 |
예제Word("The quick brown fox",3," ")
:
“brown”을 반환합니다.
Word("This,string!has&many separators",3,",!&#")
“has”를 반환합니다.
예제
이 섹션에서는 더 많은 식 함수 사용 예제를 제공합니다.
알려진 도메인 이름 제거
사용자 이름을 가져오려면 사용자의 이메일에서 알려진 도메인 이름을 제거합니다. 예를 들어, 도메인이 "contoso.com"인 경우 다음 식을 사용할 수 있습니다.
표현식:Replace([mail], "@contoso.com", , ,"", ,)
샘플 입출력:
- 입력(메일): “john.doe@contoso.com”
- 출력: "john.doe"
이름과 성의 부분을 연결하여 사용자 별칭을 생성합니다.
사용자의 이름 중 처음 3개 문자 및 사용자 성의 처음 5개 문자를 사용하여 사용자 별칭을 생성합니다.
표현식:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
샘플 입/출력:
- 입력 (givenName): "John"
- 입력 (surname): "Doe"
- 출력: "JohDoe"
성 및 이름 사이에 쉼표 추가
성 및 이름 사이에 쉼표 추가
표현식:Join(", ", "", [surname], [givenName])
샘플 입/출력:
- 입력 (givenName): "John"
- 입력 (surname): "Doe"
- 출력: “Doe, John”
Microsoft Entra 개체 ID를 기반으로 사용자의 ID를 생성합니다. ID에서 문자를 모두 제거하고 처음에 1000을 추가합니다.
이 식을 사용하면 1000으로 시작하고 고유할 가능성이 있는 사용자에 대한 식별자를 생성할 수 있습니다.
식: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", , ))
샘플 입/출력:
- 입력: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
- 출력: "100064303565343762312333930392343435612626135652636136306362633065346234"