Skip to content

Commit 1a714e3

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into iot-feb-21-release
2 parents d1f2e41 + 8c2ba85 commit 1a714e3

File tree

564 files changed

+5508
-5048
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

564 files changed

+5508
-5048
lines changed

.openpublishing.redirection.active-directory.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,11 @@
800800
"redirect_url": "/azure/active-directory/external-identities/external-identities-overview",
801801
"redirect_document_id": false
802802
},
803+
{
804+
"source_path_from_root": "/articles/active-directory/external-identities/o365-external-user.md",
805+
"redirect_url": "/azure/active-directory/external-identities/what-is-b2b",
806+
"redirect_document_id": false
807+
},
803808
{
804809
"source_path_from_root": "/articles/active-directory/active-directory-b2b-current-preview-limitations.md",
805810
"redirect_url": "/azure/active-directory/active-directory-b2b-current-limitations",

.openpublishing.redirection.defender-for-iot.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,17 @@
3030
"redirect_url": "/azure/defender-for-iot/organizations/getting-started",
3131
"redirect_document_id": false
3232
},
33-
{
33+
{
34+
"source_path_from_root": "/articles/defender-for-iot/organizations/how-to-view-information-provided-in-alerts.md",
35+
"redirect_url": "/azure/defender-for-iot/organizations/how-to-view-alerts",
36+
"redirect_document_id": false
37+
},
38+
{
39+
"source_path_from_root": "/articles/defender-for-iot/organizations/how-to-work-with-alerts-on-your-sensor.md",
40+
"redirect_url": "/azure/defender-for-iot/organizations/concept-key-concepts#analytics-and-self-learning-engines",
41+
"redirect_document_id": false
42+
},
43+
{
3444
"source_path_from_root": "/azure/defender-for-iot/organizations/quickstart-system-prerequisites.md",
3545
"redirect_url": "/azure/defender-for-iot/organizations/getting-started",
3646
"redirect_document_id": false

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22644,6 +22644,11 @@
2264422644
"redirect_url": "/azure/active-directory/conditional-access/concept-conditional-access-cloud-apps",
2264522645
"redirect_document_id": true
2264622646
},
22647+
{
22648+
"source_path_from_root": "/articles/scheduler/scheduler-intro.md",
22649+
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
22650+
"redirect_document_id": ""
22651+
},
2264722652
{
2264822653
"source_path_from_root": "/articles/scheduler/scheduler-advanced-complexity.md",
2264922654
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",

articles/active-directory/app-provisioning/functions-for-customizing-application-data.md

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -908,85 +908,85 @@ Replaces values within a string in a case-sensitive manner. The function behaves
908908
#### Replace characters using a regular expression
909909
**Example 1:** Using **oldValue** and **replacementValue** to replace the entire source string with another string.
910910

911-
Lets say your HR system has an attribute `BusinessTitle`. As part of recent job title changes, your company wants to update anyone with the business title Product Developer to Software Engineer.
911+
Let's say your HR system has an attribute `BusinessTitle`. As part of recent job title changes, your company wants to update anyone with the business title "Product Developer" to "Software Engineer".
912912
Then in this case, you can use the following expression in your attribute mapping.
913913

914914
`Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )`
915915

916916
* **source**: `[BusinessTitle]`
917-
* **oldValue**: Product Developer
918-
* **replacementValue**: Software Engineer
917+
* **oldValue**: "Product Developer"
918+
* **replacementValue**: "Software Engineer"
919919
* **Expression output**: Software Engineer
920920

921921
**Example 2:** Using **oldValue** and **template** to insert the source string into another *templatized* string.
922922

923923
The parameter **oldValue** is a misnomer in this scenario. It is actually the value that will get replaced.
924-
Lets say you want to always generate login id in the format `<username>@contoso.com`. There is a source attribute called **UserID** and you want that value to be used for the `<username>` portion of the login id.
924+
Let's say you want to always generate login id in the format `<username>@contoso.com`. There is a source attribute called **UserID** and you want that value to be used for the `<username>` portion of the login id.
925925
Then in this case, you can use the following expression in your attribute mapping.
926926

927927
`Replace([UserID],"<username>", , , , , "<username>@contoso.com")`
928928

929-
* **source:** `[UserID]` = jsmith
930-
* **oldValue:** `<username>`
931-
* **template:** `<username>@contoso.com`
932-
* **Expression output:** [email protected]
929+
* **source:** `[UserID]` = "jsmith"
930+
* **oldValue:** "`<username>`"
931+
* **template:** "`<username>@contoso.com`"
932+
* **Expression output:** "[email protected]"
933933

934934
**Example 3:** Using **regexPattern** and **replacementValue** to extract a portion of the source string and replace it with an empty string or a custom value built using regex patterns or regex group names.
935935

936-
Lets say you have a source attribute `telephoneNumber` that has components `country code` and `phone number` separated by a space character. E.g. `+91 9998887777`
936+
Let's say you have a source attribute `telephoneNumber` that has components `country code` and `phone number` separated by a space character. E.g. `+91 9998887777`
937937
Then in this case, you can use the following expression in your attribute mapping to extract the 10 digit phone number.
938938

939939
`Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )`
940940

941-
* **source:** `[telephoneNumber]` = +91 9998887777
942-
* **regexPattern:** `\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`
943-
* **replacementValue:** `${phoneNumber}`
941+
* **source:** `[telephoneNumber]` = "+91 9998887777"
942+
* **regexPattern:** "`\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`"
943+
* **replacementValue:** "`${phoneNumber}`"
944944
* **Expression output:** 9998887777
945945

946946
You can also use this pattern to remove characters and collapse a string.
947947
For example, the expression below removes parenthesis, dashes and space characters in the mobile number string and returns only digits.
948948

949949
`Replace([mobile], , "[()\\s-]+", , "", , )`
950950

951-
* **source:** `[mobile] = +1 (999) 888-7777`
952-
* **regexPattern:** `[()\\s-]+`
953-
* **replacementValue:** “” (empty string)
951+
* **source:** `[mobile] = "+1 (999) 888-7777"`
952+
* **regexPattern:** "`[()\\s-]+`"
953+
* **replacementValue:** "" (empty string)
954954
* **Expression output:** 19998887777
955955

956956
**Example 4:** Using **regexPattern**, **regexGroupName** and **replacementValue** to extract a portion of the source string and replace it with another literal value or empty string.
957957

958-
Lets say your source system has an attribute AddressLineData with two components street number and street name. As part of a recent move, lets say the street number of the address changed and you want to update only the street number portion of the address line.
959-
Then in this case, you can use the following expression in your attribute mapping to extract the 10 digit phone number.
958+
Let's say your source system has an attribute AddressLineData with two components street number and street name. As part of a recent move, let's say the street number of the address changed and you want to update only the street number portion of the address line.
959+
Then in this case, you can use the following expression in your attribute mapping to extract the street number.
960960

961961
`Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )`
962962

963-
* **source:** `[AddressLineData]` = 545 Tremont Street
964-
* **regexPattern:** `(?<streetNumber>^\\d*)`
965-
* **regexGroupName:** streetNumber
966-
* **replacementValue:** 888
963+
* **source:** `[AddressLineData]` = "545 Tremont Street"
964+
* **regexPattern:** "`(?<streetNumber>^\\d*)`"
965+
* **regexGroupName:** "streetNumber"
966+
* **replacementValue:** "888"
967967
* **Expression output:** 888 Tremont Street
968968

969969
Here is another example where the domain suffix from a UPN is replaced with an empty string to generate login id without domain suffix.
970970

971971
`Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )`
972972

973-
* **source:** `[userPrincipalName]` = [email protected]
974-
* **regexPattern:** `(?<Suffix>@(.)*)`
975-
* **regexGroupName:** Suffix
976-
* **replacementValue:** “” (empty string)
973+
* **source:** `[userPrincipalName]` = "[email protected]"
974+
* **regexPattern:** "`(?<Suffix>@(.)*)`"
975+
* **regexGroupName:** "Suffix"
976+
* **replacementValue:** "" (empty string)
977977
* **Expression output:** jsmith
978978

979-
**Example 5:** Using **regexPattern**, **regexGroupName** and **replacementAttributeName** to handle scenarios when the source attribute is empty or doesnt have a value.
979+
**Example 5:** Using **regexPattern**, **regexGroupName** and **replacementAttributeName** to handle scenarios when the source attribute is empty or doesn't have a value.
980980

981-
Lets say your source system has an attribute telephoneNumber. If telephoneNumber is empty, you want to extract the 10 digits of the mobile number attribute.
981+
Let's say your source system has an attribute telephoneNumber. If telephoneNumber is empty, you want to extract the 10 digits of the mobile number attribute.
982982
Then in this case, you can use the following expression in your attribute mapping.
983983

984984
`Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )`
985985

986-
* **source:** `[telephoneNumber]` = “” (empty string)
987-
* **regexPattern:** `\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`
988-
* **regexGroupName:** phoneNumber
989-
* **replacementAttributeName:** `[mobile]` = +91 8887779999
986+
* **source:** `[telephoneNumber]` = "" (empty string)
987+
* **regexPattern:** "`\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})`"
988+
* **regexGroupName:** "phoneNumber"
989+
* **replacementAttributeName:** `[mobile]` = "+91 8887779999"
990990
* **Expression output:** 8887779999
991991

992992
**Example 6:** You need to find characters that match a regular expression value and remove them.
@@ -1106,6 +1106,10 @@ Switch(source, defaultValue, key1, value1, key2, value2, …)
11061106
**Description:**
11071107
When **source** value matches a **key**, returns **value** for that **key**. If **source** value doesn't match any keys, returns **defaultValue**. **Key** and **value** parameters must always come in pairs. The function always expects an even number of parameters. The function should not be used for referential attributes such as manager.
11081108

1109+
> [!NOTE]
1110+
> Switch function performs a case-sensitive string comparison of the **source** and **key** values. If you'd like to perform a case-insensitive comparison, normalize the **source** string before comparison using a nested ToLower function and ensure that all **key** strings use lowercase.
1111+
> Example: `Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")`. In this example, the **source** attribute `statusFlag` may have values ("True" / "true" / "TRUE"). However, the Switch function will always convert it to lowercase string "true" before comparison with **key** parameters.
1112+
11091113
**Parameters:**
11101114

11111115
| Name | Required/ Repeating | Type | Notes |

articles/active-directory/develop/zero-trust-for-developers.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,5 @@ The Microsoft identity platform app registration portal is the primary entry poi
7979

8080
## Next steps
8181

82-
- Zero Trust [Guidance Center](/security/zero-trust/)
83-
- Zero Trust for the Microsoft identity platform developer [whitepaper](https://www.microsoft.com/security/content-library/Search?SearchDataFor=OJZgGWbHnB3Ll5hblDBugaEMQAchNfvkzk5X5AmPM4tK43NHpbF5%2Bky%2Fnuivl7plZz89b%2FuLMMZsMqKeYbhPPw%3D%3D&IsKeywordSearch=evXIpssXVY6lIm6X2K9ieA%3D%3D) (downloadable PDF).
82+
- Zero Trust [Guidance Center](/security/zero-trust/)
8483
- Microsoft identity platform [best practices and recommendations](./identity-platform-integration-checklist.md).
Loading
28.5 KB
Loading

articles/active-directory/external-identities/o365-external-user.md

Lines changed: 0 additions & 49 deletions
This file was deleted.

articles/active-directory/external-identities/toc.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@
5151
href: claims-mapping.md
5252
- name: B2B user token
5353
href: user-token.md
54-
- name: B2B collaboration and Office 365 external sharing
55-
href: o365-external-user.md
5654
- name: B2B collaboration for hybrid organizations
5755
href: hybrid-organizations.md
5856
- name: Self-service sign-up

0 commit comments

Comments
 (0)