Protecting Sensitive Data Made Easier: Introducing ‘Concealed’ Text Field Type in Business Central Wave 2 2025

Data privacy and security have become paramount concerns for businesses across all industries. With increasing regulatory requirements and growing awareness of data protection, organizations need robust yet user-friendly solutions to safeguard sensitive information. Microsoft’s Dynamics 365 Business Central Wave 2 2025 introduces a game-changing feature that addresses this challenge: the new ‘Concealed’ text field type with the innovative Mask Type property.

The Challenge: Balancing Security and Usability

Traditionally, we faced a dilemma when handling sensitive data fields. The existing ExtendedDataType = Masked property offered security by displaying field values as dots, but this approach had limitations:

  • Always hidden: Once masked, the data remained permanently concealed, even from authorized users
  • Poor user experience: Users couldn’t verify entered data, leading to potential input errors
  • Limited flexibility: No option to reveal data when legitimate access was needed

These limitations created friction between security requirements and practical usability, forcing developers to choose between protecting sensitive data and maintaining a smooth user experience.

Business Central Wave 2 2025 introduces the new MaskType enum property, revolutionizing how we handle sensitive data display. This property offers two distinct values:

MaskType Values Explained

None (Default)

  • Standard behavior where field values are fully visible in the UI
  • No masking or concealment applied
  • Suitable for non-sensitive data fields

Concealed

  • Field values are hidden by default, appearing as masked dots
  • Users can reveal the actual value through an explicit action
  • An interactive “eye” button appears next to the field for toggling visibility
  • Perfect balance between security and accessibility

Implementing the concealed field type is straightforward. Here’s how to configure it in your AL code:

field(50100; "Sensitive Data"; Text[100])
{
    Caption = 'Sensitive Information';
    MaskType = Concealed;
}

When rendered in the UI, this field will display:

  • Masked dots by default (●●●●●●●●)
  • An eye icon button for revealing/concealing the value
  • Smooth toggle animation between hidden and visible states

Supported Field Types

The MaskType = Concealed property works with:

  • Text fields: For sensitive textual information
  • Code fields: For confidential codes and identifiers
  • Decimal fields: For sensitive numeric values with decimals
  • Integer fields: For confidential whole numbers

Supported Page Types

The concealed functionality is available on:

  • Document pages: Sales orders, purchase orders, etc.
  • Card pages: Customer cards, vendor cards, item cards
  • Not supported: List page repeaters and grid controls

The introduction of the ‘Concealed’ text field type with the MaskType property in Business Central Wave 2 2025 represents a significant advancement in data protection capabilities. This feature successfully bridges the gap between security requirements and user experience, providing organizations with a flexible, user-friendly approach to protecting sensitive information.

Stay tuned for more.

Vibe Coding in AL Development for Business Central

As AL developers working with Microsoft Dynamics 365 Business Central, we often find ourselves caught between strict business requirements and the desire to write code that feels good, but with the latest Vibe Coding experience, we can see how developers interact with the platform. Instead of writing everything manually, Vibe Coding leverages AI-driven assistance, contextual suggestions, and natural language inputs to speed up solution building.

Vibe Coding isn’t just about writing code—it’s about creating a harmonious development experience that reduces cognitive load, enhances creativity, and produces more maintainable, scalable AL solutions. It combines best practices from agile development, clean code principles, and user experience design to create a holistic approach to Business Central customization.

What is Vibe Coding?

Vibe Coding is Microsoft’s new AI-assisted development experience embedded in Business Central AL development. Think of it as a “copilot for AL” — it understands your context, suggests code snippets, and helps you scaffold solutions quickly.

With Vibe Coding, you can:

  • Generate AL objects (tables, pages, code units) using natural language prompts.
  • Get inline suggestions for methods, triggers, and patterns.
  • Reduce boilerplate coding and focus on solution logic.
  • Learn AL development faster if you’re new to the ecosystem.

Getting Started

To enable Vibe Coding in AL development:

  1. Update your AL extension in Visual Studio Code to the latest version (available in VS Code Marketplace).
  2. Ensure your Business Central environment is updated to fully support Vibe Coding.
  3. Ensure Copilot features are enabled.
  4. Open your AL project and start coding — the AI suggestions will appear as ghost text or through the command palette.
Article content

Example: Creating a Table with Vibe Coding

Traditionally, you create a table object like this:

table 50100 "Customer Ledger Extension"
{
   
    fields
    {
        field(1; "Customer No."; Code[20])
        {
            DataClassification = CustomerContent;
        }

        field(2; "Ledger Balance"; Decimal)
        {
            DataClassification = CustomerContent;
        }
    }
}

With Vibe Coding, you could simply type in natural language:

“Create a table for Customer Ledger with Customer No. and Ledger Balance fields.”

And Vibe Coding will generate the AL code for you, ready to refine.

Example: Extending a Page

Say you want to extend the Customer Card page to show the new field. Instead of looking up the object ID and syntax, you could type:

“Extend Customer Card to add Ledger Balance field from Customer Ledger Extension table.”

The tool generates the boilerplate page extension code, leaving you to adjust anything you requires.

The Future of AL Development

Vibe Coding works brilliantly for proof-of-concepts and small team innovations. The sweet spot? 👉 Start with Vibe for rapid progress, then formalize as the codebase matures.

For AppSource apps and enterprise BC implementations, structured development still wins. But for exploring new features or quick client customizations? Vibe Coding can be your secret weapon.

It’s not here to replace developers — it’s here to supercharge productivity and free us to focus on innovation. 🚀

Stay tuned for more as it is still in learning phase.

Solving Barcode Printing Issues in RDLC Reports – Business Central On-Premise (v25)

When working with barcode printing in RDLC reports on Microsoft Dynamics 365 Business Central On-Premise, I recently ran into an issue that had me stumped for hours — and as it turns out, it all came down to a subtle but critical font installation step.

If you’re using Business Central and your barcodes refuse to show up in your reports (even after installing the right fonts), read on — this might just be your solution.

🚫 The Problem: Barcode Fonts Not Showing in RDLC

Here’s what I tried — the standard advice you’ll find across most forums:

  • ✅ Installed the barcode font (Code 128, Code 39, Free 3 of 9, etc.) on the service tier machine
  • ✅ Installed the same font on the user/client machine
  • ✅ Restarted the Business Central Server/NST
  • ✅ Restarted the entire machine
  • ✅ Checked that RDLC reports were using the correct font name

Still — no barcodes were rendered.

🕵️ The Hidden Detail: “Install for All Users”

After much trial and error, I stumbled across the real fix:

When installing a font on the Business Central service tier (server), you must choose “Install for all users” — not just a regular install.

Here’s why:

  • Business Central’s NST runs under a system account, not your logged-in user.
  • Fonts installed only for the current user aren’t visible to the NST process.
  • Unless the font is registered system-wide, RDLC won’t be able to use it.

Install the Barcode Font on the Server

  • Right-click the font file (e.g., Code128.ttf)
  • Choose ➡️ Install for all users

Install the Font on Client Machine (Optional but recommended)

  • This ensures previews and printed reports render properly when opened locally.

Restart the Server

  • Not just the NST service — a full restart helps Windows fully register system fonts.

It’s always the little things! A simple checkbox — “Install for all users” — was all it took to fix what seemed like a mysterious RDLC issue.

If you’re working with barcode fonts in RDLC reports on Business Central and nothing seems to work, double-check your font installation method — this could save you hours of frustration.

Hope this will help!!!

File.ViewFromStream in AL: Display Text Directly from Stream

Microsoft Dynamics 365 Business Central 2025 Wave 1 continues to improve its developer experience with handy new features. One of the exciting additions in this release is the File.ViewFromStream method — a simple yet powerful function that enhances how developers interact with files stored in memory.

In the current versions of Business Central, when you need to view an attached document, a report output, or an incoming file, the typical process involves downloading the file first and then opening it with an external application. This can be time-consuming, especially when dealing with multiple files or when you simply need a quick glance at the content. Switching between applications disrupts your workflow and can feel inefficient.

📘 What is File.ViewFromStream?

The new method File.ViewFromStream(Stream: InStream,Text[,Boolean]) enables developers to open or preview a file directly from a stream, without having to save it to a temporary physical file.

This is a major convenience when working with files generated on the fly — such as PDFs, Excel files, or text reports — especially in scenarios where users just need to view or download the file rather than save it on the server.

Syntax

[Ok := ]  File.ViewFromStream(InStream: InStream, FileName: Text [, AllowDownloadAndPrint: Boolean])

🛠 Example:

procedure ShowGeneratedReport()
var
    TempBlob: Codeunit "Temp Blob";
    OutStream: OutStream;
    InStream: InStream;
    ReportContent: Text;
begin
    ReportContent := 'Hello from AL!' + Format(CurrentDateTime) + '\nThis is a preview of your text report.';

    TempBlob.CreateOutStream(OutStream);
    OutStream.WriteText(ReportContent);

    TempBlob.CreateInStream(InStream);
    File.ViewFromStream(InStream, 'ReportPreview.txt', true);
end;

💼 Use Cases

Here are some scenarios where ViewFromStream can be a game-changer:

  • Previewing customer invoices or sales reports generated on-demand.
  • Opening files attached in workflow approvals.
  • On-the-fly document generation in extensions or apps.

The File.ViewFromStream method offers a powerful and user-friendly way to present stream content directly within Dynamics 365 Business Central. The File.ViewFromStream method is a lightweight, client-friendly way to present text content on the fly in Business Central.

Stay tuned for more.

How to change primary key in Business Central Table

Recently one of my customer asked me to add few more fields on primary key and I was looking at the customer like he asked something which is daunting task to be done with business central as everybody aware of that we can not change the primary key fields when table is already having data as while deploying the app it throws an error as below

Even I tried using Force sync also but it is still failing to deploy the app as this is breaking change for the app.

Now question is how to do this and overcome from such situation as your customer is behind you to do that.

To make it work we need to use ObsoleteState and ObsoleteReason that means we need to make your table obsolete and create a new table with new primary key and change the references in all those object where the object is referred.

To make the table obsolete mention the property as below.

Obsolete property value

ValueDescription
NoNot obsolete. This is the normal/default setting.
PendingWill become obsolete in a future version.
RemovedHas been made obsolete.

After making above table obsolete created new table with the new primary key.

Next point is how to transfer data in the new table .

To transfer data from obsolete table to new table used Installed code unit . Additionally you can use temporary table to update data from old table to new table.

If you would like to learn more about ObsoleteState Property then visit here.

Hope this will help you.

Stay tuned for more updates.

What is planned for Business Central Wave 2 2022 release

As we are gearing up for new release of business central and already the buzz is started for new version . Here I will list few upcoming features which I am looking forward in new version.

In-Client Performance Profiler

Demo tool and demo data for manufacturing scenarios

Users can export report datasets to XML

Introduce copy link option in the Share menu

Guided tour that helps users find settings and personalization tools

Support for rich text in teaching tips and tours

New capabilities for financial reporting with account schedules

Use Excel to design layouts for reports

Permission set handling enhancements

For more details please visit on my twitter or here

Business Central and Fonts on Reports

Today morning there was issue raised by my consultant stating that text on business central reports showing weird characters as below.

Though these reports was working well on On-Premise but after uploading to cloud it started showing those weird characters.

After checking report layout found that using the same fonts which is available on cloud version of business central but it still fails.

Why ? What could be the reason.

After checking found that customer created data in local language and to display those we need to have font which support those characters to show and I change the font on report and it showed correctly. (Surprisingly the font I used to show report data it worked properly and show data correctly and even it is not listed in the standard list .I think it depends on your country also)

On your own container you have leverage to install the font by using PowerShell command.

But for cloud please choose font wisely so it will not break your app.

Please see link for Available fonts on business central.

Hope this will help you.

How to discover reports and administration in business central role explorer

With the release of Business Central Wave 2 2021 aka BCV19 lot of new features has been added to make life easier of developer and/or customers.

One of new feature added in business central V19 for role explorer where in one can explore all the reports and other screens.

There is new button added on Business Central V19 as below

Once you click on this button all the modules will be displayed irrespective of assign role center.

There are few more options once you click on Explore More roles where in you can filter for reports or administration pages.

With this new features you can find all the reports or administration pages at one place efficiently.

Hope this will help to find the reports.

Stay tuned for more.

How to clean up data in business central

With the release of Business Central Wave 2 2021 aka BCV19 lot of new features has been added to make life easier of developer and/or customers.

To keep database performance always high and size of database in control we need to remove some data from database as part of maintenance .but after removing the data what if user would like to review the data again.

In new version Microsoft comes up with new extension called Data Archive.

The main purpose of this extension whenever you delete the records it will archive the records. With this extension archive data will be stored in JSON format in the extension. Media field is created for the storage of JSNO format (Data Archive Media Field)

Lets See how it works in reality

The archive data is stored in Tenant Media table which is not considered while calculating database size. If user would like to revisit some data then you might need to query Azure Cosmos database or you can export data in excel.

Hopefully this will help.

Next blog we will look into how to use the archive functions in AL code.

Till then stay tuned for more updates.

Non-Inventory Items and Locations

With the release of Business Central Wave 2 2021 aka BCV19 lot of new features has been added to make life easier of developer and/or customers.

Now from business central V19 onwards we can select location code for non-inventory items and it was having issue till version 18

Let See how to create Non Inventory Items

Go to Item Card

While creating Item select type as Non-Inventory. If the item is noninventory then Inventory Posting Group is disabled.

Let see how it works in Transaction.

Once you post this transaction then it will store the cost in Cost Amount(Non-Invtbl).

All these location will be copied to ledger entries.

Hopefully this will help you.

Stay tuned for more.