Have you ever created a (process only) report to do data manipulation? Well, of course, you have? We all have 🙂 I decided to create a generic “report” that can handle all these different tasks. And if it’s worth doing, it’s worth overdoing, so here’s where I’m at right with the “extreme edition” of this. Check it out in this video:

In this video, Erik introduces his “One Field Report – Extreme Edition” for Business Central, a wizard-based app that handles a common scenario every NAV/Business Central developer has faced: a customer calls up needing to make bulk data changes across hundreds or thousands of records. Instead of building one-off reports each time, Erik has created a generic, interactive tool powered by a built-in expression compiler that can handle virtually any field update scenario.
The Problem: One-Off Data Manipulation Reports
If you’ve worked with NAV or Business Central customers for any length of time, you’ve almost certainly experienced this situation: a customer calls and says they need to update a specific field on 5,000 items, or reformat postal codes on all customers, or adjust cost prices on resources. They don’t want to do it manually, and Excel is too slow or too cumbersome.
Over the years, Erik has created countless versions of these single-use reports — crude versions, clever versions, and supposedly generic versions. After the second or third call asking for yet another report, the idea of building a truly generic app took shape. And as Erik puts it: “If it’s worth doing, it’s probably worth overdoing.”
The Wizard Walkthrough
Despite still being called the “One Field Report” (a name Erik has used in his mind for many years), this is no longer a report — it’s a full interactive wizard. Let’s walk through each step.
Step 1: Select the Table and Field
Every good wizard starts with some explanation. Once you hit Start, the first thing you need to do is specify which table and field you’re working with. In the demo, Erik selects table 18 (Customer) and field number 20 (Credit Limit). You can use lookups or, if you know your field numbers, type them directly. The wizard won’t let you proceed until the required selections are made.
Step 2: Define the Filter
Next, you define which records you want to affect. This is where you set filters — for example, filtering the Name column to all customers starting with “A”. This is a critical step because it mirrors the real-world scenario where a customer has already done some analysis in Excel and knows exactly which records need changing.
Step 3: Verify the Data
After applying your filter, the wizard shows you how many records match and displays their current values. This verification step is interactive — if the results don’t look right, you can go back, adjust the filter, and try again. If your customer tells you it should be 742 records, you can confirm that number before proceeding.
This back-and-forth capability is essential for ensuring you’re operating on exactly the right set of data before making any changes.
Step 4: Define the New Value (Expression Engine)
This is where the “Extreme Edition” really shines. Instead of just typing in a static value, you get access to a full expression engine — the same compiler Erik uses in his Toolbox app and other compiler-based projects.
The expression engine supports:
- Simple values: Just type
40000to set the credit limit to 40,000 - Arithmetic:
40000 + 123evaluates to 40,123 - Record references: Use
Rec.Credit Limit LCYto reference the current record’s field values - Percentage calculations: Something like
Rec.Credit Limit LCY * 1.05to add 5% - Built-in functions: Use
Random(20)to introduce randomization, orFormat(Today)for date formatting - String manipulation: For text fields, expressions like
Rec.Name 2 + ' ' + Format(Today)work as expected
The expression engine includes a Verify button that lets you test your expression before applying it. If you write invalid syntax, the compiler will return an error — no guessing required.
Step 5: Review and Execute
Before execution, you get one final review showing the selected records with their current values and calculated new values. You can also specify whether you want field and record validation to run during the update. When you’re satisfied, hit Execute and the changes are applied.
One important note: when using non-deterministic expressions like Random(), the preview values may differ from the actual values applied during execution, since the random function produces different results each time it’s evaluated.
History and Undo
One of the most valuable features is the complete history of every run. Each execution is logged with:
- The date and time of the run
- Which records were affected
- The old values and new values for each record
- The expression that was used
Even better, you can undo a previous run. If a change turns out to be incorrect, simply find the run in the history and select Undo. The app will restore all affected records to their previous values. Erik demonstrated this by undoing a credit limit change and verifying that the original values were restored.
The Power of Expressions
The expression engine is what elevates this from a simple bulk-update tool to something genuinely powerful. As long as the desired new value for a field can be expressed as an AL-style expression, the app can handle it. Erik estimates this covers about 99% of the cases he typically encounters in support scenarios.
For the remaining edge cases, he mentions the possibility of adding events to hook into the process, but for his current needs, the expression engine is more than sufficient.
Conclusion
The One Field Report – Extreme Edition transforms a common, repetitive development task into a reusable, interactive wizard. By combining table/field selection, interactive filtering with record count verification, a powerful expression compiler, and a full history with undo capability, Erik has built a tool that can replace the vast majority of one-off data manipulation reports. Erik notes that a follow-up video is in the works covering the technical implementation of the wizard itself, which he says is “very different from a normal Business Central wizard.” Stay tuned for that deep dive into the architecture behind this app.