Creating and selecting custom report layouts in Business Central
how to create custom report layout in Business Central
Also searched as
- Business Central Word layout vs RDLC layout
- how to change report layout Business Central
- Business Central custom report layout upload
Short answer
Business Central reports can render through a Word layout (simple, single-level documents like invoices) or an RDLC layout (complex, multi-level, grouped reports). Custom layouts are uploaded and assigned per report through the Report Layout Selection page, or shipped inside an AL extension with the rendering(...) property.
Applies to: Dynamics 365 Business Central (SaaS and on-premises), current and recent versions.
Create and apply a custom report layout
- 1Open the report you want to customize (e.g. Sales Invoice) and use Report Layouts or the report's Layouts action to export the built-in layout as a starting point (Word .docx or RDLC .rdl file).
- 2For a Word layout, edit the exported .docx in Microsoft Word using its built-in XML mapping controls to reposition fields, add branding, or adjust text; Word layouts are limited to the data structure already exposed by the report's dataset.
- 3For an RDLC layout, edit the .rdl file in a report designer tool (Visual Studio Report Designer or a compatible RDL editor) - RDLC supports grouping, subtotals, and multi-level datasets that Word layouts cannot express.
- 4Go to the Report Layout Selection page, find the report, and add a Custom layout entry, uploading your edited file and giving it a description.
- 5Set the new layout as the default for the relevant company/report combination, or leave multiple layouts available and let users pick one when running the report (e.g. per customer or per document type).
- 6For layouts shipped as part of an AL extension, use the rendering(LayoutName; LayoutType) property on the report object to bundle the layout file with the extension instead of relying on manual upload per environment.
- 7Test the layout by actually posting/printing a real document (not just Preview) since some data (e.g. dynamically calculated totals) only fully renders in the final run.
Choosing Word versus RDLC
Word layouts are the right default for simple, largely static documents - invoices, statements, quotes - where the business mainly wants to change branding, wording, or field placement without touching grouping logic. Business users comfortable in Word can often maintain these directly.
RDLC layouts are needed once the report requires nested grouping, running totals per group, conditional visibility of entire sections, or complex multi-table datasets - capabilities Word's simpler XML-mapping approach cannot express. Most standard multi-level financial and operational reports in Business Central ship as RDLC for this reason.
Report Layout Selection versus AL rendering property
The Report Layout Selection page is the operational, per-environment way to swap layouts without a code deployment - good for tenant-specific branding or minor field changes that a partner or power user manages directly in the running system.
The rendering(...) property inside an AL report object is the development-time way to ship a layout as part of an extension, so it deploys consistently across environments (dev, test, production) and travels with version control rather than being a manual per-tenant upload.
Common causes of a layout not rendering as expected
A field placed in a Word layout that does not exist in the report's underlying dataset will simply not populate - Word layouts cannot invent new data fields, only rearrange what the report dataset already provides; adding a genuinely new field requires an AL report extension to add it to the dataset first.
RDLC layouts that were edited against a different report version (a newer build added/removed dataset columns) can throw rendering errors or silently drop data - always re-export a fresh base layout from the current report version before customizing after an upgrade.
Try it here, free
Business Central AL Extension Skeleton Generator
Fill in publisher, prefix and ID range to get app.json, a table extension, a page extension, an event subscriber codeunit and a permission set.
Common pitfalls
- !Trying to add grouping or running totals to a Word layout - it is not supported; move to RDLC for that requirement instead.
- !Editing an old exported layout file after the underlying report's dataset changed in an update, causing missing fields or rendering errors.
- !Uploading a custom layout only through Report Layout Selection and not also packaging it in the extension, so it is lost or has to be manually re-uploaded on every new environment.
- !Assuming Preview shows exactly what will print - some totals and page-break behavior only appear correctly in the final rendered output.
- !Forgetting to set the new layout as default (or company-specific default), so users keep getting the original built-in layout despite the upload succeeding.
How an ERP-grounded AI assistant handles this
SyteRay-style development assistance (applied to Business Central AL projects) can scaffold a report extension's rendering(...) property and dataset additions from a plain description of the new field a business user wants on an invoice, cutting the usual back-and-forth between a functional request and the AL change needed to expose that data to the layout.
Frequently asked questions
Can I add a completely new field to a Word layout without any development?
No - Word layouts can only use fields already present in the report's dataset. A genuinely new field (one not already on the report) requires an AL report extension to add it to the dataset before it can appear in any layout.
Do custom layouts survive a Business Central update?
Layouts uploaded via Report Layout Selection generally persist through updates, but if the underlying report's dataset changes in a new version, an old layout can start showing errors or missing data and needs re-basing against the current report.
Can different customers see different invoice layouts automatically?
Yes - Report Layout Selection supports assigning different custom layouts by report and by usage context, and some reports support layout selection logic tied to customer or document attributes via extension code.
What tool do I need to edit an RDLC file?
Microsoft Visual Studio with the Report Designer component (or a compatible third-party RDL editor) is the standard tool; there is no built-in RDLC editor inside Business Central itself.
Related
Calling and extending the Business Central API v2.0
The Business Central API v2.0 is a REST/OData endpoint at api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/v2.0, authenticated with Azure AD OAuth 2.0. It exposes standard entities like customers and items, and lets you publish your own with an AL API page.
Error fixFixing "You do not have the following permissions on TableData (table): (permission)" in Business Central AL
This runtime error means the current user's assigned permission sets do not grant the required Insert, Modify, Delete, Read, or Execute right on that specific table. It is most common right after installing or updating a custom AL extension, because Business Central checks object-level permissions even for tables an extension owns.
Error fixFixing "Cannot create a record in (table). The record already exists" in D365 F&SCM data entity imports
This is the standard kernel duplicate-key exception, thrown when the Data Management Framework tries to insert a staging row into a target table whose unique or alternate key already matches an existing record. It almost always means the entity's insert-vs-update logic did not recognize the target row as an update, not that you have a true accidental duplicate in your source file.
Error fixFixing "There are currently no batch servers available for processing" in D365 F&SCM
This message means the batch framework cannot find any AOS instance flagged as a batch server and available for the batch group the job is assigned to. The fix is almost always in server configuration (System administration > Servers) or batch group assignment, not in the batch job itself.
Error fixFixing "The CIL object was not found" in Dynamics AX 2012
This error appears when the AOS tries to execute compiled CIL for a class or method that has not actually been regenerated since a code change was imported or edited, so the .NET runtime has nothing matching to run. The fix is a full compile followed by a full CIL generation and an AOS restart, not just a partial or incremental rebuild.
How-toHandling OData 429 Too Many Requests throttling in D365 Finance and Operations
D365 F&SCM protects shared AOS capacity by throttling OData and custom service calls, returning HTTP 429 with a Retry-After header once a client sends too many requests too quickly. The durable fix is to honor Retry-After with backoff and redesign high-volume or frequent-polling integrations to use batching, business events, or Data management instead of tight request loops.
AI for ERPAI for Dynamics 365 Business Central, on-premises or SaaS, beyond Copilot
AI for Business Central beyond Copilot: grounded question answering over BC's data via OData and APIs, for on-premises and SaaS tenants alike.
Stuck on Microsoft Dynamics 365 Business Central?
Talk to engineers who work inside Microsoft Dynamics 365 Business Central every week, and who build private AI that answers these questions from your own ERP data.
New to Microsoft Dynamics NAV and Business Central on-prem? Start with the Microsoft Dynamics NAV and Business Central on-prem guide and toolkit.
Keep exploring
Free tools
- Business Central AL Extension Skeleton GeneratorFill in publisher, prefix and ID range to get app.json, a table extension, a page extension, an event subscriber codeunit and a permission set.
- Business Central Routing and Production BOM Cost WorksheetPlan routing operations with setup time, run time, lot size and work center rate, and see operation cost per unit before you set up routings in BC.
- Business Central AL Event Subscriber GeneratorBuilds an AL subscriber codeunit for any published event, with the correct attribute syntax and a procedure stub to fill in.
ERP fixes and how-tos
- Adding a Private AI Layer to Business Central On-PremisesAdd AI to Business Central on-prem without cloud: API v2.0, custom API pages, SQL replica, retrieval, local LLM, BC permission sets, approved write-back.
- Calling and extending the Business Central API v2.0Business Central API v2.0 explained: the endpoint URL, Azure AD app registration and OAuth 2.0 token, calling standard entities, and custom API pages in AL.
- Business Central Error Messages: What They Mean and How Errors Are HandledCommon Business Central error messages explained: Error, TestField and ErrorInfo in AL, collecting posting errors, and what to do when BC is down.
AI on your ERP
- AI for Business Central manufacturing operations, beyond CopilotAI for Business Central manufacturing beyond Copilot: grounded answers on production orders, routings, and capacity via APIs v2.0, on-prem capable.
- AI for Dynamics 365 Business Central in Discrete ManufacturingGrounded AI for Dynamics 365 Business Central discrete manufacturers: production orders, planning worksheets, routings and costing, on a private LLM.
Integrations
- How to add AI agents to Dynamics 365 Business CentralHow to add AI agents to Dynamics 365 Business Central: API v2.0 and custom API pages as the tool layer, approval gates, SaaS vs on-prem, and build options.
- How to use ChatGPT with Dynamics 365 Business CentralUse ChatGPT with Business Central: custom GPT actions over the API, exports vs live access, enterprise data controls, and when a private model fits better.
Software
- Microsoft Dynamics 365 Business CentralDynamics 365 Business Central explained for manufacturers: modules, APIs, AL extensions, deployment, strengths, limits and alternatives for small and mid-size firms.
- Microsoft Dynamics 365 Finance and Supply ChainDynamics 365 Finance and Supply Chain Management explained for manufacturers: modules, data entities, OData, deployment, strengths, limits and alternatives.