Requirements
To follow the steps in this guide, you’ll need:- A shared model to use as the parent
- Organization Admin permissions, or Connection Admin permissions for the connection
Setting up the extension
Set the parent connection's base access to No Access
The base access role is the minimum role every user has on every model in the connection, including the parent model and each extension.Set the base access role to No Access so that no one can access the parent model or its extensions until you grant access.
- Click Settings > Connections.
- Click the parent connection.
- Click the Permissions tab.
- Set Base access role to No Access.
- Click Save changes.
Create the extension model
- Click Develop in the sidebar.
- Select the parent model.
- In the model IDE, click Model > Advanced > New shared extension.
-
Enter a name for the extension. For example
customer_1_model. -
Set Allow exploration and Branch workflow:
Allow exploration
Controls how users access the extension
- On - Users can build their own workbooks or Omni Agent chats on the extension.
- Off - Users reach the extension only through routing.
Branch workflow
Controls how you develop and release the extension
- Develop with the parent model (default) - The extension shares branches and Git with the parent model.
- Develop independently - The extension has its own branches. Omni doesn’t include the extension in Git.
- Click Create. Omni opens the new extension in the model IDE.
Create a user attribute
Create the user attribute Omni uses to select the extension for each user.
- Click Settings > Attributes.
- Click New Attribute.
- Enter a name and a reference, for example
customer_name. - Assign a value to each user.
Map the user attribute in the parent model
- Click Develop in the sidebar.
- Open the parent model. If the parent model is linked to Git, open a branch.
-
In the model file, use
dynamic_shared_extensionsto map the extension to the user attribute you created in the previous step:- Manual mapping
- Programmatic mapping
Usemappingsto map each attribute value to an extension:Manual mappingUsemappingsormap_patternper extension model, not both. - Save the changes. If you made the changes in a branch, merge the branch.
Grant model access
A user’s Model role controls their permission to run queries. Users also need access to the dashboard or workbook through its document or folder permissions.Users can explore and build content using an extension through user attribute routing or by selecting it directly:
Model permissions can come from roles assigned to the user, their groups, or the connection. Allow exploration does not itself grant query permissions.Use the connection’s Permissions tab to assign permissions to users and user groups.
Test access with user impersonation
Impersonate a test user to confirm the setup:
- Click Settings > Users and select a test user. This user can’t be an Organization Admin.
- Set the user’s attribute to the value for the extension you want to test.
- At the bottom of the user’s page, click Impersonate user.
- Open a dashboard or workbook built on the parent model that has been shared with the test user, or create a workbook on the parent model if their role allows it.
- Confirm that the available topics and fields reflect the mapped extension, then run a query to verify the expected results.
Troubleshooting
Users see the parent model instead of their extension
Users see the parent model instead of their extension
Omni routes a user to an extension only when the user’s attribute value matches a mapping in the parent model. If nothing matches, Omni routes the user to the parent model. Check the following:
- Attribute reference - The
user_attributevalue in the model file must match the attribute’s Reference in Settings > Attributes, for examplecustomer_name. The reference is case-sensitive. - Attribute value - The user’s value must appear in a
values_for_modellist, or must build an existing extension name throughmap_pattern. - Extension name - The mapping key, or the name that
map_patternbuilds, must match the extension’s name exactly.
Users see a 'No Access' error
Users see a 'No Access' error
For content built on the parent model, confirm that the user has a role on the parent model that permits running queries. A role on the mapped extension alone does not grant permission to run queries in parent-built content.For content built directly on an extension, check the user’s role on that extension.Confirm that the user, or a group they belong to, has a role on the correct model under Model access on the connection’s Permissions tab.Also confirm that the dashboard or workbook has been shared with the user through document or folder permissions.

