AX 2012, a TableMap object turns to be a Table

 

Issue description:

 

We have seen some scenarios while deploying Models/ModelStore among multi environments, 

that a TableMap object turns to be a Table.

Cause:

Unknown, no consistent repro pattern has been spotted

Resolution suggestion:

We take e.g. that the affected object is the ‘CustVendInvoiceTrans’ table map.

Run the following SQL script in order to correct the object type:

— Assumption: Script works against dev model store

— Assumption: Clean baseline model store is named: axdbdev_model_id_baseline (can be replaced by own naming)

 

— Check existence affect object in dev environment 

SELECT m.ElementType, m.Name, m.AxId, md.LayerId, manifest.DisplayName, md.Properties as Metadata

FROM [dbo].ModelElement AS m

INNER JOIN [dbo].ModelElementData AS md

ON m.ElementHandle = md.ElementHandle

INNER JOIN [dbo].ModelManifest AS manifest

ON md.ModelId = manifest.ModelId

AND m.ElementType = 44 AND m.Name = ‘CustVendInvoiceTrans’

 

— Check existence affect object in baseline environment

SELECT m.ElementType, m.Name, m.AxId, md.LayerId, manifest.DisplayName, md.Properties as Metadata

FROM axdbdev_model_id_baseline.[dbo].ModelElement AS m

INNER JOIN axdbdev_model_id_baseline.[dbo].ModelElementData AS md

ON m.ElementHandle = md.ElementHandle

INNER JOIN axdbdev_model_id_baseline.[dbo].ModelManifest AS manifest

ON md.ModelId = manifest.ModelId

AND m.ElementType = 44 AND m.Name = ‘CustVendInvoiceTrans’

 

— Replace corrupted metadata on dev environment from baseline environment 

Update md Set md.Properties = md_base.Properties

FROM [dbo].ModelElement AS m

INNER JOIN [dbo].ModelElementData AS md

ON m.ElementHandle = md.ElementHandle

INNER JOIN axdbdev_model_id_baseline.[dbo].ModelElement AS m_base

ON m.ElementType = m_base.ElementType AND m.Name = m_base.Name

INNER JOIN axdbdev_model_id_baseline.[dbo].ModelElementData AS md_base

ON m_base.ElementHandle = md_base.ElementHandle

AND m_base.ElementType = 44 AND m_base.Name = ‘CustVendInvoiceTrans’ AND md_base.LayerId = 0