14.2 Solution Components, Dependencies, Publishers & Prefixes

Key Takeaways

  • Solution Publishers establish ownership and namespace isolation by assigning a Customization Prefix (e.g., 'contoso_') and Option Value Prefix (e.g., '10000' to '99999') to all new assets.
  • Solution Components encompass schema (tables, columns, keys), apps (model-driven, canvas, custom pages), automations (cloud flows, BPFs), security roles, connection references, and environment variables.
  • Environment Variables separate logic configuration from underlying environments via Definition (metadata, default value) and Value (environment-specific overrides across String, Number, Boolean, JSON, Data Source, Secret).
  • Connection References decouple flows and apps from specific user credentials, enabling seamless ALM deployment without embedding personal connections into managed solutions.
  • Dependency Tracking ('Show Dependencies') prevents breaking changes by enforcing required vs dependent relationships; circular dependencies across solutions must be resolved via core/shared base solutions.
Last updated: August 2026

Solution Components, Dependencies, Publishers & Prefixes

Building enterprise-grade solutions in Microsoft Power Platform requires disciplined modular architecture. When multiple developers, functional consultants, and third-party vendors build customizations within the same tenant or across environments, naming collisions, hardcoded configurations, and broken dependencies can cripple deployment pipelines. On the PL-200 exam, you must demonstrate a thorough understanding of Solution Publishers, Customization Prefixes, Connection References, Environment Variables, and Dependency Tracking Mechanics.


1. Solution Publishers & Customization Prefixes

Every solution created in Microsoft Dataverse must be linked to a Solution Publisher. The publisher defines the organizational identity of the creator and establishes strict namespace governance across all custom schema elements.

+-----------------------------------------------------------------------------------+
|                           SOLUTION PUBLISHER ANATOMY                              |
|                                                                                   |
|  +-----------------------------------------------------------------------------+  |
|  | PUBLISHER RECORD: Contoso Consulting (contoso)                              |  |
|  | - Display Name: Contoso Consulting                                          |  |
|  | - Name: contoso                                                             |  |
|  | - Contact Info: support@contoso.com                                         |  |
|  +-----------------------------------------------------------------------------+  |
|          |                                            |                           |
|          v                                            v                           |
|  +-----------------------------+             +-----------------------------+      |
|  | CUSTOMIZATION PREFIX        |             | OPTION VALUE PREFIX         |      |
|  | Prefix: 'contoso_'          |             | Value Choice Base: 45280    |      |
|  |                             |             |                             |      |
|  | All new custom tables &     |             | All new Choice (OptionSet)  |      |
|  | columns automatically       |             | values generated with:      |      |
|  | prepend:                    |             | Integer Range:              |      |
|  | e.g. contoso_projectid      |             | 452800000 - 452809999       |      |
|  | e.g. contoso_duedate        |             |                             |      |
|  +-----------------------------+             +-----------------------------+      |
+-----------------------------------------------------------------------------------+

Prefix Mechanics

  1. Customization Prefix (prefix_):
    • A short alphanumeric string (typically 2 to 8 characters, e.g., contoso_, corp_, hr_) appended with an underscore.
    • Every time a maker creates a new table, column, relationship, or web resource inside a solution bound to that publisher, Dataverse automatically prepends this prefix to the schema name (e.g., contoso_invoice, contoso_totalamount).
    • Why Prefixes Matter: Prefixes ensure that custom schema names never conflict with out-of-the-box Microsoft standard schema (which uses prefixes like msdyn_, msdynce_, adx_, or no prefix) or customizations created by other ISVs.
  2. Option Value Prefix (Choice Integer Range):
    • A unique 5-digit integer prefix (e.g., 10000 to 99999) assigned to the publisher.
    • When new choices (options) are added to local or global Choice columns, Dataverse generates integer values starting with this prefix (e.g., 100000000, 100000001).
    • This prevents integer collision when merging datasets or consolidating multi-vendor option sets into single reporting models.
  3. The Default Publisher Trap:
    • Every Dataverse environment includes a built-in Default Publisher for [OrgName] with the prefix new_ (and option prefix 10000).
    • Best Practice & Exam Rule: Never use the Default Publisher (new_) for enterprise solutions. Always create a dedicated, custom Solution Publisher with an appropriate organizational prefix before authoring tables or apps.

2. Solution Component Anatomy

A solution is composed of references to diverse Dataverse building blocks:

+-----------------------------------------------------------------------------+
|                         SOLUTION COMPONENT CATALOG                          |
|                                                                             |
|   [DATA MODEL]              [USER EXPERIENCE]       [AUTOMATION & LOGIC]    |
|   - Custom Tables           - Model-Driven Apps     - Cloud Flows           |
|   - Table Columns           - Canvas Apps           - Business Process Flows|
|   - Keys & Relationships    - Custom Pages          - Business Rules        |
|   - Global Choices          - Site Maps & Dashboards- Low-Code Plug-ins     |
|                                                                             |
|   [SECURITY & ACCESS]       [EXTENSIBILITY]         [ALM CONFIGURATION]     |
|   - Security Roles          - Web Resources (JS)    - Connection References |
|   - Field Security Profiles - Custom Connectors     - Environment Variables |
+-----------------------------------------------------------------------------+

When a component is added to a solution, it can be added as a Full Component (including all metadata, columns, forms, and views) or as a Segmented Component (including only specific subcomponents). Segmenting components minimizes merge conflicts during ALM deployments.


3. Environment Variables: Decoupling Configuration from Code

In professional ALM, hardcoding URLs, thresholds, API endpoints, or database IDs inside apps and flows is a severe anti-pattern. When moving a solution from Development to QA and Production, these parameters must change dynamically without modifying the underlying solution code.

Environment Variables store configuration data as key-value pairs separated into two distinct architectural components:

+-----------------------------------------------------------------------------------+
|                         ENVIRONMENT VARIABLE ARCHITECTURE                         |
|                                                                                   |
|  [DEFINITION (Metadata)]                                                          |
|  - Schema Name: contoso_SapEndpointUrl                                            |
|  - Display Name: SAP Endpoint URL                                                 |
|  - Data Type: String                                                              |
|  - Default Value: https://api-dev.internal.corp/v1/sap                            |
|  *** PACKAGED IN SOLUTION & COMMITTED TO SOURCE CONTROL ***                       |
|                                                                                   |
|                                        |                                          |
|                                        v (Overridden in Target Environment)       |
|                                                                                   |
|  [CURRENT VALUE (Environment Override)]                                           |
|  - Dev Environment:    https://api-dev.internal.corp/v1/sap                       |
|  - Test Environment:   https://api-test.internal.corp/v1/sap                      |
|  - Prod Environment:   https://api-prod.internal.corp/v1/sap                      |
|  *** EXCLUDED FROM MANAGED SOLUTION EXPORT (Configured per environment) ***       |
+-----------------------------------------------------------------------------------+

Supported Environment Variable Data Types

  • String: Text values such as endpoint URLs, email distribution aliases, or tenant identifiers.
  • Number: Numeric thresholds, retry intervals, or business transaction limits.
  • Boolean: Feature flags to enable or disable specific app modules or flow branches in production.
  • JSON: Structured configuration payloads, complex mapping dictionaries, or routing matrices.
  • Data Source (SharePoint / Dataverse): Dynamically binds Canvas Apps and Flows to environment-specific SharePoint Sites and Lists without breaking app formulas.
  • Secret (Azure Key Vault): Securely references sensitive credentials (API tokens, private keys) stored in Azure Key Vault using Azure Resource Manager IDs, preventing secrets from ever being exposed in plain text.

[!IMPORTANT] Exporting Environment Variables: When exporting an unmanaged solution for managed deployment to Production, remove the Current Value from the solution package in the development environment. This ensures that the import wizard or CI/CD pipeline prompts the administrator to provide the environment-specific production value without overwriting target settings with dev values.


4. Connection References: Authentication Decoupling

In legacy Power Automate flows, connections were bound directly to individual user accounts. If a developer left the organization or a flow was imported into another environment, all flow actions broke due to missing personal credentials.

Connection References serve as an abstraction layer between solution components (Flows, Canvas Apps) and the physical authenticated connections in target environments:

+-----------------------------------------------------------------------------------+
|                       CONNECTION REFERENCE ALM ARCHITECTURE                       |
|                                                                                   |
|  [MANAGED SOLUTION ASSETS]                                                        |
|  +--------------------------+                                                     |
|  |   Power Automate Flow    |                                                     |
|  |   Action: Create Row     |                                                     |
|  +--------------------------+                                                     |
|               |                                                                   |
|               v (References Logical Pointer)                                      |
|  +-----------------------------------------------------------------------------+  |
|  | CONNECTION REFERENCE: contoso_DataverseConnectionRef                        |  |
|  | - Connector ID: shared_commondataserviceforapps                             |  |
|  | - Packaged inside Solution and transported across environments              |  |
|  +-----------------------------------------------------------------------------+  |
|                                       |                                           |
|               +-----------------------+-----------------------+                   |
|               | (Bound in Dev)                                | (Bound in Prod)   |
|               v                                               v                   |
|  +--------------------------+                   +--------------------------+      |
|  | Physical Connection (DEV)|                   | Physical Connection (PROD|      |
|  | User: dev_maker@corp.com |                   | Service Principal Account|      |
|  +--------------------------+                   +--------------------------+      |
+-----------------------------------------------------------------------------------+

Connection Reference Lifecycle

  1. Inside the development solution, makers create a Connection Reference for each connector used (e.g., Dataverse, Office 365 Outlook, SharePoint, SQL Server).
  2. The solution stores only the metadata pointer, not the underlying user's OAuth tokens or credentials.
  3. Upon importing the solution into Test or Production, the pipeline or administrator binds the Connection Reference to an authenticated connection owned by a Service Principal or dedicated non-interactive Service Account.

5. Solution Dependencies & Dependency Tracking

Dataverse maintains a rigorous internal dependency graph to prevent breaking platform changes. A dependency exists whenever a component relies on another component to function properly.

+-----------------------------------------------------------------------------+
|                        COMPONENT DEPENDENCY TYPES                           |
|                                                                             |
|   [REQUIRED COMPONENT]                      [DEPENDENT COMPONENT]           |
|   - Custom Table: 'Project'   <----------   - Model-Driven Form 'Project'   |
|   - Column: 'BudgetAmount'    <----------   - Power Fx Formula on Form      |
|   - Global Choice: 'Priority' <----------   - Cloud Flow Trigger Condition  |
|                                                                             |
|   RULE 1: A Required Component CANNOT be deleted if a Dependent exists.     |
|   RULE 2: When exporting a solution, all Required Components MUST be        |
|           included in the solution or pre-installed in the target.          |
+-----------------------------------------------------------------------------+

Resolving Missing Dependency Errors

When importing a solution into a target environment, Dataverse executes a pre-import validation check. If the incoming solution references a table, column, or security role that does not exist in the target environment and is not packaged within the incoming solution, the import fails immediately with a Missing Dependency Error.

To troubleshoot and prevent dependency issues:

  • In the Maker portal, select the component and click Advanced > Show dependencies.
  • Review the two dependency tabs:
    1. Dependencies that require this component: Other assets that will break if this component is altered or removed.
    2. Components this component depends on: Pre-requisite assets that must be included in the solution package or present in the target environment.

[!TIP] Circular Dependency Antipattern: Solution A cannot depend on Solution B if Solution B simultaneously depends on Solution A. To resolve circular dependencies, extract the shared schema, tables, and global choices into a standalone Core Foundation Solution that both feature solutions depend on.

Test Your Knowledge

A team of developers is creating several custom tables and choices across multiple solutions in a shared development sandbox. When consolidating their data models into a reporting warehouse, they discover that multiple Choice columns from different developers share the exact same integer value '100000001' for completely different business options. What platform misconfiguration caused this issue?

A
B
C
D
Test Your Knowledge

An enterprise development team is building a Power Automate Cloud Flow that connects to an external ERP REST API. The API URL is 'https://dev-erp.contoso.com/api' in Development and 'https://prod-erp.contoso.com/api' in Production. The team must ensure the solution can be transported across environments via an automated DevOps pipeline without requiring flow code modifications or hardcoded edits. How should the functional consultant configure this requirement?

A
B
C
D
Test Your Knowledge

A functional consultant attempts to delete a custom column named 'contoso_costestimate' from an unmanaged solution in a development environment. Dataverse prevents the deletion and displays an error indicating that dependent components exist. Which tool within the Power Apps Maker portal should the consultant use to identify which forms, views, or flows are blocking the deletion?

A
B
C
D
Test Your Knowledge

A company is deploying a Managed Solution containing multiple automated Power Automate Cloud Flows into a Production environment. Previously, deploying flows resulted in broken connections because they were tied to the personal credentials of the developer who built them. Which solution component resolves this issue by abstracting flow actions from physical user credentials during ALM deployment?

A
B
C
D