diff --git a/en/asgardeo/docs/apis/restapis/organization-discovery-config-mgt.yaml b/en/asgardeo/docs/apis/restapis/organization-discovery-config-mgt.yaml
index 925fb23947..0e756d78a4 100644
--- a/en/asgardeo/docs/apis/restapis/organization-discovery-config-mgt.yaml
+++ b/en/asgardeo/docs/apis/restapis/organization-discovery-config-mgt.yaml
@@ -92,6 +92,51 @@ paths:
]
}'
x-codegen-request-body-name: body
+ put:
+ tags:
+ - Discovery
+ summary: Update organization discovery configuration.
+ description: |
+ This API provides the capability to update discovery configuration of the root organization.
+
+ Scope(Permission) required: `internal_organization_config_update`
+ operationId: updateDiscoveryConfig
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Config'
+ responses:
+ '200':
+ description: Successful Response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Config'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '500':
+ $ref: '#/components/responses/ServerError'
+ x-codeSamples:
+ - lang: Curl
+ source: |
+ curl --location --request PUT 'https://api.asgardeo.io/t/{organization-name}/api/server/v1/organization-configs/discovery' \
+ -H 'Content-Type: application/json' \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Bearer {bearer_token}' \
+ -d '{
+ "properties": [
+ {
+ "key": "emailDomain.enable",
+ "value": true
+ }
+ ]
+ }'
+ x-codegen-request-body-name: body
delete:
tags:
- Discovery
diff --git a/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png b/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png
index 41785e44b4..9cdd4d2d58 100644
Binary files a/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png and b/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png differ
diff --git a/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png b/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png
index 99f620d8ae..035950bddf 100644
Binary files a/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png and b/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png differ
diff --git a/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png b/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png
index 2653519e83..9e7c20f74f 100644
Binary files a/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png and b/en/asgardeo/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png differ
diff --git a/en/identity-server/next/docs/apis/restapis/organization-discovery-config-mgt.yaml b/en/identity-server/next/docs/apis/restapis/organization-discovery-config-mgt.yaml
index 4cc8d65f9f..3fef97262e 100644
--- a/en/identity-server/next/docs/apis/restapis/organization-discovery-config-mgt.yaml
+++ b/en/identity-server/next/docs/apis/restapis/organization-discovery-config-mgt.yaml
@@ -91,6 +91,55 @@ paths:
]
}'
x-codegen-request-body-name: body
+ put:
+ tags:
+ - Discovery
+ summary: Update organization discovery configuration.
+ description: |
+ This API provides the capability to update discovery configuration of the primary organization.
+
+ Scope(Permission) required: `internal_organization_config_update`
+ operationId: updateDiscoveryConfig
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Config'
+ responses:
+ '200':
+ description: Successful Response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Config'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '500':
+ $ref: '#/components/responses/ServerError'
+ x-codeSamples:
+ - lang: Curl
+ source: |
+ curl --location --request PUT 'https://localhost:9443/api/server/v1/organization-configs/discovery' \
+ -H 'Content-Type: application/json' \
+ -H 'Accept: application/json' \
+ -H 'Authorization: Basic YWRtaW46YWRtaW4=' \
+ -d '{
+ "properties": [
+ {
+ "key": "emailDomain.enable",
+ "value": true
+ },
+ {
+ "key": "emailDomainBasedSelfSignup.enable",
+ "value": false
+ }
+ ]
+ }'
+ x-codegen-request-body-name: body
delete:
tags:
- Discovery
@@ -149,6 +198,11 @@ components:
type: array
items:
$ref: '#/components/schemas/Properties'
+ example:
+ - key: emailDomain.enable
+ value: true
+ - key: emailDomainBasedSelfSignup.enable
+ value: false
Properties:
required:
- key
@@ -161,7 +215,6 @@ components:
value:
type: string
example: true
-
responses:
BadRequest:
description: Invalid input in the request.
diff --git a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/application-login-page.png b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/application-login-page.png
new file mode 100644
index 0000000000..39e50d0e41
Binary files /dev/null and b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/application-login-page.png differ
diff --git a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png
index 41785e44b4..93b7b0b10d 100644
Binary files a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png and b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/assign-email-domains.png differ
diff --git a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png
index 99f620d8ae..7f73107eac 100644
Binary files a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png and b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/edit-email-domains.png differ
diff --git a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/email-input-for-self-registration.png b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/email-input-for-self-registration.png
new file mode 100644
index 0000000000..d462845a86
Binary files /dev/null and b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/email-input-for-self-registration.png differ
diff --git a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png
index 2653519e83..09e5a32848 100644
Binary files a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png and b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png differ
diff --git a/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/self-registration-form.png b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/self-registration-form.png
new file mode 100644
index 0000000000..d9e48fae65
Binary files /dev/null and b/en/identity-server/next/docs/assets/img/guides/organization/manage-organizations/self-registration-form.png differ
diff --git a/en/includes/guides/organization-management/email-domain-based-organization-discovery.md b/en/includes/guides/organization-management/email-domain-based-organization-discovery.md
index 5f4fadc1ee..da101dd7ac 100644
--- a/en/includes/guides/organization-management/email-domain-based-organization-discovery.md
+++ b/en/includes/guides/organization-management/email-domain-based-organization-discovery.md
@@ -1,161 +1,209 @@
# Email domain based organization discovery
-In the realm of Business-to-Business (B2B) scenarios, it's essential to efficiently manage users from different organizations.
-One way to achieve this is through organization discovery based on criteria such as email domain and user attributes.
-{{ product_name }} offers a solution for email domain-based organization discovery.
+In the realm of Business-to-Business (B2B), seamlessly authenticating users from external organizations into your applications is essential for a smooth user experience. One way to achieve this is through email domain-based organization discovery. With this feature, your application is able to provide a customized and a familiar login experience for a user based on the domain of their email address.
-The primary purpose of email domain based discovery is to route B2B users from various organizations to their respective authentication options based on their email addresses.
+For example, when users log in with an `@xyz.com` email address, they will be automatically redirected to the login screen customized for the `XYZ` organization, providing a familiar and consistent experience.
-This guide explains how to configure and use email domain-based organization discovery in {{ product_name }}.
+This guide explains how you may use {{product_name}} to configure email domain-based organization discovery for your B2B applications.
## Scenario
-Consider **Guardio Insurance** is a B2B SaaS provider and `Best Car Mart` and `Glory Car Mart` are two of its customer/partner organizations.
-Guardio Insurance wants to resolve the organization of a user based on the email domain of the user's email address and route them to the respective authentication options.
+**Guardio Insurance** is an insurance provider. *Best Car Mart* and *Glory Car Mart* are two of its customer organizations. When a user enters an email address to log into the Guardio Insurance platform, it is required to resolve a user's organization based on the email domain and redirect them to the respective organization's login screen.
+
![Email domain based organization discovery scenario]({{base_path}}/assets/img/guides/organization/manage-organizations/email-domain-based-organization-discovery.png){: width="700" style="display: block; margin: 0;"}
-User Alice with email `alice@bcmart.com` should be routed to the authentication options provided by the `Best Car Mart` organization,
-and user Bob and Ben, with emails `bob@gcmart.com` and `ben@glory.com` should be routed to the authentication options provided by the `Glory Car Mart` organization.
+In this example scenario,
+
+- User Alice with email `alice@bcmart.com` should be routed to the login screen of `Best Car Mart` organization.
+- User Bob and Ben, with emails `bob@gcmart.com` and `ben@glory.com` should be routed to the login screen of `Glory Car Mart` organization.
## Enable email domain based organization discovery
-!!! note
- - This feature can only be used when email address is configured as the username.
- - Enabling email domain based organization discovery feature, and adding email domain mapping against the organizations is permitted only for the organization (root).
+!!! note "Important"
+ - Enabling this feature and mapping email domains to organizations is only permitted in the root organization.
+ - For this feature to work, make sure to [enable email address as the username]({{base_path}}/guides/users/attributes/enable-email-as-username/) so that users may log in to applications with their email addresses.
+
+=== "Using the Console"
+
+ To do so,
+
+ 1. Login to the root organization Console.
+ 2. Navigate to **Login & Registration**, and under **Organization Settings**, click **Organization Discovery**.
+ 3. Turn the toggle on to enable email domain based organization discovery.
+
+ ![Enable email domain based organization discovery]({{base_path}}/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
-### Using the Console
+ {% if (product_name == "WSO2 Identity Server") %}
-1. Login to the organization (root) from the {{ product_name }} Console.
-2. On the {{ product_name }} Console, go to **Login & Registration**, and click **Email Domain Discovery** under **Organization Settings**.
-3. Turn on the toggle to enable email domain based organization discovery.
+ 4. Select the **Email domain discovery for self-registration** checkbox if you want to allow users to discover organizations based on their email domain and self-register in them.
- ![Enable email domain based organization discovery]({{base_path}}/assets/img/guides/organization/manage-organizations/enable-email-domain-based-organization-discovery.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+ !!! note
+ For this to work, child organizations should have self-registration enabled. Currently, you can enable self-registration for all child organizations by adding the following configuration to the `/repository/conf/deployment.toml` file.
-### Using the API
+ ```
+ [identity_mgt.user_self_registration]
+ allow_self_registration = true
+ ```
+
+ {% endif %}
+
+ 5. [Map email domains to organizations](#map-email-domains-to-organizations).
-1. [Get an access token]({{base_path}}/apis/#oauth-based-authentication) with the `internal_organization_config_add` scope.
+=== "Using the API"
-2. Use the obtained access token to execute the following cURL.
+ To do so,
- ``` curl
- curl --location --request POST 'https://{{ host_name }}{{ organization_path_param }}/api/server/v1/organization-configs/discovery' \
- --header 'Content-Type: application/json' \
- --header 'Authorization: Bearer ' \
- --data '{
- "properties": [
- {
- "key": "emailDomain.enable",
- "value": true
- }
- ]
- }'
- ```
+ 1. [Get an access token]({{base_path}}/apis/#oauth-based-authentication) with the `internal_organization_config_add` scope.
-## Configure email domains for organizations
+ 2. Use the obtained access token to execute the following command.
-### Prerequisites
+ ``` curl
+ curl --location --request POST 'https://{{ host_name }}{{ organization_path_param }}/api/server/v1/organization-configs/discovery' \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer ' \
+ --data '{
+ "properties": [
+ {
+ "key": "emailDomain.enable",
+ "value": true
+ }
+ ]
+ }'
+ ```
-You need to:
- - enable email domain based organization discovery for the organization (root).
- - have registered organizations in {{ product_name }}. See [Manage organizations]({{base_path}}/guides/organization-management/manage-organizations/) for instructions.
+ 5. [Map email domains to organizations](#map-email-domains-to-organizations).
-### Using the Console
-1. On the {{ product_name }} Console, go to **Login & Registration**.
-2. Click **Email Domain Discovery** under **Organization Settings**.
-3. Click **+Assign Email Domains**.
+## Map email domains to organizations
- ![Assign Email Domain]({{base_path}}/assets/img/guides/organization/manage-organizations/assign-email-domains.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+Mapping an email domain to an organization allows for a customized user experience, but it is not mandatory. When an organization does not have a mapped email domain, the behavior changes as follows:
-4. Select the organization you want to claim an email domain from the dropdown under **Organization Name**.
-5. Type the email domain you want to claim for the selected organization under **Email Domains** and press enter. Here you can add one or more email domains.
+- If an organization registers an email domain mapping,
+ - a user can only onboard to the organization if the user's email domain matches one of the domains claimed by the organization.
+ {% if product_name == "Asgardeo" or (product_name == "WSO2 Identity Server" and is_version != "7.0.0") %}
+ - Federated authentication and Just-In-Time (JIT) provisioning will be restricted for users logging in with email domains not claimed by the organization.
+ {% else %}
+ - Just-In-Time (JIT) provisioning during federated authentication only occurs if the user's email domain matches one of the domains claimed by the organization.
+ {% endif %}
+- If not, a user can register to the organization with an email address of any domain (other than the domains claimed by other organizations).
- ![Assign Email Domain for Best Car Mart]({{base_path}}/assets/img/guides/organization/manage-organizations/assign-email-domains-bestcarmart.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+=== "Using the Console"
-6. Click **Assign**.
+ !!! note "Before you begin"
-!!! note
- - If the organization has any email domain mapping:
- During the onboarding process of a user to an organization, the user's username (which is an email) undergoes a check against the assigned email domains of that organization.
- If there's a match, the user is successfully onboarded to the organization. However, if there is no match, the user onboarding process will fail.
- - While the organization (root) has enabled email domain based organization discovery, it is not compulsory to configure an email domain mapping for every organization in the hierarchy.
- If an organization doesn't have an email domain mapping, the user onboarded to that organization can have any email domain other than the email domains of organizations in the hierarchy.
+ - [Enable email domain based organization discovery](#enable-email-domain-based-organization-discovery) for the root organization.
+ - Create the required organizations under the root organization. See [Manage organizations]({{base_path}}/guides/organization-management/manage-organizations/) for instructions.
-### Using the API
+ To do so,
-1. [Get an access token]({{base_path}}/apis/#oauth-based-authentication) with the `internal_organization_discovery_update` scope.
+ 1. On the {{ product_name }} Console, go to **Login & Registration**.
+ 2. Under **Organization Settings**, click **Email Domain Discovery**.
+ 3. Click **Assign Email Domain**.
-2. Use the obtained access token to execute the following cURL.
+ ![Assign Email Domain]({{base_path}}/assets/img/guides/organization/manage-organizations/assign-email-domains.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
- ``` curl
- curl --location --request POST 'https://{{ host_name }}{{ organization_path_param }}/api/server/v1/organizations/discovery' \
- --header 'Content-Type: application/json' \
- --header 'Authorization: Bearer ' \
- --data '{
- "attributes": [
- {
- "type": "emailDomain",
- "values": [
- "bcmart.com"
- ]
- }
- ],
- "organizationId": ""
- }'
- ```
+ 4. Under **Organization Name**, select the organization.
+ 5. Under **Email Domains**, type the email domain you want to claim for the selected organization and press enter. You can add more than one email domain.
-## Update configured email domains of organizations
+ ![Assign Email Domain for Best Car Mart]({{base_path}}/assets/img/guides/organization/manage-organizations/assign-email-domains-bestcarmart.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
-### Using the Console
+ 6. Click **Assign**.
-1. On the {{ product_name }} Console, go to **Login & Registration**,
-2. Click **Email Domain Discovery** under **Organization Settings**.
-3. Click **Edit** of the organization you want to update the email domains.
+=== "Using the API"
- ![Edit Email Domain]({{base_path}}/assets/img/guides/organization/manage-organizations/edit-email-domains.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+ !!! note "Before you begin"
-4. Update the email domains in **Email Domains** and click **Update**.
+ - [Enable email domain based organization discovery](#enable-email-domain-based-organization-discovery) for the root organization.
+ - Create the required organizations under the root organization. See [Manage organizations]({{base_path}}/guides/organization-management/manage-organizations/) for instructions.
+
+ To do so,
+
+ 1. [Get an access token]({{base_path}}/apis/#oauth-based-authentication) with the `internal_organization_discovery_update` scope.
+
+ 2. Use the obtained access token to execute the following cURL.
+
+ ``` curl
+ curl --location --request POST 'https://{{ host_name }}{{ organization_path_param }}/api/server/v1/organizations/discovery' \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer ' \
+ --data '{
+ "attributes": [
+ {
+ "type": "emailDomain",
+ "values": [
+ "bcmart.com"
+ ]
+ }
+ ],
+ "organizationId": ""
+ }'
+ ```
+
+## Update email domain mappings
!!! warning
Changing the email domain mappings may result in existing users being unable to log in to the B2B applications due to organization discovery failures.
-### Using the API
-
-1. [Get an access token]({{base_path}}/apis/#oauth-based-authentication) with the `internal_organization_discovery_update` scope.
-
-2. Use the obtained access token to execute the following cURL.
-
- ``` curl
- curl --location --request PUT 'https://{{ host_name }}{{ organization_path_param }}/api/server/v1/organizations//discovery' \
- --header 'Content-Type: application/json' \
- --header 'Authorization: Bearer ' \
- --data '{
- "attributes": [
- {
- "type": "emailDomain",
- "values": [
- "bcmart.com",
- "bestcars.com"
- ]
- }
- ]
- }'
- ```
+=== "Using the Console"
+
+ To do so,
+
+ 1. On the {{ product_name }} Console, go to **Login & Registration**,
+ 2. Under **Organization Settings**, click **Email Domain Discovery**.
+ 3. Click **Edit** of the organization you want to update the email domains.
+
+ ![Edit Email Domain]({{base_path}}/assets/img/guides/organization/manage-organizations/edit-email-domains.png){: width="700" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+
+ 4. Update the email domains in **Email Domains** and click **Update**.
+
+=== "Using the API"
+
+ To do so,
+
+ 1. [Get an access token]({{base_path}}/apis/#oauth-based-authentication) with the `internal_organization_discovery_update` scope.
+
+ 2. Use the obtained access token to execute the following cURL.
+
+ ``` curl
+ curl --location --request PUT 'https://{{ host_name }}{{ organization_path_param }}/api/server/v1/organizations//discovery' \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer ' \
+ --data '{
+ "attributes": [
+ {
+ "type": "emailDomain",
+ "values": [
+ "bcmart.com",
+ "bestcars.com"
+ ]
+ }
+ ]
+ }'
+ ```
## Try it out
-1. Set up the `Guardio-Business-App` as a [B2B application]({{base_path}}/guides/organization-management/try-a-b2b-use-case/#set-up-the-applications).
+{% if product_name == "WSO2 Identity Server" and is_version != "7.0.0" %}
+
+Follow the sections below to try out each of the organization discovery scenarios.
+
+### User login
+
+{% endif %}
+To try out user login,
-2. [Create an organization]({{base_path}}/guides/organization-management/manage-organizations/#create-an-organization) on the {{ product_name }} Console with `Best Car Mart` as the **Organization Name**.
+1. Set up the Guardio business application by following the steps [here]({{base_path}}/guides/organization-management/try-a-b2b-use-case/#set-up-the-business-application).
-3. [Configure the email domain mapping](#configure-email-domains-for-organizations) for the `Best Car Mart` organization as follows:
+2. Create an organization for *Best Car Mart* by following the steps [here]({{base_path}}/guides/organization-management/manage-organizations/#create-an-organization).
+
+3. Follow the guides in this page and enable email domain based organization discovery. Add the following email domain mapping.
- Organization Name: `Best Car Mart`
- Email Domain: `bcmart.com`
-4. [Switch]({{base_path}}/guides/organization-management/manage-organizations/#switch-between-organizations) to the `Best Car Mart` organization on the {{ product_name }} Console.
+4. On the {{product_name}} Console, [switch]({{base_path}}/guides/organization-management/manage-organizations/#switch-between-organizations) to the *Best Car Mart* organization Console.
-5. Onboard a new user to the `Best Car Mart` organization with the following information. You can either set a password for the user or invite the user to set the password.
+5. Onboard a new user to the *Best Car Mart* organization with the following information. You can either set a password for the user or invite the user to set the password.
Username and Email |
@@ -177,9 +225,9 @@ You need to:
-6. Try to log in to the `Guardio-Business-App` by selecting `Sign In With SSO`.
+6. Log in to the Guardio business app by selecting `Sign In With SSO`.
- {% if (product_name == "WSO2 Identity Server" and is_version == "next") or product_name == "Asgardeo" %}
+ {% if (product_name == "WSO2 Identity Server" and is_version != "7.0.0") or product_name == "Asgardeo" %}
!!! note
@@ -213,10 +261,40 @@ You need to:
{% endif %}
-7. Input the email address associated with the username for "Alice" within the "Best Car Mart" organization.
+7. Input the email address associated with the username for `Alice` within the *Best Car Mart* organization.
![Email input for SSO login]({{base_path}}/assets/img/guides/organization/manage-organizations/email-input-for-sso-login.png){: width="400" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
-8. After resolving the organization from the email, Alice will be redirected to the authentication option of `Best Car Mart`.
+8. After resolving the organization from the email, Alice will be redirected to the authentication option of *Best Car Mart*.
![Best Car Mart login]({{base_path}}/assets/img/guides/organization/manage-organizations/bestcarmart-login.png){: width="400" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+
+{% if product_name == "WSO2 Identity Server" and is_version != "7.0.0" %}
+
+### Self-registration
+
+To try out self-registration,
+
+1. Set up the Guardio business application by following the steps [here]({{base_path}}/guides/organization-management/try-a-b2b-use-case/#set-up-the-business-application).
+
+2. Create an organization for *Best Car Mart* by following the steps [here]({{base_path}}/guides/organization-management/manage-organizations/#create-an-organization).
+
+3. Follow the guides in this page and enable email domain based organization discovery and email domain discovery for self-registration. Add the following email domain mapping.
+ - Organization Name: `Best Car Mart`
+ - Email Domain: `bcmart.com`
+
+5. Navigate to the login page of the application configured in above step 1 and click **Register**.
+
+ ![Application login page]({{base_path}}/assets/img/guides/organization/manage-organizations/application-login-page.png){: width="400" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+
+6. Enter an organization email with the domain `bcmart.com` and **Submit**.
+
+ ![Email input for self-registration]({{base_path}}/assets/img/guides/organization/manage-organizations/email-input-for-self-registration.png){: width="400" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+
+7. After resolving the organization from the email, you will be redirected to the self-registration page of the *Best Car Mart* organization.
+
+ ![Self-registration form]({{base_path}}/assets/img/guides/organization/manage-organizations/self-registration-form.png){: width="400" style="display: block; margin: 0; border: 0.3px solid lightgrey;"}
+
+8. Fill in the user details and click **Sign Up** to complete the registration.
+
+{% endif %}
\ No newline at end of file