Architecture

Posts in this category.

Azure Function to scrape Yahoo data and store it in SharePoint

Feb 14, 2026

A couple of weeks ago, I learned about an AI Agent from this Microsoft DevBlogs, which mainly talks about building an AI Agent on top of Copilot Studio. So, as a good student, I tried to build my own Agent to learn about Indonesian Stocks. But, for this part, I just want to show...

Using Azure Service Bus Queue to simplify Dataverse Concurrency

Jun 23, 2025

Have you ever faced a challenge where you needed to process bulk data that would update a single record? For example, you processed receipts for a single customer, and the program failed to update the correct data because the processing happened at almost the same time...

Dataverse: Bulk Performance Settings - Max Threads and Chunks

Nov 3, 2024

Currently, I'm still focusing on how to improve bulk processing in Dataverse. After implementing User Multiplexing, we will learn another consideration that we can apply which is the total threads and chunks of data per thread. Of course, some variables such as network speed,...

Dataverse: Create Custom Integration To Azure Cosmos DB for PostgreSQL

Jul 20, 2024

In a world where integration is common to do. Especially, because clouds is a common term, for sure, there are requests to integrate Dataverse with another DB (for reporting, or other system process purposes). Today, we will learn how to create Dataverse Plugins to do CUD...

(Dataverse) .NET API Implement Multiplexing Strategy

Jul 5, 2024

In some scenarios, we sometimes need to add a middleware (in this case .NET WebAPI) that connects Dataverse to other applications for integration. The reason can vary such as making the connection, request, and response to Dataverse simpler. If the integration loads are high and...

Dataverse: Implement Pre-lock in a plug-in transaction

Apr 6, 2024

Lately, my mind has traveled a lot on designing a plugin that can handle concurrency issues. Even though the framework itself has UpdateRequest and we can pass the RowVersion, I found the implementation does not always fit with some of the scenarios especially if you want to...