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. @@ -177,9 +225,9 @@ You need to:
Username and Email
-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