Excel Integration & Electronic Reporting
Master Edit in Excel via OData, Excel templates, and the Electronic Reporting framework for generating regulatory documents like tax filings and e-invoices.
Two different tools, two different jobs
Excel integration is like a two-way window between F&O and a spreadsheet. Users open data in Excel, edit it, and push changes back β perfect for bulk updates like adjusting 500 item prices.
Electronic Reporting (ER) is like a document factory. You design a template, feed it data from F&O, and it stamps out documents β tax returns, payment files, e-invoices β in exactly the format the government or bank requires. No X++ coding needed.
Excel = interactive editing. ER = automated document generation.
Part 1: Excel integration
Edit in Excel
The βEdit in Excelβ button appears on most list pages in F&O. It opens the current entityβs data in Excel via an OData connection.
| Concept | Detail |
|---|---|
| OData entity | The data entity must have IsPublic = Yes to be available |
| Data connector | The Excel Add-in for Dynamics 365 manages the OData connection |
| Bidirectional | Users can read data AND push changes back (if they have write permissions) |
| Filtering | Filters applied in F&O carry over to the Excel view |
| Batch edit | Users can modify hundreds of rows and publish all changes at once |
ββββββββββββββββ OData ββββββββββββββββ Publish ββββββββββββββββ
β F&O Entity ββββββββββββββΆβ Excel ββββββββββββββββΆβ F&O Entity β
β (read) β GET β (edit cells) β POST/PATCH β (updated) β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
Scenario: Warehouse bulk update
PacificForgeβs warehouse team needs to update safety stock levels for 800 items:
- Navigate to Released products list
- Click Edit in Excel β opens the entity in Excel
- Filter to the relevant warehouse
- Update the safety stock column for all 800 rows
- Click Publish β all changes pushed back via OData
βWhat used to take a full day now takes 30 minutes,β Elena tells Gregor.
Excel templates
Excel templates are pre-formatted workbooks with embedded data bindings β a designed experience with headers, formatting, and specific field layouts.
| Feature | Edit in Excel | Excel Template |
|---|---|---|
| Setup | Zero β built-in button | Template must be created and uploaded |
| Layout | Generic tabular grid | Pre-formatted with headers, formulas, branding |
| Fields | All entity fields available | Only specified fields in the template |
| Use case | Ad-hoc bulk editing | Standardised data entry or export format |
| Reusable | Opens fresh each time | Template saved in Document Templates gallery |
Creating an Excel template
To create a custom Excel template:
- Navigate to Common β Document templates
- Click New β select the data entity
- Download the generated Excel file
- In Excel, arrange fields, add formatting, add formulas
- Upload the customised template back to F&O
- Users can now select this template from the Edit in Excel dropdown
Templates support multiple entities in one workbook β useful for header/line scenarios like sales orders.
OData entity requirements for Excel
| Requirement | Why |
|---|---|
IsPublic = Yes | Only public entities are exposed via OData |
| Data management enabled | Entity must be registered in the Data Management framework |
| Key fields defined | OData needs a unique key to identify records for updates |
| Appropriate security | User must have the privilege to read/write the entity |
| Change tracking enabled | Recommended for publish-back β tracks which records changed |
Part 2: Electronic Reporting (ER)
Why ER exists
Every country has its own format for tax returns, payment files, and regulatory reports. Before ER, developers wrote custom X++ for each format. ER replaces that with a configuration-driven approach β business users and consultants can modify formats without code.
ER architecture: three layers
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β ER Configuration β
β β
β ββββββββββββββββ ββββββββββββββββββββββββ β
β β Data Model β β Model Mapping β β
β β (abstract βββββΆβ (maps model to β β
β β structure) β β F&O tables/entities) β β
β ββββββββ¬ββββββββ ββββββββββββββββββββββββ β
β β β
β ββββββββΌββββββββ β
β β Format β β
β β (output β β
β β template) β β
β ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Purpose | Who manages it | Example |
|---|---|---|---|
| Data Model | Defines abstract data structure β what fields are available | Microsoft (standard) or developer (custom) | InvoiceModel: InvoiceNumber, Date, Lines[], TaxAmount |
| Model Mapping | Maps abstract fields to actual F&O tables and entities | Developer or consultant | InvoiceModel.InvoiceNumber β CustInvoiceJour.InvoiceId |
| Format | Defines output structure and layout (XML, Excel, text) | Consultant or business user | NZ GST Return XML with specific element names |
Why three separate layers?
The three-layer separation is the key design principle of ER:
- One data model can serve multiple formats β same invoice model generates NZ XML, AU XML, and US text
- Format changes donβt require code β tax authority changes XML schema? Update format only
- Model mappings can be swapped β same format, different data source
- Versioning β each layer versioned independently
This is heavily tested on the exam.
ER Global Repository
Microsoft provides hundreds of pre-built ER configurations via the Global Repository.
| Concept | Detail |
|---|---|
| Global Repository | Cloud-hosted library of ER configurations by Microsoft |
| Import | Download configurations to your F&O environment |
| Derive | Create a custom version based on a Microsoft config (preserves upgradeability) |
| Versioning | Each configuration has versions β import specific ones |
| Provider | Each config has a provider (Microsoft or your custom provider) |
Scenario: Elena implements NZ e-invoicing
New Zealand is rolling out mandatory e-invoicing. Elenaβs approach:
- Opens Electronic Reporting workspace β Repository β Global
- Searches for βNew Zealandβ β finds the NZ e-invoice format
- Imports the format and its dependent data model + mapping
- Derives a custom version (so PacificForge can add custom fields)
- Opens the Format Designer β adds PacificForgeβs βProduction Batchβ field
- Configures the format to run from Accounts Receivable invoicing
βWhen Microsoft updates the base format, our derived version inherits changes automatically,β Elena explains to Kenji.
Format Designer
The visual tool for building ER output templates:
| Element type | Purpose | Example |
|---|---|---|
| File | Root element β defines the output file | NZGSTReturn.xml |
| XML element | Structural grouping | <TaxReturn>, <Header>, <Lines> |
| Attribute | XML attributes or cell references | version="2.0" |
| Content | Data values from the model | InvoiceNumber, TaxAmount |
| Sequence | Ordered list of repeating elements | Invoice lines, payment transactions |
| Condition | Conditional inclusion | Only include <Discount> if discount > 0 |
Data Model Designer
Defines the abstract data structure:
| Concept | Detail |
|---|---|
| Root | Entry point β a model can have multiple roots |
| Record | A data element (like a table row) |
| Record list | A repeating collection (like invoice lines) |
| Fields | Individual data points (string, integer, date, real, enum, boolean) |
| Calculated fields | Formulas using ER expression language |
| References | Links between records |
ER expression language
| Function | Purpose | Example |
|---|---|---|
FORMAT | String formatting | FORMAT("INV-%1", model.InvoiceNumber) |
NUMBERFORMAT | Number to text | NUMBERFORMAT(model.Amount, "N2") |
DATEFORMAT | Date to text | DATEFORMAT(model.InvoiceDate, "yyyy-MM-dd") |
IF | Conditional logic | IF(model.TaxAmount > 0, "Taxable", "Exempt") |
SUMIF | Conditional sum | SUMIF(model.Lines, Lines.Category = "Tax", Lines.Amount) |
FILTER | Filter a record list | FILTER(model.Lines, Lines.Amount > 100) |
Exam tip: ER expressions vs X++ code
The exam tests when ER expressions are sufficient vs when X++ is needed:
- ER expression β string formatting, date conversion, simple math, filtering, conditional output
- X++ code needed β complex business logic, external API calls, database operations not exposed in the data model
ER is designed so most regulatory reporting needs are met without code.
ER vs SSRS: when to use which
| Scenario | SSRS | Electronic Reporting |
|---|---|---|
| Customer invoice (printed PDF) | β Best fit β pixel-perfect layout | Possible but overkill |
| Tax return in government XML | β Not designed for structured data files | β Purpose-built for this |
| Bank payment file (ISO 20022) | β Wrong tool | β Standard config in Global Repo |
| Warehouse picking list | β Operational doc with layout control | β Over-engineered |
| E-invoice (Peppol/UBL format) | β Can't generate structured XML | β Standard configs available |
| Internal management report | β Tabular/summary report | β Not designed for ad-hoc reporting |
PacificForge needs to generate a bank payment file in ISO 20022 XML format. Which tool should Elena use?
Elena needs to customise a Microsoft-provided ER format to add a PacificForge-specific field. How should she proceed?
A user clicks 'Edit in Excel' on Released Products but gets an error. What should Elena check first?
Which ER layer would Elena modify to change XML element names in a tax return output without changing the underlying data?
Next up: Security Roles, Duties & XDS β building the security architecture for F&O with role-based access and row-level filtering.