Blog
We share knowledge to inspire others
March, 2025
Learn how to implement robust and efficient process to import complex documents into Dynamics 365 Finance and Operations from external Web services. This post covers integration design, practical code examples and troubleshooting strategies.
Denis Trunin
Read more
November, 2024
Optimizing and maintaining a legacy Dynamics AX system can be challenging. This guide provides actionable steps, from technical audits to performance monitoring, helping you keep your system running smoothly.
Denis Trunin
Read more
October, 2024
In this post, I share practical insights from my experience managing the technical side of Go-Live for D365FO projects, focusing on key activities like delivering fixes, replicating production issues, and leveraging tools to streamline the process.
Denis Trunin
Read more
October, 2024
How to implement robust, efficient integrations between Dynamics 365 Finance and Operations and external Web Services. This post covers design, code samples, troubleshooting and performance testing techniques for seamless event-based data synchronization.
Denis Trunin
Read more
July, 2024
This blog post describes how to implement various scenarios for periodic data export from D365FO to a file and uploading it to SFTP server.
Denis Trunin
Read more
September, 2023
Learn how to set up DevOps-hosted Build and Deploy pipelines for Dynamics 365 for Finance and Operations in this detailed guide
Denis Trunin
Read more
May, 2023
The blog post describes how D365FO batch framework handle errors and what kind of problems it may cause
Denis Trunin
Read more
March, 2023
Finalising our implementation of Identity and Access Management processes and flows. The last part of the series explains App Registrations and Firewall settings (Azure WAF / Front Door) to ease deployment to Azure.
Alex Klaus
Read more
March, 2023
Implementing a bespoke authentication/authorisation service in .NET with using OpenIdDict library illustrating with samples on GitHub.
Alex Klaus
Read more
February, 2023
Continue diving into Identity and Access Management processes and flows. This is a second part of a four-part series on modern authentication solutions for enterprise apps.
Alex Klaus
Read more
February, 2023
The blog post tests various options for. restoring BACPAC files on local SQL Server.
Denis Trunin
Read more
January, 2023
Designing a centralised auth service for a bespoke client-facing enterprise app with minimum maintenance and development overhead.
Alex Klaus
Read more
November, 2022
The blog post describes performance differences between various environments Tiers in D365FO.
Denis Trunin
Read more
September, 2022
The blog post describes a procedure to transfer attachments from AX2012 to D365FO
Denis Trunin
Read more
June, 2022
Practical approach to integration testing of the .NET + NoSQL bundle. Key features, examples and comparisons of RavenDB with other NoSQL engines.
This post is a part of the YABT series dedicated to building an enterprise application leveraging the .NET Core + RavenDB bundle.
Alex Klaus
Read more
May, 2022
The blog post describes a sample approach how to implement XML based integration by importing purchase orders from Azure File Share in D365FO using X++
Denis Trunin
Read more
March, 2022
There is a .NET project. Running hundreds of SQL commands and queries. Mostly via an ORM. But occasionally doing the heavy lifting in carefully tuned high-performed SQL queries.
How to orchestrate automated tests against SQL Server for this project?
Alex Klaus
Read more
January, 2022
The blog post describes a monitoring solution for SQL Server missing indexes.
Denis Trunin
Read more
November, 2021
A practical example of building custom load tests using k6, TypeScript and Docker along with Azure DevOps pipeline. The goal is to create tests maintained by developers and a testing pipeline in Azure.
Alex Klaus
Read more
November, 2021
There are many types of web performance tests that ensure your application is fast and stable — load, stress, capacity, soak, smoke tests. This post will guide you to pick the right tools to script out, execute and manage the tests.
Alex Klaus
Read more
November, 2021
The blog post describes a sample approach to implement Azure Service Bus integration in D365FO using X++
Denis Trunin
Read more
October, 2021
This post describes a case to consider while working with LedgerDimension values from posted transactions.
Denis Trunin
Read more
September, 2021
This post describes an extension for the standard D365FO system that allows saving stack trace data for infolog messages.
Denis Trunin
Read more
September, 2021
Multi-tenancy is never simple and can be addressed at different levels. Arguably, the most interesting solution would be where the app and the database both support multiple tenants. Here I bring this solution to the YABT project.
Alex Klaus
Read more
August, 2021
The blog post describes a sample approach to implement recurring file-based integration in D365FO using X++ and DMF
Denis Trunin
Read more
June, 2021
The blog post describes a monitoring solution for SQL Server parameters sniffing issues
Denis Trunin
Read more
June, 2021
A brutal post with cool examples of JavaScript dynamic typing and implicit casting.
It's dedicated to the 25th anniversary of JavaScript and has all chances to stay relevant for another ¼ of a century.
Check input for NULL and correct type, read the documentation and let JavaScript be with you (as it's not going away any time soon)...
Alex Klaus
Read more
May, 2021
The blog post describes a sample implementation for Dynamics AX business operations performance monitoring and performance analysis
Denis Trunin
Read more
April, 2021
Describes a sample approach of improving Dynamics AX 2009/2012 performance by downgrading D365FO InventSum table change
Denis Trunin
Read more
March, 2021
When a team produces an enterprise solution with a Single-Page Application (SPA) front-end and .NET Web API back-end, what are the options to host the two beasts?
Ultimately, we want to preserve the front-end bundle unchanged between environments, inject environment variables and have custom caching policies.
Alex Klaus
Read more
March, 2021
Describes a custom framework for performing a periodic database cleanup
Denis Trunin
Read more
January, 2021
The blog post describes some steps for performance testing for file-based integration in D365FO using X++
Denis Trunin
Read more
January, 2021
Designing 'one-to-many' and 'many-to-many' relationships to reduce read operations on querying the data.
Let's take Users, Backlog Items and Comments entities from the YABT and consider their relationships from various angles, taking into account performance, operational costs, time/costs of development and maintenance.
Alex Klaus
Read more
December, 2020
The blog post describes a sample approach to implement recurring file-based integration in D365FO using X++
Denis Trunin
Read more
December, 2020
Marrying the flexibility of NoSQL entities for storing various sets of fields with strongly-typed .NET languages and powerful RavenDB indexing tools. Store custom fields, manage their C# structures and filter/search on them in the queries.
This post is a part of the YABT series dedicated to building an enterprise application leveraging the .NET Core + RavenDB bundle.
Alex Klaus
Read more
November, 2020
Strategies for document identifiers in RavenDB (and NoSQL in general). Pros and cons of GUIDs, auto-incremented numbers, use of prefixes, ID masking and more.
This post is a part of the YABT series dedicated to building an enterprise application leveraging the .NET Core + RavenDB bundle.
Alex Klaus
Read more
November, 2020
The blog post describes how to analyse execution of batch jobs in Power BI Desktop
Denis Trunin
Read more
October, 2020
Comparing the performance of 4 D365FO development VM configurations with Visual studio
Denis Trunin
Read more
October, 2020
Practical modelling of a NoSQL database using the DDD (Domain Driven Design) practices to define the problem area (Bounded context) of the project, its domain entities and aggregates. Comparison to designing a relational model for a traditional SQL.
This post is a part of the YABT series dedicated to building an enterprise application leveraging the .NET Core + RavenDB bundle.
Alex Klaus
Read more
October, 2020
NoSQL is not hard, it’s different. And to show that, RavenDB and I kick off a new series of articles dedicated to building an enterprise application leveraging the .NET Core + RavenDB bundle.
Alex Klaus
Read more
October, 2020
The blog post describes how to organize a Dynamics AX performance optimization project, who should be involved, and how the process should be organized
Denis Trunin
Read more
September, 2020
Five simple but often overlooked steps to provide a better experience to the devs using your NuGet package. Consider PDBs for the Symbol Server, Source Link integration, XML documentation, strong-named assemblies, CLS compliance and version managing.
Alex Klaus
Read more
August, 2020
'Execute direct SQL' form provides a simple interface to execute SQL commands on D365FO database.
Denis Trunin
Read more
July, 2020
Watching the LinkedIn feed full of dramatic pleas for job during last 3 months made me wondering whether being highly qualified make you crisis-proof? Whether a job crisis like a virus leaves the strongest (most skilled) ones in the workforce and slaughters the weak ones? Is the IT job market better than others? In other words, is the IT job market a Free Market?
Alex Klaus
Read more
July, 2020
'List of Values to Range' tool can help users deal with the list of values in query range and copy-paste values from Excel.
Denis Trunin
Read more
July, 2020
The post describes how you can convert your existing batch job to multi-threaded to increase its performance.
Denis Trunin
Read more
June, 2020
The post describes a utility that generates X++ code template for Data provider and Controller classes.
Denis Trunin
Read more
June, 2020
In this post, I'll try to describe how to create a new Sales Invoice report design using SSRS and X++
Denis Trunin
Read more
May, 2020
In this post, I describe some scenarios for Team Foundation Version Control usage in Dynamics 365 Finance and Operations and how it is different from AX2012.
Denis Trunin
Read more
May, 2020
The blog post compares ways how to solve SQL performance problems caused by parameters sniffing for AX2009/AX2012 and cloud version Dynamics 365 for Finance and Operations
Denis Trunin
Read more
April, 2020
A popular bundle of .NET + SPA framework (e.g. Angular, React, Vue) has a notorious problem of enforcing contracts between the back-end and the front-end. Among all solutions, code generation tools are particular tempting. And here is analysis of all the major players to get the job done: NSwag, Swagger Codegen, OpenAPI Generator, AutoRest, WebApiClientGen and TypeWriter (plus 2 extra tools with partial functionality).
Alex Klaus
Read more
March, 2020
When it comes to choosing a platform for a new application there is a lot to consider at different levels. For the CTO or Architect the focus is on providing the required scale, resiliency, maintainability, elasticity. And all of it within a certain price range. For the developers, the preference goes to elegant solutions, well integrated with the preferred technology stack and with smooth (pain-free) development experience.
Alex Klaus
Read more
March, 2020
This post describes an extension for the standard D365FO table browser that allows root navigation and editing for non-development environments.
Denis Trunin
Read more
February, 2020
In this post, I want to describe some great Visual Studio extensions to simplify your D365FO debug experience.
Denis Trunin
Read more
January, 2020
This post describes some real-life examples of AX2012/AX2009 performance problems and solutions for them.
Denis Trunin
Read more
January, 2020
Arguably, the Mediator pattern has become cool among the .NET devs when Jimmy Bogard released MediatR library 4 years ago. That library made words "Mediator" and "MediatR" interchangeable in the devs' lexicon. And as usual, trendy tools get often misused and applied without a second thought. Here I'm playing devil's advocate and look closely at its pros and cons. Is it still useful for modern .NET projects? May it become an anti-pattern one day as Service Locator did?
Alex Klaus
Read more
December, 2019
The post describes a solution for naming extension classes in D365FO based on naming guidelines rules
Denis Trunin
Read more
November, 2019
Following up on my "7 reasons not to NoSQL", here are my two reasons to go with NoSQL in enterprise projects - Cheaper to scale and Convenience of development.
Alex Klaus
Read more
September, 2019
Comparing the performance of 3 typical VM configurations for D365FO development
Denis Trunin
Read more
September, 2019
Describes custom plan command that can increase AX2012 database synchronisation speed
Denis Trunin
Read more
September, 2019
Have you seen people affiliated with NoSQL databases aggressively advertising them as a solution for everything? And early adopters swearing allegiance to the NoSQL and claiming to pass the point of no return to SQL? Unsurprisingly, one may think of NoSQL as the silver bullet which solves all the problems. Should we always use NoSQL?
Alex Klaus
Read more
August, 2019
Coming from high-level programming languages to TypeScript, a mere mortal dev may naively use an enum for a predefined list of numeric or textual values. Because really, how could it possibly be different in TypeScript?.. Unfortunately, it can and here is a quick run down the Rabbit Hole of TypeScript enums.
Alex Klaus
Read more
July, 2019
Having actively used RavenDB for a couple of years, I constantly get asked by other devs about feedback on the database. They usually expect to hear something simple and straightforward, like "love it" or maybe even "hate it", but my experience doesn't fall into any of these extremes. After 2 years I'm torn apart by polarised feelings about the database, and my expected-to-be-simple response turns into a long story about all the pros and cons, love and hatred. So here is my story.
Alex Klaus
Read more
July, 2019
Helper classes to read the data from Excel(xlsx) and CSV files using X++ code
Denis Trunin
Read more
June, 2019
Cross-site scripting (XSS) is one of the most common application-layer web attacks. Are Angular or React apps safe? And if not, how to protect them? Some methods are easy to implement, others (like Content Security Policy) require more attention. Anyway, applying right settings is not a smooth ride, and some potholes and gotchas are described here.
Alex Klaus
Read more
June, 2019
How to perform Dynamics AX performance audit to resolve performance problems
Denis Trunin
Read more
May, 2019
For professional developers, code/peer review is an essential step of the internal QA. Over the years, among a wide variety of problems revealed on code reviews, I found that some appear more often than others. Here is a list of the most common ones. So, the code is working, meets acceptance criteria, passed dev's testing and here we go...
Alex Klaus
Read more
April, 2019
There are many ways to implement integration between D365FO and external systems. In this document, I propose the actual checklist of what you need to consider to successfully design an integration solution
Denis Trunin
Read more
April, 2019
Create ledger journals using X++ is quite a common task, in this post I'll try to describe possible options how to perform it
Denis Trunin
Read more
April, 2019
Strongly typed Reactive Forms is the elephant in the room the Angular team doesn't want to talk about. In the absence of the official solution, developers can use some tricks to enforce type checking in the Reactive Forms. Here are two plausible solutions.
Alex Klaus
Read more
March, 2019
Perhaps, Autofac is the most popular DI/IoC container for ASP.NET projects. But, since .NET Core has a pretty decent DI/IoC container, why would one still need Autofac? This is a story of gains and losses from switching a mid-sized project from Autofac to the standard .NET Core container.
Alex Klaus
Read more
March, 2019
Nowadays, an urge to write can be easily satisfied. Simply jump to Medium and you can fire away typing your first blog post. Not happy with your posts getting lost among millions of similar looking pages from thousands of bloggers? Then start building you own website for a small fee on Squarespace, WordPress and the likes. But for software developers…
Alex Klaus
Read more
March, 2019
X++ tool that adds a system field name in a standard query filter field lookup
Denis Trunin
Read more
March, 2019
Working with the financial dimensions framework has become much more difficult starting with the AX2012. This post describes the most common problems and how to resolve them
Denis Trunin
Read more
February, 2019
Global class is a standard class that contains a lot of small static functions. This post describes additional functions that extend it.
Denis Trunin
Read more
February, 2019
Fields list form is an extended version of the standard Show all fields form with the additional features such as displaying all fields with the extended information, comparing and editing
Denis Trunin
Read more
January, 2019
Understanding blocking is a key component of resolving performance issues. You can have fast CPU, a lot of memory, but if you face SQL blocking problem all these will not be fully utilized
Denis Trunin
Read more
January, 2019
'RunBase class builder' Add-in parameters description and usage scenarious
Denis Trunin
Read more
December, 2018
Using Financial reporting (aka Management Reporter in Ax2012) on local DEV D365FO one box requires some addition settings, that are not yet documented. This post describes the problem and a possible solution.
Denis Trunin
Read more
December, 2018
Index hint is a new feature announced in D365FO PU23. When do we need it and what is the performance overhead of others alternatives.
Denis Trunin
Read more