Skip to content
walterorando.com /
Search

Latest articles

Microsoft Dynamics 365 Business Central

Orando2 minute read

Consider a custom page extension on the customer card or sales order list that displays a real time calculated metric such as credit risk score or external partner balance.A common pattern is to write the calculation logic inside the OnAfterGetRecord or OnAfterGetCurrRecord page trigger. While functional, executing heavy calculation inside async page triggers blocks the…

Read article
Orando2 minute read

Consider a batch process that evaluates 10,000 inbound integration lines against a pre-loaded reference dataset (such as cross-reference mapping or unit conversion factors). A common design pattern is to load the reference dataset into a temporary table (Record “Item Unit of Measure” temporary) and call TempUOM.Get (…) inside the processing loop. While functionally sound, querying…

Read article
Orando2 minute read

Imagine a night-end batch job that marks 2,000 processed staging records as archived or updates a custom processing flag across open sales lines.A common pattern is to fetch the record set, loop through with repeat…until, set the field value, and call Record.Modify(false).While setting RunTrigger to false bypasses AL event code, it still incurs a significant…

Read article
Orando2 minute read

When generating PDFs, building zip archives, or parsing raw payloads in background tasks, working with “Temp Blob” is standard practice. However, handling streams carelessly can cause silent memory bloat and CPU spikes on the middle Tier. ⚠️ The Problem: Implicit Buffer Cloning.When a procedure accepts a “Temp Blob” codeunit or InStream variable by value (without…

Read article
Orando2 minute read

Designing a staging table with AutoIncrement = true on the primary key feels clean, no code, no fuss, keys assigned automatically.But under high frequency ingestion (IoT events, webhooks, logs), that simplicity turns toxic. Every insert competes for the same increment counter, creating lock contention at scale. The result? SQL insert timeouts and fragile throughput right…

Read article
Orando2 minute read

I audited a posting service where background job queues kept hitting lock timeouts during peak hours, even though transactions were short and indexes were tight.The hidden culprit? Developers were calling “Session.SetWorkDate()” inside loops. That adjustment leaks into the shared NST thread pool forcing cache invalidations and collisions on setup table locks. ⚠️ The Problem: The…

Read article
Orando2 minute read

A nightly job was processing thousands of vendor PDF invoices. Halfway through, the job queue crashed with out of memory errors, destabilizing the middle tier.The hidden culprit? Retrieving MediaSet/Blob fields inside iterative loops. Each fetch silently allocates unmanaged buffer memory on the NST. Those allocations don’t release until the session ends, turning a clean routine…

Read article