During the export of an unmanged solution I always received the following error message from my CRM 2016 SP1 OnPremise development system:
The attribute with AttributeId = '023bda49-9dfa-401e-b348-9374a4141186' was not found in the MetadataCache.
Then I tried to remember what I did since the last solution version.
=> Yes, there was a field that I deleted, because the customer does not need it anymore.
Because I am working on-premise it was easy to check the database for the specific attribute.
First, I searched in the attribute table:
SELECT [AttributeId]
FROM [Dev_MSCRM].[MetadataSchema].[Attribute]
where [AttributeId] = '023bda49-9dfa-401e-b348-9374a4141186'
=> result was nothing
I concluded CRM deleted the field in this table but missed to remove the attribute from our customer solution.
Next thing was to check the solutioncomponent table:
SELECT [ModifiedOn]
,[CreatedBy]
,[ObjectId]
,[IsMetadata]
,[ModifiedBy]
,[SolutionId]
,[SolutionComponentId]
,[CreatedOn]
,[VersionNumber]
,[ComponentType]
,[CreatedOnBehalfBy]
,[ModifiedOnBehalfBy]
,[RootComponentBehavior]
,[RootSolutionComponentId]
FROM [Dev_MSCRM].[dbo].[SolutionComponentBase]
where ObjectId = '023bda49-9dfa-401e-b348-9374a4141186'
=> There we go! There is still an entry where it should not be :(
Now I backed up this record from this table and deleted this record from the solutioncomponentbase table:
DELETE FROM [dbo].[SolutionComponentBase]
WHERE ObjectId = '023bda49-9dfa-401e-b348-9374a4141186'
Next time I tried to export the solution it worked just perfectly.
Problem solved!
The attribute with AttributeId = '023bda49-9dfa-401e-b348-9374a4141186' was not found in the MetadataCache.
Then I tried to remember what I did since the last solution version.
=> Yes, there was a field that I deleted, because the customer does not need it anymore.
Because I am working on-premise it was easy to check the database for the specific attribute.
First, I searched in the attribute table:
SELECT [AttributeId]
FROM [Dev_MSCRM].[MetadataSchema].[Attribute]
where [AttributeId] = '023bda49-9dfa-401e-b348-9374a4141186'
=> result was nothing
I concluded CRM deleted the field in this table but missed to remove the attribute from our customer solution.
Next thing was to check the solutioncomponent table:
SELECT [ModifiedOn]
,[CreatedBy]
,[ObjectId]
,[IsMetadata]
,[ModifiedBy]
,[SolutionId]
,[SolutionComponentId]
,[CreatedOn]
,[VersionNumber]
,[ComponentType]
,[CreatedOnBehalfBy]
,[ModifiedOnBehalfBy]
,[RootComponentBehavior]
,[RootSolutionComponentId]
FROM [Dev_MSCRM].[dbo].[SolutionComponentBase]
where ObjectId = '023bda49-9dfa-401e-b348-9374a4141186'
=> There we go! There is still an entry where it should not be :(
Now I backed up this record from this table and deleted this record from the solutioncomponentbase table:
DELETE FROM [dbo].[SolutionComponentBase]
WHERE ObjectId = '023bda49-9dfa-401e-b348-9374a4141186'
Next time I tried to export the solution it worked just perfectly.
Problem solved!
I think a safer way to accomplish this might be to remove the offending entity (the one the field was removed from) and add it back to the solution.
ReplyDelete