Obsolete E-Document Purchase Order Matching Copilot#9572
Conversation
|
Could not find linked issues in the pull request description. Please make sure the pull request description contains a line that contains 'Fixes #' followed by the issue number being fixed. Use that pattern for every issue you want to link. |
Copilot PR ReviewIteration 4 · Outcome: completed Knowledge source: https://github.com/microsoft/BCQuality@186d8a131465475c79244d994acb872cd5c0d4bf Findings by domainFindings split into Knowledge-backed (cite a BCQuality article) and Agent (the agent's own judgement, no matching BCQuality rule).
Totals: 0 knowledge-backed · 1 agent findings. Orchestrator pre-filter (2 file(s) excluded)
Findings produced by the AL review agent v1.7.3. Reply 👎 on any inline comment to flag false positives. |
996705f to
5442028
Compare
With CLEAN29 defined, action
|
| InherentPermissions = X; | ||
| InherentEntitlements = X; | ||
| ObsoleteState = Pending; | ||
| ObsoleteReason = 'The E-Document Purchase Order Matching Copilot has been deprecated.'; |
There was a problem hiding this comment.
The new obsoletion metadata added across the deprecated Copilot Purchase-Order-matching objects (E-Doc.
PO AOAI Function, E-Doc. PO Copilot Matching, E-Doc. PO Copilot Prop, E-Doc. PO Match Prop. Buffer, E-Doc. PO Match Prop. Sub) all share the same ObsoleteReason: 'The E-Document Purchase Order Matching Copilot has been deprecated.' The cited guidance expects the reason to name the replacement (or explicitly state there is none) so consumers get an actionable migration path; the current text only restates that deprecation happened. Consider making the reason explicit about there being no replacement, or naming the manual/automatic matching flow as the alternative.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why
5442028 to
dfabbb8
Compare
In
|
Mark the E-Document Purchase Order Matching Copilot objects as ObsoleteState = Pending (tag 29.0) and guard the objects and all their references with #if not CLEAN29 so they compile out of Clean builds. The shared "E-Document Matching Assistance" Copilot capability is left registered because it is still used by the active AI tool import flow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
dfabbb8 to
6d4475c
Compare
This PR marks the E-Document Purchase Order Copilot matching feature Obsolete (ObsoleteState = Pending, tag 29.0) and guards its implementation behind #if not CLEAN29 in EDocOrderLineMatching.Page.al (action MatchCopilot / actionref MatchCopilot_Promoted), EDocPOAOAIFunction.Codeunit.al, EDocPOCopilotMatching.Codeunit.al, EDocPOCopilotProp.Page.al, EDocPOMatchPropBuffer.Table.al, and EDocPOMatchPropSub.Page.al.However, three other live UI entry points that invoke the exact same Copilot matching flow were left completely untouched: action "MatchToOrderCopilotEnabled" in src/Apps/W1/EDocument/App/src/Document/EDocument.Page.al (line 489, calling EDocOrderMatch.RunMatching(Rec, true) at line 500), and the identically named action in src/Apps/W1/EDocument/App/src/Extensions/EDocPurchaseOrder.PageExt.al (line 69, calling RunMatching(EDocument, true) at line 83) and src/Apps/W1/EDocument/App/src/Extensions/EDocPurchaseOrderList.PageExt.al (line 54, calling RunMatching(EDocument, true) at line 68). All three pass WithCopilot = true into EDocLineMatching.Codeunit.al's RunMatching, which calls the now-Pending-obsolete EDocOrderLineMatching.Page.SetAutoRunCopilot, driving the same deprecated AI-matching path. None of these three actions carry ObsoleteState/ObsoleteReason/ObsoleteTag or a #if not CLEAN29 guard, so users continue to be offered the deprecated Copilot matching experience from these entry points with no deprecation warning, while the functionally identical action on the order-line-matching page is marked obsolete. Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Summary
Obsoletes the E-Document Purchase Order Matching Copilot feature following the Business Central Obsolete lifecycle.
The five Copilot-specific objects in
App/src/Processing/OrderMatching/Copilot/are markedObsoleteState = PendingwithObsoleteReasonandObsoleteTag = '29.0':E-Doc. PO Copilot Matching(codeunit)E-Doc. PO AOAI Function(codeunit)E-Doc. PO Copilot Prop(page)E-Doc. PO Match Prop. Sub(page)E-Doc. PO Match Prop. Buffer(table)This is the deprecation warning window: the objects remain functional and are stripped (
#if not CLEAN29/ObsoleteState = Removed) in a later release. Existing internal callers keep compiling —AL0432(reference-to-pending) is a Warning in the app ruleset, which is the intended deprecation signal.Do we need to remove the Copilot capability on upgrade?
No. The
"E-Document Matching Assistance"Copilot capability is shared: besides the obsoleted Copilot matching, it is still registered and required by the activeE-Doc. AI Tool Processorimport flow (EDocAIToolProcessor.Setup()callsRegisterCapabilityIfNeeded()and checksIsCapabilityRegistered/IsCapabilityActive). Unregistering it on upgrade would break that live feature, so no upgrade/removal code is added.Notes
TableType = Temporary, so there is no persisted-data migration concern.EDocAIToolProcessorare intentionally left unchanged.