D365 F&O — Lessons, Code,
and Opinions.
13 years of Dynamics 365 Finance & Operations experience distilled into the resources I wish someone had handed me on day one. No gatekeeping. No fluff.
Why Your Post-Go-Live Is Harder Than Your Go-Live
Most D365 implementations don't fail at go-live. They fail 6 months later when the project team leaves and reality sets in.
Batch Job Retry Handler
Extension class that adds automatic retry logic with exponential backoff to any D365 batch job.
Real Code. Real Scenarios.
Not sanitized documentation examples. The actual patterns, extensions, and fixes that work in production D365 environments — with the context of why they work and when they don't.
/// Automatically retry failed batch tasks
/// with exponential backoff
public class BatchRetryHandler
{
public static void execute(
BatchHeader _header,
int _maxRetries = 3)
{
int attempt = 0;
while (attempt < _maxRetries)
{
try
{
_header.processTasks();
return;
}
catch (Exception::Error)
{
attempt++;
sleep(power(2, attempt) * 1000);
}
}
throw error("Max retries exceeded");
}
} Latest Posts & Resources
Batch Job Retry Handler
Extension class that adds automatic retry logic with exponential backoff to any D365 batch job.
Database Refresh Survival Guide
Everything that breaks after a prod-to-sandbox refresh and how to fix it systematically.
D365 Go-Live Checklist
Comprehensive checklist covering data migration, integration testing, security setup, and cutover planning.
Why Your Post-Go-Live Is Harder Than Your Go-Live
Most D365 implementations don't fail at go-live. They fail 6 months later when the project team leaves and reality sets in.
Stay in the loop.
New D365 posts, code snippets, and guides — straight to your inbox. No spam, no fluff. Just the good stuff.