Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Discovery includes multiple resource types, some with dependencies on resources in other resource providers. By understanding resource naming constraints, you can improve clarity, prevent conflicts, enable automation, and support governance and security.
Distinguish Azure Resource Manager (ARM) resource names from onboarding-tool inputs and data-plane names. They can have different limits.
General naming guidelines
| Guideline | Recommendation |
|---|---|
| Uniqueness | Check the resource's actual scope. Projects are children of a workspace; storage containers are resource-group resources. |
| Predictability | Use a consistent pattern for environment, purpose, and ownership. |
| Case | Prefer lowercase for scripts and endpoint names. The ARM API doesn't impose a universal lowercase-only constraint. |
| Characters | Use ASCII letters and digits, with hyphens where the resource permits them. Don't use spaces or other punctuation. |
| Length | Follow the limits for the API, onboarding tool, and backing service used by your deployment. |
| Separators | Avoid consecutive hyphens. The recommended regexes below reject them; this isn't an additional ARM API restriction. |
Managed resource group naming conventions
When certain Discovery resources are created, corresponding Managed Resource Groups (MRGs) are automatically provisioned to host the service components required to support those resources. The following naming conventions apply to these MRGs:
| Resource type | Naming convention | Example |
|---|---|---|
| Microsoft Discovery Workspace | mrg-dwsp-<customer-provided-name>-<6-char-random-sequence> |
mrg-dwsp-testworkspace-abcdef |
| Microsoft Discovery Bookshelf | mrg-dbksf-<customer-provided-name>-<6-char-random-sequence> |
mrg-dbksf-testbookshelf-lmnopq |
| Microsoft Discovery Supercomputer | mrg-dscmp-<customer-provided-name>-<6-char-random-sequence> |
mrg-dscmp-testsc-abcxyz |
These names are generated by the service, not selected through the onboarding name fields.
Resource-specific naming rules
The 2026-06-01 ARM API specification specifies ^[a-zA-Z0-9-]{3,24}$ for workspaces, projects, supercomputers, node pools, tools, bookshelves, chat model deployments, storage containers, and storage assets. This pattern permits uppercase letters, digits at the start, leading or trailing hyphens, and consecutive hyphens. It doesn't establish endpoint availability or acceptance by every backing service. Check the versioned resource reference when using another API version.
The following recommended patterns combine the onboarding configuration schema's length limits with character and start/end conventions for local validation. The schema defines these input lengths but doesn't define character regexes for the name fields. The character, start/end, and separator restrictions below are recommendations, not additional ARM rules or verified data-plane limits. Bookshelf and chat model deployment lengths use the ARM limits because they don't have corresponding onboarding name fields.
| Resource | Length | Characters | Start and end | Recommended regex | Examples |
|---|---|---|---|---|---|
| Workspace | 3-24 | Lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[a-z][a-z0-9-]{1,22}[a-z0-9]$ |
workspace01, workspace-main |
| Project | 3-12 | Lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[a-z][a-z0-9-]{1,10}[a-z0-9]$ |
ai-project, adhesives01 |
| Supercomputer | 3-24 | Lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[a-z][a-z0-9-]{1,22}[a-z0-9]$ |
quantum-supercomputer, supercomputer01 |
| Node pool | 3-12 | Lowercase letters and digits; no hyphens | Start with a letter; end with a letter or digit | ^[a-z][a-z0-9]{2,11}$ |
nodepool01, gpunodes |
| Tool | 3-24 | Uppercase or lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[A-Za-z][A-Za-z0-9-]{1,22}[A-Za-z0-9]$ |
adft-tool, mol-toolkit |
| Agent | 3-63 | Uppercase or lowercase letters, digits, hyphens | Start and end with a letter or digit | ^(?!.*--)[A-Za-z0-9][A-Za-z0-9-]{1,61}[A-Za-z0-9]$ |
search-agent, crawler-agent |
| Storage container | 3-24 | Lowercase letters, digits, hyphens | Start and end with a letter | ^(?!.*--)[a-z][a-z0-9-]{1,22}[a-z]$ |
contoso-datacontainer, archivecontainer |
| Storage asset | 3-24 | Lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[a-z][a-z0-9-]{1,22}[a-z0-9]$ |
input-molecules-01, outputdata |
| Investigation | 1-20 | Lowercase letters, digits, hyphens | Start and end with a letter | ^(?!.*--)[a-z](?:[a-z0-9-]{0,18}[a-z])?$ |
chem-investigation, anomaly-study |
| Bookshelf | 3-24 | Lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[a-z][a-z0-9-]{1,22}[a-z0-9]$ |
research-bookshelf |
| Chat model deployment | 3-24 | Lowercase letters, digits, hyphens | Start with a letter; end with a letter or digit | ^(?!.*--)[a-z][a-z0-9-]{1,22}[a-z0-9]$ |
gpt-5-4 |
| Resource-specific distinction | Guidance |
|---|---|
| Workspace | Its name is also used in the workspace endpoint. A local regex check doesn't establish endpoint-name availability. |
| Project | Its name is scoped to the workspace. The ARM API allows up to 24 characters, but onboarding names.project allows up to 12. |
| Node pool | The ARM API allows 3-24 characters, but onboarding names.nodePool allows 3-12. The no-hyphen pattern above is a recommendation, not an ARM restriction; review backing-service requirements for your deployment. |
| Agent and investigation | These are data-plane/onboarding names, not ARM resource names covered by the common pattern. The lengths above come from onboarding inputs, not a verified data-plane contract. Follow the API for your creation path; don't apply these limits to every shared-session display name. |
| Storage container | The Discovery resource name is separate from the backing Azure Blob container name. |
| Storage asset | The asset resource name is separate from its blob path or filename. |
Internationalization and localization
Use English terms and ASCII characters for all resource names to ensure maximum compatibility across systems and global regions. If localization is necessary, use a mapping table or metadata field rather than encoding localized names directly in the resource name.
Validation and error handling
| Check | What to verify |
|---|---|
| Local syntax | Match the entire name against the appropriate regex. The ^ and $ anchors delimit the name; use full-string matching and reject line breaks. |
| Deployment constraints | Run the onboarding configuration task and review the applicable API and backing-service requirements. A regex match doesn't prove Azure will accept the deployment. |
| Live availability | Check uniqueness in the resource's actual scope. Review skipped or unavailable Azure checks rather than treating local success as name availability. |
| Generated names | Review tool-specific derivation rules, including the default project storage-container name. |
| Rejected input | Follow the failing API or tool check's requirement; don't apply a different resource's naming rule. |