d365fo-mcp 1.14.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +4 -4
- package/README.md +4 -4
- package/bridge/D365MetadataBridge/Models/Models.cs +20 -0
- package/bridge/D365MetadataBridge/Services/MetadataReadService.cs +480 -13
- package/bridge/D365MetadataBridge/Services/MetadataWriteService.cs +37 -1
- package/dist/bridge/bridgeAdapter.d.ts +138 -2
- package/dist/bridge/bridgeAdapter.js +333 -58
- package/dist/bridge/bridgeClient.d.ts +2 -0
- package/dist/bridge/bridgeClient.js +20 -0
- package/dist/bridge/bridgeFailure.d.ts +3 -1
- package/dist/bridge/bridgeFailure.js +15 -6
- package/dist/bridge/bridgeTypes.d.ts +14 -0
- package/dist/cli/commands/bpCatalog.js +5 -2
- package/dist/config/settings.js +49 -5
- package/dist/index.js +22 -9
- package/dist/knowledge/compilerFacts.d.ts +50 -0
- package/dist/knowledge/compilerFacts.generated.d.ts +27 -0
- package/dist/knowledge/compilerFacts.generated.js +915 -0
- package/dist/knowledge/compilerFacts.js +67 -0
- package/dist/knowledge/kernelEnums.js +27 -0
- package/dist/knowledge/mobileAppPatterns/catalog.d.ts +20 -0
- package/dist/knowledge/mobileAppPatterns/catalog.js +548 -0
- package/dist/knowledge/mobileAppPatterns/index.d.ts +19 -0
- package/dist/knowledge/mobileAppPatterns/index.js +115 -0
- package/dist/knowledge/mobileAppPatterns/types.d.ts +62 -0
- package/dist/knowledge/mobileAppPatterns/types.js +22 -0
- package/dist/knowledge/reportPatterns/catalog.d.ts +16 -0
- package/dist/knowledge/reportPatterns/catalog.js +411 -0
- package/dist/knowledge/reportPatterns/index.d.ts +13 -0
- package/dist/knowledge/reportPatterns/index.js +73 -0
- package/dist/knowledge/reportPatterns/types.d.ts +43 -0
- package/dist/knowledge/reportPatterns/types.js +11 -0
- package/dist/metadata/indexWarmup.d.ts +43 -0
- package/dist/metadata/indexWarmup.js +62 -0
- package/dist/metadata/indexWarmupWorker.d.ts +67 -0
- package/dist/metadata/indexWarmupWorker.js +117 -0
- package/dist/metadata/symbolIndex.d.ts +23 -0
- package/dist/metadata/symbolIndex.js +72 -5
- package/dist/prompts/codeReview.js +5 -0
- package/dist/prompts/systemInstructions.js +5 -2
- package/dist/resources/index.d.ts +1 -0
- package/dist/resources/index.js +43 -14
- package/dist/scripts/build-database.js +66 -9
- package/dist/scripts/build-fts.js +66 -9
- package/dist/scripts/buildIndexWorker.js +149 -0
- package/dist/scripts/extract-metadata.js +38 -4
- package/dist/scripts/indexWarmupWorker.js +201 -0
- package/dist/server/serverMode.d.ts +23 -3
- package/dist/server/serverMode.js +46 -12
- package/dist/server/toolAnnotations.js +1 -4
- package/dist/server/toolSchemas/buildD365foProject.d.ts +13 -4
- package/dist/server/toolSchemas/buildD365foProject.js +15 -5
- package/dist/server/toolSchemas/d365foFile.d.ts +4 -1
- package/dist/server/toolSchemas/d365foFile.js +19 -12
- package/dist/server/toolSchemas/generateObject.d.ts +0 -1
- package/dist/server/toolSchemas/generateObject.js +14 -5
- package/dist/server/toolSchemas/getKnowledge.d.ts +0 -1
- package/dist/server/toolSchemas/getKnowledge.js +6 -4
- package/dist/server/toolSchemas/getObjectInfo.d.ts +0 -1
- package/dist/server/toolSchemas/getObjectInfo.js +5 -2
- package/dist/server/toolSchemas/getWorkspaceInfo.d.ts +11 -0
- package/dist/server/toolSchemas/getWorkspaceInfo.js +14 -3
- package/dist/server/toolSchemas/index.d.ts +180 -89
- package/dist/server/toolSchemas/index.js +0 -6
- package/dist/server/toolSchemas/labels.d.ts +0 -5
- package/dist/server/toolSchemas/labels.js +12 -15
- package/dist/server/toolSchemas/objectPatterns.js +12 -10
- package/dist/server/toolSchemas/prepare.d.ts +0 -1
- package/dist/server/toolSchemas/prepare.js +19 -6
- package/dist/server/toolSchemas/runBpCheck.d.ts +0 -8
- package/dist/server/toolSchemas/runBpCheck.js +7 -3
- package/dist/server/toolSchemas/runSystestClass.js +1 -1
- package/dist/server/toolSchemas/search.js +3 -4
- package/dist/server/toolSchemas/securityInfo.d.ts +0 -1
- package/dist/server/toolSchemas/securityInfo.js +1 -1
- package/dist/server/toolSchemas/updateSymbolIndex.js +5 -3
- package/dist/server/toolSchemas/validateCode.js +4 -4
- package/dist/server/toolSchemas/validateObjectNaming.js +1 -1
- package/dist/server/toolSchemas/verifyD365foProject.d.ts +0 -8
- package/dist/server/toolSchemas/verifyD365foProject.js +6 -3
- package/dist/server/transport.d.ts +19 -0
- package/dist/server/transport.js +21 -8
- package/dist/tools/analysis/batchSearch.js +17 -23
- package/dist/tools/analysis/findReferences.js +107 -7
- package/dist/tools/analysis/search.d.ts +24 -0
- package/dist/tools/analysis/search.js +165 -13
- package/dist/tools/analysis/searchLabels.d.ts +4 -0
- package/dist/tools/analysis/searchLabels.js +115 -12
- package/dist/tools/analysis/validateObjectNaming.js +1 -0
- package/dist/tools/analysis/validateXpp.d.ts +28 -6
- package/dist/tools/analysis/validateXpp.js +1424 -146
- package/dist/tools/d365foFile.d.ts +2 -1
- package/dist/tools/d365foFile.js +166 -8
- package/dist/tools/knowledge/bpMonikerHelp.js +22 -5
- package/dist/tools/knowledge/getKnowledge.d.ts +27 -0
- package/dist/tools/knowledge/getKnowledge.js +51 -4
- package/dist/tools/knowledge/getMobileAppPatterns.d.ts +22 -0
- package/dist/tools/knowledge/getMobileAppPatterns.js +29 -0
- package/dist/tools/knowledge/getReportPatterns.d.ts +22 -0
- package/dist/tools/knowledge/getReportPatterns.js +29 -0
- package/dist/tools/knowledge/objectPatterns.d.ts +1 -0
- package/dist/tools/knowledge/objectPatterns.js +42 -4
- package/dist/tools/knowledge/xppKnowledge.js +1402 -45
- package/dist/tools/labels.js +23 -1
- package/dist/tools/prepare/prepare.d.ts +1 -1
- package/dist/tools/prepare/prepare.js +23 -6
- package/dist/tools/prepare/prepareChange.d.ts +22 -0
- package/dist/tools/prepare/prepareChange.js +219 -37
- package/dist/tools/prepare/prepareCreate.d.ts +5 -0
- package/dist/tools/prepare/prepareCreate.js +233 -30
- package/dist/tools/prepare/prepareTest.d.ts +3 -0
- package/dist/tools/prepare/prepareTest.js +244 -0
- package/dist/tools/readers/edtInfo.js +91 -16
- package/dist/tools/readers/formInfo.js +138 -9
- package/dist/tools/readers/getObjectInfo.js +135 -3
- package/dist/tools/readers/getWorkspaceInfo.js +68 -25
- package/dist/tools/readers/tableInfo.d.ts +1 -13
- package/dist/tools/readers/tableInfo.js +39 -2
- package/dist/tools/responseCaps.d.ts +11 -0
- package/dist/tools/responseCaps.js +116 -0
- package/dist/tools/sdlc/buildProject.d.ts +26 -0
- package/dist/tools/sdlc/buildProject.js +115 -7
- package/dist/tools/sdlc/dbSync.js +5 -5
- package/dist/tools/sdlc/reviewWorkspaceChanges.d.ts +1 -1
- package/dist/tools/sdlc/reviewWorkspaceChanges.js +78 -9
- package/dist/tools/sdlc/runBpCheck.js +22 -2
- package/dist/tools/sdlc/sysTestRunner.d.ts +17 -0
- package/dist/tools/sdlc/sysTestRunner.js +180 -10
- package/dist/tools/sdlc/undoLastModification.js +4 -4
- package/dist/tools/sdlc/updateSymbolIndex.js +22 -1
- package/dist/tools/smart/codeGen.d.ts +8 -0
- package/dist/tools/smart/codeGen.js +593 -16
- package/dist/tools/smart/generateSmartForm.js +92 -17
- package/dist/tools/smart/generateSmartReport.d.ts +10 -2
- package/dist/tools/smart/generateSmartReport.js +161 -49
- package/dist/tools/smart/generateSmartTable.d.ts +21 -3
- package/dist/tools/smart/generateSmartTable.js +101 -7
- package/dist/tools/specs/d365foFileOpSpecs.d.ts +42 -0
- package/dist/tools/specs/d365foFileOpSpecs.js +115 -14
- package/dist/tools/specs/generateObjectOpSpecs.js +78 -4
- package/dist/tools/specs/getFormPatternSpec.js +1 -0
- package/dist/tools/specs/labelsOpSpecs.js +16 -2
- package/dist/tools/specs/opSpecs.d.ts +1 -15
- package/dist/tools/specs/opSpecs.js +95 -9
- package/dist/tools/toolHandler.d.ts +0 -1
- package/dist/tools/toolHandler.js +66 -53
- package/dist/tools/write/createD365File.d.ts +27 -451
- package/dist/tools/write/createD365File.js +403 -2660
- package/dist/tools/write/createLabel.d.ts +95 -0
- package/dist/tools/write/createLabel.js +270 -4
- package/dist/tools/write/deleteD365File.js +1 -1
- package/dist/tools/write/directXmlWriters.d.ts +401 -0
- package/dist/tools/write/directXmlWriters.js +1616 -0
- package/dist/tools/write/inlineWriteVerification.d.ts +19 -0
- package/dist/tools/write/inlineWriteVerification.js +37 -0
- package/dist/tools/write/modifyD365File.d.ts +73 -67
- package/dist/tools/write/modifyD365File.js +602 -1630
- package/dist/tools/write/objectIdentityGate.d.ts +71 -0
- package/dist/tools/write/objectIdentityGate.js +126 -0
- package/dist/tools/write/preserveMetadataElements.d.ts +81 -0
- package/dist/tools/write/preserveMetadataElements.js +217 -0
- package/dist/tools/write/renameLabel.js +4 -3
- package/dist/tools/write/resolveReferences.d.ts +7 -0
- package/dist/tools/write/resolveReferences.js +202 -49
- package/dist/tools/xml/createTablePropertyHonesty.d.ts +2 -0
- package/dist/tools/xml/createTablePropertyHonesty.js +33 -7
- package/dist/tools/xml/formXml.js +54 -2
- package/dist/tools/xml/generateD365Xml.d.ts +6 -152
- package/dist/tools/xml/generateD365Xml.js +6 -1214
- package/dist/tools/xml/generateTableFields.d.ts +1 -1
- package/dist/tools/xml/generateTableFields.js +4 -4
- package/dist/tools/xml/queryViewXml.d.ts +1 -1
- package/dist/tools/xml/queryViewXml.js +2 -2
- package/dist/tools/xml/securityDutyRoleXml.d.ts +1 -1
- package/dist/tools/xml/securityDutyRoleXml.js +1 -1
- package/dist/tools/xml/tableXml.d.ts +42 -0
- package/dist/tools/xml/tableXml.js +112 -24
- package/dist/tools/xml/xmlTemplateGenerator.d.ts +481 -0
- package/dist/tools/xml/xmlTemplateGenerator.js +2637 -0
- package/dist/utils/axEnumProperties.d.ts +31 -21
- package/dist/utils/axEnumProperties.js +48 -46
- package/dist/utils/axTablePropertyOrder.d.ts +1 -1
- package/dist/utils/axTablePropertyOrder.js +1 -1
- package/dist/utils/baseObjectXml.d.ts +22 -0
- package/dist/utils/baseObjectXml.js +88 -0
- package/dist/utils/configManager.d.ts +14 -0
- package/dist/utils/configManager.js +69 -5
- package/dist/utils/fieldControlTypes.d.ts +35 -1
- package/dist/utils/fieldControlTypes.js +118 -2
- package/dist/utils/formPatternTemplates.d.ts +51 -2
- package/dist/utils/formPatternTemplates.js +54 -22
- package/dist/utils/indexStaleness.d.ts +35 -2
- package/dist/utils/indexStaleness.js +58 -2
- package/dist/utils/labelDiskCheck.d.ts +13 -0
- package/dist/utils/labelDiskCheck.js +46 -13
- package/dist/utils/labelReference.d.ts +40 -0
- package/dist/utils/labelReference.js +75 -0
- package/dist/utils/loopLag.d.ts +38 -0
- package/dist/utils/loopLag.js +81 -0
- package/dist/utils/modelClassifier.js +19 -0
- package/dist/utils/objectNamingRules.d.ts +12 -0
- package/dist/utils/objectNamingRules.js +86 -17
- package/dist/utils/packageResolver.d.ts +22 -0
- package/dist/utils/packageResolver.js +65 -0
- package/dist/utils/phaseTimer.js +36 -0
- package/dist/utils/repeatedNotes.d.ts +29 -0
- package/dist/utils/repeatedNotes.js +38 -0
- package/dist/utils/smartXmlBuilder.js +1 -1
- package/dist/utils/symbolLookup.d.ts +18 -0
- package/dist/utils/symbolLookup.js +41 -0
- package/dist/utils/workspaceDetector.d.ts +5 -0
- package/dist/utils/workspaceDetector.js +1 -1
- package/dist/utils/writeSideEffects.d.ts +43 -0
- package/dist/utils/writeSideEffects.js +56 -0
- package/dist/utils/xmlScan.d.ts +50 -0
- package/dist/utils/xmlScan.js +88 -0
- package/dist/utils/xppLexer.d.ts +61 -0
- package/dist/utils/xppLexer.js +125 -0
- package/dist/utils/xppSelectLint.js +8 -36
- package/dist/validation/formControlElementOrder.d.ts +86 -0
- package/dist/validation/formControlElementOrder.generated.d.ts +13 -0
- package/dist/validation/formControlElementOrder.generated.js +1705 -0
- package/dist/validation/formControlElementOrder.js +227 -0
- package/dist/workspace/contextSnapshot.d.ts +17 -2
- package/dist/workspace/contextSnapshot.js +105 -24
- package/dist/workspace/workspaceScanner.d.ts +1 -1
- package/dist/workspace/workspaceScanner.js +1 -1
- package/package.json +8 -3
- package/scripts/extract-bp-catalog.ps1 +52 -13
- package/dist/server/toolSchemas/reviewWorkspaceChanges.d.ts +0 -20
- package/dist/server/toolSchemas/reviewWorkspaceChanges.js +0 -19
- package/dist/server/toolSchemas/triggerDbSync.d.ts +0 -43
- package/dist/server/toolSchemas/triggerDbSync.js +0 -30
- package/dist/server/toolSchemas/undoLastModification.d.ts +0 -20
- package/dist/server/toolSchemas/undoLastModification.js +0 -17
|
@@ -32,7 +32,7 @@ PowerShell / any terminal command **WILL HANG** in VS 2022 / VS 2026 MCP integra
|
|
|
32
32
|
| Plan a new object before creating it | `prepare(mode="create", goal, objectName, objectType)` — returns collision check, naming, EDT/label hints + `groundingToken` |
|
|
33
33
|
| Create a D365FO object | `d365fo_file(action="create")` (never `create_file`) |
|
|
34
34
|
| Edit an existing object | `d365fo_file(action="modify")` (applies immediately — confirm in chat first) |
|
|
35
|
-
| Revert the last write | `
|
|
35
|
+
| Revert the last write | `d365fo_file(action="undo", filePath)` — git-tracked → checkout HEAD (discards ALL uncommitted changes to that file); untracked → deleted |
|
|
36
36
|
| Search objects | `search` — multiple via `search(queries[])`, custom-only via `search(scope="extensions")` |
|
|
37
37
|
| Read any object's metadata | `get_object_info(objectType, name, options?)` — objectType ∈ class/table/form/query/view/enum/edt/report/data-entity/menu-item/service/map/config-key/security-policy/macro. 2+ known names: `get_object_info(objects=[{objectType,objectName},…])` — ONE call, never a loop |
|
|
38
38
|
| Method signature for CoC | `get_object_info(objectType="class", name, options={method, include:"signature"})` (already returned by `prepare(mode="change")`) |
|
|
@@ -41,7 +41,7 @@ PowerShell / any terminal command **WILL HANG** in VS 2022 / VS 2026 MCP integra
|
|
|
41
41
|
| Create a NEW form | `object_patterns(domain="form", action="analyze", recommend={...})` → `object_patterns(domain="form", action="spec", pattern)` → `generate_object(mode="scaffold", objectType="form", cloneFrom=referenceForm, tableMapping={...})` → `object_patterns(domain="form", action="validate", xml)` |
|
|
42
42
|
| Validate form XML against its pattern | `object_patterns(domain="form", action="validate", xml \| formName \| filePath)` — structural errors block form writes (FORM_PATTERN_ENFORCE) |
|
|
43
43
|
| Resolve label / EDT / class refs | `validate_code(mode="references", code)` |
|
|
44
|
-
| Build / BP / Sync | `build_d365fo_project
|
|
44
|
+
| Build / BP / Sync | `build_d365fo_project(bpCheck: true, dbSync: true)` — ONE call compiles, runs the best-practice check and syncs AxDB |
|
|
45
45
|
| Error diagnosis | `get_knowledge(kind="error", errorText)` |
|
|
46
46
|
| Parameters for a `d365fo_file` operation / `generate_object` mode | `get_knowledge(kind="op-spec", topic="add-index" \| "table" \| "scaffold:form")` — those two tools keep their parameters OUT of the tool schema; look the contract up once for the operation you picked, then nest the values in `params` (`properties` for `action="create"`) |
|
|
47
47
|
|
|
@@ -53,7 +53,7 @@ PowerShell / any terminal command **WILL HANG** in VS 2022 / VS 2026 MCP integra
|
|
|
53
53
|
|
|
54
54
|
### Writes & file editing
|
|
55
55
|
|
|
56
|
-
2. **`d365fo_file` (action=create/modify) applies immediately** (no dry-run / preview). Describe the change in chat and wait for explicit user confirmation ("apply", "ok", "yes") before calling. Revert with `
|
|
56
|
+
2. **`d365fo_file` (action=create/modify) applies immediately** (no dry-run / preview). Describe the change in chat and wait for explicit user confirmation ("apply", "ok", "yes") before calling. Revert with `d365fo_file(action="undo")` (or pass `createBackup=true` to keep a `.bak`).
|
|
57
57
|
3. **Never** use `replace_string_in_file`, `edit_file`, `apply_patch`, or any built-in file-write tool on `.xml` or `.xpp` files — **not even as a fallback** when `d365fo_file(action="modify")` fails. These bypass `IMetadataProvider` and corrupt VS 2022's in-memory model. If `d365fo_file(action="modify")` errors, STOP and report the error verbatim.
|
|
58
58
|
|
|
59
59
|
### Build automation
|
|
@@ -78,7 +78,7 @@ PowerShell / any terminal command **WILL HANG** in VS 2022 / VS 2026 MCP integra
|
|
|
78
78
|
### Reuse & diff safety
|
|
79
79
|
|
|
80
80
|
10. **Reuse before creating** — `prepare(mode="change")` lists existing CoC wrappers and event handlers. If an extension or handler class in the custom model already owns the target, add the new method there. Never create a parallel feature-named class (`<Target>_<Feature>_Extension`, `<Form>_<Feature>_EH`) unless the user explicitly asks for a separate class. The suffix comes from `EXTENSION_NAMING_STYLE` / existing artifacts — never from feature, ticket, or customer names; if it cannot be derived, ask.
|
|
81
|
-
11. **The post-write diff must be additive or narrowly targeted** — verify via `
|
|
81
|
+
11. **The post-write diff must be additive or narrowly targeted** — verify via `get_workspace_info(changes=true)` (or re-read with `get_object_info`) that no unrelated XML nodes (`<DataSources>`, `<Controls>`, methods, pattern metadata) disappeared. If they did, the edit failed: `d365fo_file(action="undo")`.
|
|
82
82
|
12. **An example form named by the user is a pattern contract** — keep its pattern family and required scaffolding (datasources, ActionPane/Tab/grid/QuickFilter); missing pattern elements are a failed generation even if the XML is well-formed.
|
|
83
83
|
|
|
84
84
|
### Spending tool calls
|
package/README.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**20 AI tools that know every X++ class, table, form, and EDT in your D365FO codebase**
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/d365fo-mcp)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
9
|
[](https://nodejs.org/)
|
|
10
10
|
[](https://www.typescriptlang.org/)
|
|
11
|
-
[](docs/TESTING.md)
|
|
12
12
|
<!-- coverage-badge:start -->
|
|
13
13
|
[](eval/COVERAGE.md) [](eval/COVERAGE.md)
|
|
14
14
|
<!-- coverage-badge:end -->
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
AI assistants excel at C#, Python, and JavaScript. X++ is different: your D365FO codebase is private, deeply customized, and invisible to every model — so AI confidently generates code that doesn't compile.
|
|
31
31
|
|
|
32
|
-
This server pre-indexes your entire D365FO installation (580 000+ symbols across standard, ISV, and custom models) and exposes it as
|
|
32
|
+
This server pre-indexes your entire D365FO installation (580 000+ symbols across standard, ISV, and custom models) and exposes it as 20 specialized MCP tools. Every signature, every CoC wrapper, every label, every form pattern — verified against your real metadata **before** the AI writes a single line.
|
|
33
33
|
|
|
34
34
|

|
|
35
35
|
|
|
@@ -115,7 +115,7 @@ Deployment guide: [docs/SETUP_AZURE.md](docs/SETUP_AZURE.md) — includes CI/CD
|
|
|
115
115
|
|
|
116
116
|
| Getting started | Reference | Operations |
|
|
117
117
|
|-----------------|-----------|------------|
|
|
118
|
-
| [Quick Start](docs/QUICK_START.md) — connect or install | [All
|
|
118
|
+
| [Quick Start](docs/QUICK_START.md) — connect or install | [All 20 tools](docs/MCP_TOOLS.md) | [Azure deployment](docs/SETUP_AZURE.md) |
|
|
119
119
|
| [Setup scenarios A–F](docs/SETUP.md) | [`.mcp.json` reference](docs/MCP_CONFIG.md) | [DevOps pipelines](docs/SETUP_AZURE.md#azure-devops-pipelines) |
|
|
120
120
|
| [Claude Code setup](docs/SETUP.md#claude-code-cli) | [Configuration](docs/CONFIGURATION.md) | [Testing](docs/TESTING.md) |
|
|
121
121
|
| [Usage examples](docs/USAGE_EXAMPLES.md) — real tool chains | [Architecture](docs/ARCHITECTURE.md) | [Custom / ISV models](docs/CUSTOM_EXTENSIONS.md) |
|
|
@@ -255,6 +255,18 @@ namespace D365MetadataBridge.Models
|
|
|
255
255
|
[JsonPropertyName("extends")]
|
|
256
256
|
public string? Extends { get; set; }
|
|
257
257
|
|
|
258
|
+
/// <summary>
|
|
259
|
+
/// Root of the Extends chain. Reported for orientation in a multi-level hierarchy; it is
|
|
260
|
+
/// not necessarily the element that declares the StringSize -- see StringSizeInheritedFrom
|
|
261
|
+
/// for that.
|
|
262
|
+
///
|
|
263
|
+
/// Null for a root EDT, and also null when the chain could not be walked to its end -- a
|
|
264
|
+
/// dangling Extends or a cycle -- because the last ancestor reached is not the root and
|
|
265
|
+
/// naming it as one would be a wrong answer rather than a missing one.
|
|
266
|
+
/// </summary>
|
|
267
|
+
[JsonPropertyName("rootEdt")]
|
|
268
|
+
public string? RootEdt { get; set; }
|
|
269
|
+
|
|
258
270
|
[JsonPropertyName("label")]
|
|
259
271
|
public string? Label { get; set; }
|
|
260
272
|
|
|
@@ -264,6 +276,14 @@ namespace D365MetadataBridge.Models
|
|
|
264
276
|
[JsonPropertyName("stringSize")]
|
|
265
277
|
public int? StringSize { get; set; }
|
|
266
278
|
|
|
279
|
+
/// <summary>
|
|
280
|
+
/// Ancestor the reported StringSize came from. Null when the number is what this EDT's
|
|
281
|
+
/// own XML declares. Set both when the EDT declares nothing (the common case) and when
|
|
282
|
+
/// an ancestor's value overrode one the EDT did declare.
|
|
283
|
+
/// </summary>
|
|
284
|
+
[JsonPropertyName("stringSizeInheritedFrom")]
|
|
285
|
+
public string? StringSizeInheritedFrom { get; set; }
|
|
286
|
+
|
|
267
287
|
[JsonPropertyName("referenceTable")]
|
|
268
288
|
public string? ReferenceTable { get; set; }
|
|
269
289
|
|