Contents
Overview
When exporting or serializing Aurea CRM (ACRM) format definitions (for example, DataModel and TenantRight) from a DLL extension, the resulting XML may show incorrect cat attribute values (often 0 or other unexpected numbers) where specific catalog IDs were expected.
This behavior was reported in ACRM 14.0 and 15.25.2 and was not confirmed as a product defect. The reliable mitigation is to treat the format XML as a format-definition representation, and to build Catalog ID/name (and value) mappings from the core catalog export sources instead.
Solution
Symptoms (how to recognize the issue)
- The exported/serialized format XML contains catalog attributes with unexpected values, for example: "cat attributes contains stranges values (0 or unknonwn numbers)".
- Expected catalog IDs (examples:
cat=5001,cat=5002,cat=400) appear instead as0or other unexpected numeric values. - This is commonly observed when reading formats via the SDK (for example using IFormatsService.ReadContents(...)) and serializing the returned XML (e.g., via an XML
OuterXmlserialization flow).
Key finding
The XML returned by IFormatsService.ReadContents() (and related format export flows) represents format definitions. It is not an authoritative catalog dictionary.
- Do not build Catalog ID → Catalog name mappings from
catattributes in exported format XML. - Instead, extract catalogs from core catalog sources and join that catalog data to your exported formats as needed.
Recommended approach: export catalog definitions with mmba.exe and parse them
Step 1 — Configure mm.ini for XML export
On the CRM server, update mm.ini (commonly located under system/sys/mm.ini) to support predictable XML output naming and language tagging:
xml_unique_filenamexml_lang
Note: Exact value conventions depend on your environment standards. The key requirement is enabling unique filenames and language tagging in the generated XML output.
Step 2 — Export variable catalog definitions per language
Run mmba.exe to export catalog definitions to XML (repeat per language as needed):
mmba.exe -writexmldef -l0
mmba.exe -writexmldef -l1
This produces XML output containing catalog identifiers and their display names per language.
Reference: https://support.acrm.aurea.com/article/3153
Step 3 — Parse the generated XML into a “catalog dictionary” mapping table
Parse the mmba.exe-generated XML and load it into your external store (for example, a database table or an in-memory map), such as:
- Catalog ID (catalog number)
- Catalog name/text (per language, if required)
The referenced knowledge base article provides an example approach for extracting variable catalog names and loading them into an external database for lookup.
Reference: https://support.acrm.aurea.com/article/3153
Step 4 — Optional: export fixed catalog values (code/value lists)
If your integration also needs fixed catalog values (code/value lists), export those using the documented fixed-catalog export method:
Reference: https://support.acrm.aurea.com/article/3247
Step 5 — Continue exporting formats, but resolve catalog names via the exported dictionary
You can continue exporting DataModel/TenantRight formats as you do today (for example, via SDK format reads), but:
- Do not use the format XML
cat=...attributes as the source of “catalog name” (or as a reliable catalog dictionary). - Resolve catalog identifiers against the mmba-derived catalog dictionary (and fixed-catalog exports where applicable).
Tenant-Specific Visibility
Tenant visibility is enforced by rights/tenant configuration. If your requirement is similar to “Tenant A can read only those BB entries,” do not infer catalog entry visibility from format XML definitions alone.
- Evaluate visibility by reading/querying using the same tenant/user execution context your integration will use.
- Do not assume that visibility rules can be derived solely from exported DataModel/TenantRight XML.
Validation (how to confirm it’s working)
- Run
mmba.exe -writexmldef -l<lang_id>and confirm the output XML includes catalogs with IDs and human-readable names. - Parse the exported XML and verify your mapping contains expected pairs, for example:
<expected_catalog_id>→<expected_catalog_name>
- In your integration/export pipeline:
- Export formats as before.
- Use the mapping table to translate catalog IDs to names (and fixed values, if applicable).
- Confirm that catalogs that previously appeared as
0in format XML can now be correctly identified by name via your mapping (even if the format XML remains unsuitable as a dictionary source).
Frequently Asked Questions
- 1. How do I know I’m experiencing this specific issue?
- You will see catalog references in exported/serialized DataModel or TenantRight XML where the catalog attribute values appear as
0or unexpected numbers (matching the symptom: “cat attributes contains stranges values (0 or unknonwn numbers)”), instead of expected IDs likecat=5001orcat=400. - 2. Is this confirmed to be a product defect in ACRM 14.0 or 15.25.2?
- No defect was confirmed based on the available evidence. The reliable approach is to avoid using format XML as a catalog dictionary and instead export catalogs from core sources (
mmba.exe) and parse that output for Catalog ID/name mappings. - 3. What is the recommended way to get Catalog IDs and names for an external integration?
-
Export catalog definitions using
mmba.exe -writexmldef(per language as needed), then parse the generated XML to build your Catalog ID → Catalog name mapping. See https://support.acrm.aurea.com/article/3153. - 4. What if I also need fixed catalog values (code/value lists)?
- Use the fixed-catalog export method described in https://support.acrm.aurea.com/article/3247, then link those exported values to your catalog mapping as needed.
- 5. How should tenant-specific visibility be handled (“Tenant A can read only those entries”)?
- Determine visibility by reading/querying using the intended tenant/user execution context, rather than assuming visibility rules can be inferred from the format XML alone.
- 6. What should I provide if I still suspect a serialization defect?
- Provide the smallest XML snippet showing the problematic
cat=...attribute (for example where it shows0) and the expected catalog ID/name from your environment. This enables a precise comparison between expected catalog metadata and the exported representation.
Priyanka Bhotika
Comments