Hello my dears!
I recently purchased an Microsoft 365 Business Basic subscription to make use of Microsoft Dataverse with Microsoft PowerApps.
I am in the "default" Environment and have created two empty solutions (using the same publisher):
- SolutionA
- SolutionB
Each of my solutions will need a table named "Tasks", but with completely different data and slightly different column names and types.
While I can create a "Tasks" table as expected in SolutionA, I unexpectedly receive an error message while trying to create a "Tasks" table in SolutionB:
Failed to create entity with logical name pn95_tasks and object type code -1.
Exception: Microsoft.Crm.CrmException: The schema name pn95_Tasks for type Entity is not unique.
An pn95_Tasks with same name already exists.
at Microsoft.Crm.Metadata.SchemaNameValidator.ValidateSchemaNameIsUnique(String metadataEntityName, String attributeName, ISqlExecutionContext sqlContext)
at Microsoft.Crm.Metadata.EntityService.ValidateEntitySchemaNameForCreate(String entityName, String physicalName, Boolean isBPFEntity, MetadataHelper metadataHelper, ISqlExecutionContext sqlContext)
at Microsoft.Crm.Metadata.EntityService.ValidateEntityNameAndLabels(EntityCreateInfo entityInfo, MetadataHelper metadataHelper, ISqlExecutionContext sqlContext)
at Microsoft.Crm.Metadata.EntityService.ValidateForCreate(EntityCreateInfo entityInfo, MetadataHelper metadataHelper, ExecutionContext context, Boolean useReserveEntity)
at Microsoft.Crm.Metadata.EntityService.<>c__DisplayClass46_0.<CreateEntityFromReserve>b__0()
at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger logger, EventId eventId, ActivityType activityType, Func`1 func, IEnumerable`1 additionalCustomProperties)
at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func`1 func)
at Microsoft.Crm.Metadata.EntityService.CreateEntityFromReserve(IEntityInfo entityInfo, MetadataHelper metadataHelper, Boolean isInSolutionImportMode, ExecutionContext context, Guid& entityId)
at Microsoft.Crm.Metadata.EntityService.CreateInternalHelper(EntityCreateInfo entityInfo, MetadataHelper metadataHelper, Boolean shouldCreateOnlyFromReserve, ExecutionContext context)
What I am noticing from this is that solutions are not isolated containers (as I had wrongly assumed).
Does it mean that I need to create a new environment for each app, to use tables with the same name but with different compositions or is there a way to create a table, which is scoped to be only accessible within a solution?