[29.x] Composite Report Parts: seed via a report extension instead of install/upgrade code - #11128
Conversation
52d6398
Good Sense Reviewer - Round 1Recommendation: Request ChangesWhat this PR doesThis PR adds shipped composite report header/footer designs and report themes, and seeds them during install, upgrade, and company open. The seeding code uses upsert, stores rows under the app ID, logs bad resource files, and includes tests for permissions, tags, and missing resources. The normal install and upgrade path looks coherent. The resource names match the package, the resource archives are valid Word packages, and the Problem-solution fitFit: Partial The change covers normal install and upgrade and tests most of the new behavior. It does not fully cover the company-open fallback because the shared database tag can be set before that fallback runs. SuggestionsS1 (🔴 High): Company-open fallback can skip missing parts Risk assessment and necessityRisk: The new code writes Necessity: The change is needed so composite report layouts have out-of-box parts. The scope is mostly right, but the fallback guard should match the bootstrap scenario before merge.
|
Good Sense Reviewer - Round 2Recommendation: Request ChangesWhat this PR doesThe latest commits make shipped part seeding report whether every part was seeded, and they record the database tag only after a full pass. They also keep resource-read failures non-fatal while leaving database writes outside the try function. That fixes the partial resource-failure path, but it does not fix the company-open fallback guard. The fallback still exits only because the registered database tag exists, so the bootstrap path can still skip the missing seed data. Status of previous suggestions
New observations (commits since round 1)None - the remaining blocker is the previous suggestion, which is still open. Risk assessment and necessityRisk: The new code writes Necessity: The change is needed so composite report layouts have the shipped parts. The scope is right, but the fallback guard must prove the data exists before it exits.
|
…tension The shipped header/footer designs and report themes no longer need to be written into Tenant Report Layout by install/upgrade code running with elevated permissions. Declaring them as layout() entries on a "Composite Layout" report extension for "Tenant Report Defaults" lets the platform register them natively, so the seeding codeunit, its upgrade pass, the per-database upgrade tag (W1/BE/IT/RU), and their test suite are removed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5e75c2b to
2b29609
Compare
…ention Every other report extension in BaseApp uses ReportExt.al (capital R and E). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Good Sense Reviewer - Round 3Recommendation: Request ChangesWhat this PR doesThe force-pushed diff registers 14 shipped header/footer and theme parts as rendering layouts on Tenant Report Defaults. It no longer uses install, upgrade, or company-open code to seed That removes the previous fallback problem, because the old seeding path is gone. However, the new registration object does not publish successfully: validation reports that report ID Status of previous suggestions
New observations (commits since round 2)S2 (🔴 High): Report extension blocks publishing Risk assessment and necessityRisk: The new object blocks app/test-app publishing, so the shipped report parts cannot be delivered in this state. The binary layout files are passive once registration is fixed. Necessity: The change is needed to provide shipped composite header/footer and theme parts without fragile install/upgrade seeding. The scope is right, but the registration approach must publish successfully.
|
Summary
CompositeLayout.reportExt.al, extending "Tenant Report Defaults") that lists all 14 parts aslayout()entries."Composite Report Parts Mgt.","Upgrade Composite Report Parts", the per-database upgrade tag (W1/BE/IT/RU), theBaseApp Installseeding trigger, and the composite-report-part tests added toCompositeLayoutTests— none of it is needed once the platform registers the layouts natively instead of the app writing them intoTenant Report Layoutitself..resources/ReportParts/toFoundation/Reporting/ReportParts/, alongside the report extension that references them viaLayoutFile.This is a [29.x] backport of the same rework applied on
mainin #11137.AB#649844
Test plan