Skip to content

Commit d262f8d

Browse files
authored
Merge pull request #241986 from MicrosoftDocs/main
6/19/2023 10AM Publishing
2 parents 49ea6b8 + 9e6103f commit d262f8d

File tree

144 files changed

+1302
-844
lines changed

Some content is hidden

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

144 files changed

+1302
-844
lines changed

.openpublishing.redirection.azure-monitor.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6156,6 +6156,11 @@
61566156
"redirect_url": "/azure/azure-monitor/app/opentelemetry-enable",
61576157
"redirect_document_id": false
61586158
},
6159+
{
6160+
"source_path_from_root": "/articles/azure-monitor/logs/azure-data-explorer-query-storage.md",
6161+
"redirect_url": "/azure/data-explorer/query-exported-azure-monitor-data",
6162+
"redirect_document_id": false
6163+
},
61596164
{
61606165
"source_path_from_root": "/articles/azure-monitor/logs/api/app-insights-azure-ad-api.md",
61616166
"redirect_url": "/azure/azure-monitor/app/app-insights-azure-ad-api",

articles/active-directory/app-provisioning/sap-successfactors-integration-reference.md

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,28 @@ https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson/$count?$format=json&$filt
124124
&$expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/userNav/manager/empInfo,employmentNav/jobInfoNav/companyNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/locationNav/addressNavDEFLT/stateNav&customPageSize=100
125125
```
126126

127+
## How pre-hire processing works
128+
129+
This section explains how the SAP SuccessFactors connector processes pre-hire records (workers with hire date / start date in future).
130+
Let's say there is a pre-hire with employeeId "1234" in SuccessFactors Employee Central with start date on 1-June-2023. Let's further assume that this pre-hire record was first created either in Employee Central or in the Onboarding module on 15-May-2023. When the provisioning service first observes this record on 15-May-2023 (either as part of full sync or incremental sync), this record is still in pre-hire state. Due to this, SuccessFactors does not send the provisioning service all attributes (example: userNav/username) associated with the user. Only bare minimum data about the user such as `personIdExternal`, `firstname`, `lastname` and `startDate` is available. To process pre-hires successfully, the following pre-requisites must be met:
131+
132+
1) The `personIdExternal` attribute must be set as the primary matching identifier (joining property). If you configure a different attribute (example: userName) as the joining property then the provisioning service will not be able to retrieve the pre-hire information.
133+
2) The `startDate` attribute must be available and it's JSONPath must be set to either `$.employmentNav.results[0].startDate` or `$.employmentNav.results[-1:].startDate`.
134+
3) The pre-hire record must be in one of the following states in Employee Central: 'active' (t), 'inactive' (f), or 'active_external_suite' (e). For details about these states refer to the [SAP support note 2736579](https://launchpad.support.sap.com/#/notes/0002736579).
135+
136+
> [!NOTE]
137+
> For a pre-hire who has no history with the organization, both the [0] and [-1:] index will work for `startDate`. For a pre-hire who is a re-hire or conversion, we cannot deterministically tell the order and this may cause certain rehire/converted workers to get processed on their actual start date. This is a known limitation in the connector.
138+
139+
During full sync or incremental sync or on-demand provisioning, when the provisioning service encounters a pre-hire record, it sends the following OData query to SuccessFactors with "asOfDate" filter set to the startDate of the user (e.g., asOfDate=2023-06-01).
140+
141+
```
142+
https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&$
143+
filter=(personIdExternal in '1234' and employmentNav/userNav/status in 't','f','e')&asOfDate=2023-06-01&$
144+
expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/userNav/manager/empInfo,employmentNav/jobInfoNav/companyNav,employmentNav/jobInfoNav/costCenterNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/
145+
```
146+
147+
If you are observing issues with pre-hire processing, you can use the above OData request format to query your SuccessFactors instance replacing the API endpoint, `personIdExternal` and `asOfDate` filter with values corresponding to your test scenario.
148+
127149
## Reading attribute data
128150

129151
When Azure AD provisioning service queries SuccessFactors, it retrieves a JSON result set. The JSON result set includes many attributes stored in Employee Central. By default, the provisioning schema is configured to retrieve only a subset of those attributes.
@@ -241,8 +263,8 @@ Use the steps to update your mapping to retrieve these codes.
241263

242264
| Provisioning Job | Account status attribute | Mapping expression |
243265
| ---------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------ |
244-
| SuccessFactors to Active Directory User Provisioning | `accountDisabled` | `Switch(\[emplStatus\], "True", "A", "False", "U", "False", "P", "False")` |
245-
| SuccessFactors to Azure AD User Provisioning | `accountEnabled` | `Switch(\[emplStatus\], "False", "A", "True", "U", "True", "P", "True")` |
266+
| SuccessFactors to Active Directory User Provisioning | `accountDisabled` | `Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")` |
267+
| SuccessFactors to Azure AD User Provisioning | `accountEnabled` | `Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")` |
246268

247269
1. Save the changes.
248270
1. Test the configuration using [provision on demand](provision-on-demand.md).
@@ -301,9 +323,9 @@ This section describes how you can update the JSONPath settings to definitely re
301323

302324
| **String to find** | **String to use for replace** | **Purpose** |
303325
| ------------------ | ----------------------------- | ------------ |
304-
| `$.employmentNav.results\[0\].<br>jobInfoNav.results\[0\].emplStatus` | `$.employmentNav..jobInfoNav..results\[?(@.emplStatusNav.externalCode == 'A' \|\| @.emplStatusNav.externalCode == 'U' \|\| @.emplStatusNav.externalCode == 'P' )\].emplStatusNav.externalCode` | With this find-replace, we're adding the ability to expand emplStatusNav OData object. |
305-
| `$.employmentNav.results\[0\].<br>jobInfoNav.results\[0\]` | `$.employmentNav..jobInfoNav..results\[?(@.emplStatusNav.externalCode == 'A' \|\| @.emplStatusNav.externalCode == 'U' \|\| @.emplStatusNav.externalCode == 'P')\]` | With this find-replace, we instruct the connector to always retrieve attributes associated with the active SuccessFactors EmpJobInfo record. Attributes associated with terminated/inactive records in SuccessFactors are ignored. |
306-
| `$.employmentNav.results\[0\]` | `$.employmentNav..results\[?(@.jobInfoNav..results\[?(@.emplStatusNav.externalCode == 'A' \|\| @.emplStatusNav.externalCode == 'U' \|\| @.emplStatusNav.externalCode == 'P')\])\]` | With this find-replace, we instruct the connector to always retrieve attributes associated with the active SuccessFactors Employment record. Attributes associated with terminated/inactive records in SuccessFactors are ignored. |
326+
| `$.employmentNav.results[0].<br>jobInfoNav.results[0].emplStatus` | `$.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P' )].emplStatusNav.externalCode` | With this find-replace, we're adding the ability to expand emplStatusNav OData object. |
327+
| `$.employmentNav.results[0].<br>jobInfoNav.results[0]` | `$.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')]` | With this find-replace, we instruct the connector to always retrieve attributes associated with the active SuccessFactors EmpJobInfo record. Attributes associated with terminated/inactive records in SuccessFactors are ignored. |
328+
| `$.employmentNav.results[0]` | `$.employmentNav..results[?(@.jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')])]` | With this find-replace, we instruct the connector to always retrieve attributes associated with the active SuccessFactors Employment record. Attributes associated with terminated/inactive records in SuccessFactors are ignored. |
307329

308330
1. Save the schema.
309331
1. The above process updates all JSONPath expressions.
@@ -313,8 +335,8 @@ This section describes how you can update the JSONPath settings to definitely re
313335

314336
| Provisioning Job | Account status attribute | Expression to use if account status is based on "activeEmploymentsCount" | Expression to use if account status is based on "emplStatus" value |
315337
| ----------------- | ------------------------ | ----------------------------- | ------------------------------------- |
316-
| SuccessFactors to Active Directory User Provisioning | `accountDisabled` | `Switch(\[activeEmploymentsCount\], "False", "0", "True")` | `Switch(\[emplStatus\], "True", "A", "False", "U", "False", "P", "False")` |
317-
| SuccessFactors to Azure AD User Provisioning | `accountEnabled` | `Switch(\[activeEmploymentsCount\], "True", "0", "False")` | `Switch(\[emplStatus\], "False", "A", "True", "U", "True", "P", "True")` |
338+
| SuccessFactors to Active Directory User Provisioning | `accountDisabled` | `Switch([activeEmploymentsCount], "False", "0", "True")` | `Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")` |
339+
| SuccessFactors to Azure AD User Provisioning | `accountEnabled` | `Switch([activeEmploymentsCount], "True", "0", "False")` | `Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")` |
318340

319341
1. Save your changes. 1.
320342
1. Test the configuration using [provision on demand](provision-on-demand.md).

articles/active-directory/cloud-infrastructure-entitlement-management/onboard-gcp.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ There are several moving parts across GCP and Azure, which are required to be co
5555
> 1. Return to the Permissions Management window, and in the **Permissions Management Onboarding - Azure AD OIDC App Creation**, select **Next**.
5656
5757
### 2. Set up a GCP OIDC project.
58-
1. In the **Permissions Management Onboarding - GCP OIDC Account Details & IDP Access** page, enter the **OIDC Project ID** and **OIDC Project Number** of the GCP project in which the OIDC provider and pool will be created. You can change the role name to your requirements.
58+
1. In the **Permissions Management Onboarding - GCP OIDC Account Details & IDP Access** page, enter the **OIDC Project Number** and **OIDC Project ID**of the GCP project in which the OIDC provider and pool will be created. You can change the role name to your requirements.
5959

6060
> [!NOTE]
6161
> You can find the **Project number** and **Project ID** of your GCP project on the GCP **Dashboard** page of your project in the **Project info** panel.
@@ -64,8 +64,9 @@ There are several moving parts across GCP and Azure, which are required to be co
6464

6565
Optionally, specify **G-Suite IDP Secret Name** and **G-Suite IDP User Email** to enable G-Suite integration.
6666

67-
You can either download and run the script at this point or you can do it in the Google Cloud Shell.
68-
1. Select **Next**.
67+
1. You can either download and run the script at this point or you can run it in the Google Cloud Shell.
68+
69+
1. Select **Next** after sucessfully running the setup script.
6970

7071
Choose from 3 options to manage GCP projects.
7172

articles/active-directory/develop/active-directory-v2-protocols.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Four parties are generally involved in an OAuth 2.0 and OpenID Connect authentic
2424

2525
![Diagram showing the OAuth 2.0 roles](./media/v2-flows/protocols-roles.svg)
2626

27-
* **Authorization server** - The identity platform is the authorization server. Also called an *identity provider* or *IdP*, it securely handles the end-user's information, their access, and the trust relationships between the parties in the auth flow. The authorization server issues the security tokens your apps and APIs use for granting, denying, or revoking access to resources (authorization) after the user has signed in (authenticated).
27+
* **Authorization server** - The Microsoft identity platform is the authorization server. Also called an *identity provider* or *IdP*, it securely handles the end-user's information, their access, and the trust relationships between the parties in the auth flow. The authorization server issues the security tokens your apps and APIs use for granting, denying, or revoking access to resources (authorization) after the user has signed in (authenticated).
2828

2929
* **Client** - The client in an OAuth exchange is the application requesting access to a protected resource. The client could be a web app running on a server, a single-page web app running in a user's web browser, or a web API that calls another web API. You'll often see the client referred to as *client application*, *application*, or *app*.
3030

@@ -34,7 +34,7 @@ Four parties are generally involved in an OAuth 2.0 and OpenID Connect authentic
3434

3535
## Tokens
3636

37-
The parties in an authentication flow use **bearer tokens** to assure, verify, and authenticate a principal (user, host, or service) and to grant or deny access to protected resources (authorization). Bearer tokens in the identity platform are formatted as [JSON Web Tokens](https://tools.ietf.org/html/rfc7519) (JWT).
37+
The parties in an authentication flow use **bearer tokens** to assure, verify, and authenticate a principal (user, host, or service) and to grant or deny access to protected resources (authorization). Bearer tokens in the Microsoft identity platform are formatted as [JSON Web Tokens](https://tools.ietf.org/html/rfc7519) (JWT).
3838

3939
Three types of bearer tokens are used by the identity platform as *security tokens*:
4040

@@ -46,7 +46,7 @@ Three types of bearer tokens are used by the identity platform as *security toke
4646

4747
## App registration
4848

49-
Your client app needs a way to trust the security tokens issued to it by the identity platform. The first step in establishing trust is by [registering your app](quickstart-register-app.md). When you register your app, the identity platform automatically assigns it some values, while others you configure based on the application's type.
49+
Your client app needs a way to trust the security tokens issued to it by the Microsoft identity platform. The first step in establishing trust is by [registering your app](quickstart-register-app.md). When you register your app, the identity platform automatically assigns it some values, while others you configure based on the application's type.
5050

5151
Two of the most commonly referenced app registration settings are:
5252

@@ -57,7 +57,7 @@ Your app's registration also holds information about the authentication and auth
5757

5858
## Endpoints
5959

60-
The identity platform offers authentication and authorization services using standards-compliant implementations of OAuth 2.0 and OpenID Connect (OIDC) 1.0. Standards-compliant authorization servers like the identity platform provide a set of HTTP endpoints for use by the parties in an auth flow to execute the flow.
60+
The Microsoft identity platform offers authentication and authorization services using standards-compliant implementations of OAuth 2.0 and OpenID Connect (OIDC) 1.0. Standards-compliant authorization servers like the identity platform provide a set of HTTP endpoints for use by the parties in an auth flow to execute the flow.
6161

6262
The endpoint URIs for your app are generated automatically when you register or configure your app. The endpoints you use in your app's code depend on the application's type and the identities (account types) it should support.
6363

@@ -89,7 +89,7 @@ Next, learn about the OAuth 2.0 authentication flows used by each application ty
8989
* [Authentication flows and application scenarios](authentication-flows-app-scenarios.md)
9090
* [Microsoft Authentication Library (MSAL)](msal-overview.md)
9191

92-
**We strongly advise against crafting your own library or raw HTTP calls to execute authentication flows.** A [Microsoft Authentication Library](reference-v2-libraries.md) is safer and easier. However, if your scenario prevents you from using our libraries or you'd just like to learn more about the identity platform's implementation, we have protocol reference:
92+
**We strongly advise against crafting your own library or raw HTTP calls to execute authentication flows.** A [Microsoft Authentication Library](reference-v2-libraries.md) is safer and easier. However, if your scenario prevents you from using our libraries or you'd just like to learn more about the Microsoft identity platform's implementation, we have protocol reference:
9393

9494
* [Authorization code grant flow](v2-oauth2-auth-code-flow.md) - Single-page apps (SPA), mobile apps, native (desktop) applications
9595
* [Client credentials flow](v2-oauth2-client-creds-grant-flow.md) - Server-side processes, scripts, daemons

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ items:
66
items:
77
- name: What is Azure Active Directory for customers?
88
href: overview-customers-ciam.md
9+
- name: Demo overview
10+
href: overview-solutions-customers.md
911
- name: Quickstarts
1012
expanded: true
1113
items:
@@ -295,4 +297,4 @@ items:
295297
- name: Resources
296298
items:
297299
- name: Frequently asked questions (FAQ)
298-
href: faq-customers.md
300+
href: faq-customers.md

articles/aks/tutorial-kubernetes-prepare-app.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ azure-voting-app-redis
8686
The following command uses the sample `docker-compose.yaml` file to create the container image, download the Redis image, and start the application.
8787

8888
```console
89-
docker-compose up -d
89+
docker compose up -d
9090
```
9191

9292
When completed, use the [`docker images`][docker-images] command to see the created images. Two images are downloaded or created. The *azure-vote-front* image contains the front-end application. The *redis* image is used to start a Redis instance.
@@ -121,7 +121,7 @@ Now that the application's functionality has been validated, the running contain
121121
To stop and remove the container instances and resources, use the [`docker-compose down`][docker-compose-down] command.
122122

123123
```console
124-
docker-compose down
124+
docker compose down
125125
```
126126

127127
When the local application has been removed, you have a Docker image that contains the Azure Vote application, *azure-vote-front*, to use in the next tutorial.

0 commit comments

Comments
 (0)