A Custom Solution for Bulk Creating Subgrid Records Using HTML, JavaScript, and Plugins in Dynamics 365

One of the small but frustrating limitations in Microsoft Dynamics 365 is how subgrids handle record creation.

If you’ve worked with Opportunities, Quotes, Orders, or any parent–child setup, you’ve probably experienced this:

You need to add multiple related records. The system allows you to add them one at a time.

Click New. Save. Repeat.

It works, but it’s slow, repetitive, and not how users naturally think. Over time, that friction adds up.

The Real Problem

In our case, an Australia-based linen and garments company, was using Dynamics 365 to manage sales opportunities for hospitality and healthcare clients.

Their sales team regularly needed to add multiple products — such as linen packages, garment services, and rental items, to a single Opportunity. These products were organized by categories like:

  1. Motel
  2. Healthcare
  3. Garments
  4. F & B

A typical deal didn’t include just one item. It often included five, ten, or more products across different categories.

However, the out-of-the-box sub grid experience required them to:

  1. Create each product line individually
  2. Repeat similar steps multiple times
  3. Navigate back and forth between forms

There was nothing technically broken. But from a usability perspective, it wasn’t efficient — especially for a fast-moving sales team handling multiple client proposals daily.

What they really wanted was simple:

Select products by category → Choose multiple items → Add them in one go → Move on.

That capability simply wasn’t available within the standard sub grid behavior.

Approach

Instead of forcing users to follow the repetitive process, we extended the form with a custom solution.

We built a lightweight HTML-based interface embedded inside the form. This interface:

  1. Retrieves available records dynamically
  2. Displays them in a selectable list
  3. Allows users to choose multiple items at once

Once the user confirms their selection, the chosen records are sent to a custom server-side process.

From the user’s perspective, the experience becomes:

Open selector → Choose multiple items → Click once → All records created.

Simple. Fast. Intuitive.

What Happens Behind the Scenes

While the interface feels straightforward, the actual processing is handled securely on the server.

When users submit their selection:

  1. A custom action receives the selected record IDs
  2. A plugin processes the request
  3. All related records are created in bulk
  4. Business rules and validations are applied
  5. The subgrid refreshes automatically

This ensures the solution is:

  1. Secure
  2. Structured
  3. Scalable
  4. Aligned with system logic

The business logic remains centralized and controlled, not exposed on the client side.file.

Why This Matters

The improvement may seem small at first.

But consider users who perform this task daily. Reducing repetitive actions saves time, lowers frustration, and improves overall efficiency.

More importantly, it makes the system feel aligned with how users actually work.

Instead of adapting their workflow to system limitations, the system adapts to their workflow.

That’s where meaningful customization adds value.

The Outcome

By combining:

  1. A custom HTML interface
  2. JavaScript for record retrieval
  3. A custom action
  4. A server-side plugin

We created a smooth bulk record creation experience within Dynamics 365.

The platform remains intact. The business logic remains secure, and the user experience becomes significantly better.

And sometimes, that’s exactly what good system design is about, not rebuilding everything but removing friction where it matters most.

We hope you found this article useful. If you would like to explore how AI-powered customer service can improve your support operations, please contact the CloudFronts team at transform@cloudfronts.com.


Share Story :

SEARCH BLOGS :

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange