Adapting old legacy apps for the cloud

The switch to the cloud is not so quick, at least here in Italy, but fortunately I can see a growing interest from customers on switching certain types of applications from on-premises to on-cloud solutions.

What I can see is that often there’s a misconception about switching an old legacy apps to the cloud: should I totally rewrite my application? What about the costs of rewriting an application that works and that we’ve developed in many years of works?

When you decide to switch an old legacy application to the cloud, you’ve not forced to totally rewrite the application. We all know that in the cloud world words like “microservices” are so hot nowadays, but splitting your application into microservices involves rearchitecturing all the app and (as you can imagine) this is not a quick work.

The movement could be a step by step process and you could “modernize” your application for the cloud by simply  considering these tips:

  • Place your application in a container: in this way, you can create an environment that emulates your on-premises architecture in a quick way. Visual Studio has built-in support for Docker and Windows containers and with few work your app is ready to be placed on the cloud.
  • If your application uses a local database, move it to the cloud: here you can use SQL Azure or other Azure storage types. Rmemeber also that SQL Server can run on a container too.
  • Publish your “containerized” application (Docker image) to Azure Container Registry (ACR) (you can do that directly from Visual Studio)
  • Push the new Docker image from ACR to Azure Container Instances (ACI). You can easily do that by using the Azure CLI.

In this way, you can “restyle” your application for the cloud by changing zero (or very few) lines of code.




Microsoft Dynamics 365 (aka NAV) desiderata and suggestions

In the past days a Microsoft insider asks me to share with him some requests/suggestions to share with the NAV Product Team in an internal meeting.

This is what I would like to see in the upcoming (Spring 2018) new NAV / Dynamics 365 release:

  • Web Client: we need a Department menu (Search box is not enough) and the ability to switch between different Role Centers + Style Sheet management.
  • List Pages: why not having a counter for records returned from a filter on a page (or total record on a table)? This is a request that all customers are asking from the first NAV releases.
  • A new way to manage long running tasks launched from a user. This is a personal “battle” that I’m fighting with the NAV Team from the past: I think that the actual NAV client does not manage well long running tasks because all is executed in a single thread. If a user launches a ProcessingOnly report that performs a big elabouration on data, the UI is completely freezed until the task ends. Why there’s not a way to specify that this task must be run on a separate thread? Obviously, Job Queue is not enough and out of scope here (because this is an on demanding task).
  • Container environments (Docker or Windows Container) for development and testing purposes. I know that the product team is working on this topic but I want to repeat this request.
  • Events Override: we need the possibility in the new AL language to completely override a standard NAV event (this is a must!)
  • Native support in AL language for calling Azure Functions. DotNet variable will be deprecated on the SaaS environment and Azure Functions (at the moment) seems to be the recommended way to execute .NET code. This requires that you write code to call the function (wrapper). Why not having a native type that permits us to directly calling an Azure Function without writing too much code?
  • DotNet types are deprecated on the SaaS environment but important functionalities that we had by using DotNet variables are missing (HTTPClient and JSON support is not enough). What about this lack?
  • File Management (EXISTS, CREATE, COPY) are not available on the SaaS environment. Why not architect something like a “virtual file system” or providing native functions to handle files directly in the Azure Storage?
  • What about Control AddIn? Will they be available? Or only Javascript?
  • Will have a private Store for publishing NAV apps only for certain customers and not directly on AppSource?
  • App Licensing: we need a standardized way to manage licensing for published apps (native way and functions for that). Actually seems that all is managed in a custom way and this is not good.

New book: Building ERP solutions with Microsoft Dynamics NAV

Today is THE DATE!

After 9 months of work, we’re ready to go: my new book Building ERP solutions with Microsoft Dynamics NAV (published by Packt Publishing) it’s officially available (eBook and printed version).

This book covers advanced topics related to implementing real world solutions based on Microsoft Dynamics NAV and external applications. Scope of this book is to describe in a practical way how to extend a Microsoft Dynamics NAV installation to the enterprise world. You will learn how an enterprise distributed architecture with NAV at the core could be implemented to satisfy practical needs and case studies.

The book is based on real world cases for every topic and every industry (sales, retail, manufacturing). Every chapter will guide you in step by step manner on how to efficiently solve a real world technical problem that you can frequently have on an NAV implementation. By the end of the book, developers will have the knowledge on how to efficiently solve certain scenarios and how could be the best architecture to propose to a customer.

This book is NOT a C/AL language programming guide. If this is your scope, on Packt Publishing website you can find many other great books strictly related to this topic. This book is for solution’s architects and advanced NAV developers. Here you will find:

  • All about how to use Microsoft Dynamics NAV web services in an advanced way
  • All about modern Microsoft Dynamics NAV integration with external applications
  • All about how to implement enterprise distributed solutions based on Microsoft Dynamics NAV as “the ERP”
  • How to use Microsoft Azure cloud services for implementing scalable Microsoft Dynamics NAV solutions

Every chapter covers a real business scenario and we’ll go from the solution’s design to the final implementation in a step-by-step manner. All will be “practical” and easy to follow.

This is the official outline:

Chapter 1: Introducing Microsoft Dynamics NAV architectures
Chapter 2: Configuring NAV Web Services
Chapter 3: Creating an application using NAV Web Services
Chapter 4: Using NAV web services with Power BI
Chapter 5: Integrating NAV Web Services and External Applications
Chapter 6: Extending NAV pages with Control Addins
Chapter 7: Programming Universal Windows Apps with NAV and devices
Chapter 8: Exploring Microsoft Azure and its services
Chapter 9: Working with Azure App Service and NAV
Chapter 10: Implementing a message based architecture with Azure Service Bus and NAV


Basic knowledge of C/AL language, basic knowledge of C# language. All the other concepts will be explained in the book. We’ll go in-depth also regarding the Microsoft Azure cloud platform and its services.

Writing a technological book is not an easy task. For reaching this goal, I want to mention all the great Packt Publishing staff that has worked with me in these months. A special thanks also for my friend Duilio Tacconi (Microsoft) for his collabouration in this project as a reviewer. Thanks to all guys!

This book is dedicated to a special girl… 🙂


You can find the book starting from today on the official Packt Publishing website or directly on Amazon website. Have a nice reading!


New book: Building ERP solutions with Microsoft Dynamics NAV (ITA version)

Ebbene si… ora è ufficiale e possiamo divulgare al mondo la notizia 🙂

Dopo 9 mesi (praticamente un parto!) di lavoro impegnativo, finalmente ci siamo: il mio libro Building ERP solutions with Microsoft Dynamics NAV (edito da Packt Publishing) da oggi è ufficialmente ordinabile, sia in version eBook che in versione cartacea.

Questo libro è rivolto principalmente a developer / progettisti di soluzioni ERP basate su Microsoft Dynamics NAV ed è nato con un obiettivo principale: insegnare che una soluzione ERP enterprise richiede spesso complesse integrazioni con sistemi esterni ed estensioni del prodotto base e non tutte queste cose vanno risolte utilizzando il linguaggio interno (C/AL). Il C/AL è nato per gestire la logica di busines, fuori dalla “scatola magica” dell’ERP esiste un affascinante mondo di tecnologia che, propriamente conosciuto ed utilizzato, ci permette di costruire soluzioni robuste, affidabili e scalabili.

In questo libro NON troverete una guida al linguaggio C/AL. Per chi è alle prime armi e cerca una guida al linguaggio interno di Microsoft Dynamics NAV, Packt Publishing ha altri ottimi libri in catalogo. Quello che troverete qui è invece:

  • Di tutto e di più su come utilizzare i web services di Microsoft Dynamics NAV in modo avanzato
  • Di tutto e di più su come integrare soluzioni esterne con Microsoft Dynamics NAV
  • Di tutto e di più su come costruire ed implementare soluzioni enterprise distribuite basate su Microsoft Dynamics NAV
  • Come sfruttare servizi cloud (offerti dalla piattaforma Microsoft Azure) per implementare soluzioni Microsoft Dynamics NAV scalabili

Ogni capitolo del libro va a coprire NEL PRATICO uno scenario di business reale (scenario che sicuramente vi troverete a dover gestire in un progetto reale) e viene mostrato passo passo come risolvere il problema in modo efficiente e moderno. Questo libro vuole proprio essere un fedele compagno da avere di fianco a se sulla scrivania quando ci troviamo ad affrontare un problema di integrazione: seguendo i passi descritti, non sbaglierete.

Nel dettaglio, questo è l’indice di ciò che troverete:

Chapter 1: Introducing Microsoft Dynamics NAV architectures
Chapter 2: Configuring NAV Web Services
Chapter 3: Creating an application using NAV Web Services
Chapter 4: Using NAV web services with Power BI
Chapter 5: Integrating NAV Web Services and External Applications
Chapter 6: Extending NAV pages with Control Addins
Chapter 7: Programming Universal Windows Apps with NAV and devices
Chapter 8: Exploring Microsoft Azure and its services
Chapter 9: Working with Azure App Service and NAV
Chapter 10: Implementing a message based architecture with Azure Service Bus and NAV


Conoscenza di base del linguaggio C/AL e del linguaggio C#. Tutto il resto (compresa la piattaforma Microsoft Azure ed i servizi cloud offerti) lo imparerete leggendo.

Scrivere un libro tecnologico non è per nulla facile. Per il compimento di questa “impresa”, voglio ringraziare tutto il fantastico staff di Packt Publishing che mi ha accompagnato in questi mesi di lavoro, voglio ringraziare l’amico Duilio Tacconi (Microsoft) per aver accettato di collaborare al progetto come reviewer ed ovviamente ringrazio me per averci creduto 🙂 La dedica però e tutta per qualcun’altro… 🙂


Il libro vi aspetta, lo trovate sul sito ufficiale di Packt Publishing o direttamente sul sito di Amazon. Buona lettura!




Dynamics 365: confusion to the max!

Yesterday Microsoft has announced Dynamics 365, its new approach to cloud-based business Apps.

Here you can find responses to many many questions that comes after the Dynamics 365 announcement.

I totally disagree with this Microsoft’s way to share news, actually there is too much confusion about NAV and Dynamics ERP in the cloud and this is absolutely not good for customers.

Remember only a concept: NAV will remain also an On Premise solution, it’s still the same great product and it has a great roadmap for the future. Madeira or Dynamics 365 ARE NOT NAV!!!

Microsoft Project “Madeira”: my opinion

As many of you already knows, in April Microsoft has released the first public preview of Madeira, their SaaS ERP solution based on NAV and running on the Azure cloud. And also as many of you already knows, actually I was not a great fan of this solution (I’ve always said ACTUALLY 🙂 ).

Let me explain well why this…

This is the “Madeira vs NAV” chart:


Madeira is not NAV, at least it’s not the NAV that many customers has in mind and it’s not the Microsoft’s ERP that sells so well at least here in Europe.

The pros:

  1. Microsoft is making huge investments on Azure cloud and I think that they should have a completely SaaS solution for the entire Dynamics suite. Dynamics CRM is also online, so why not also an ERP online? This is where Madeira fits the gap. This is the cloud-based ERP offering by Microsoft and I think that Microsoft has done a right step. They must be present on this market!
  2. It’s NAV-based, so no new to reinvent but all is based on a solid platform.

The cons:

  1. Madeira is an ERP inside Office 365. Microsoft has always highlighted the native integration between Office 365, Outlook and Madeira. But unfortunately not all companies are Office-addicted and expecially Outlook-addicted.
  2. I see Madeira as a possible (and suitable) ERP solution only for small companies, where no big customizations are required and where cloud is a chance to cut costs.
  3. Unfortunately, not all ERP markets are the same. Maybe there are places and situations where a standard NAV ERP without (or really few) customizations are ok, but (at least here in Italy) the industry market is really complex, the ERP is the core software for the companies and they want that it suits all aspects of their business (workflow functions, integration with other existing software or machines etc). If you want a real ERP solution with all these aspects in mind, implementing Madeira could be not enough.

Obviously, I’m happy to see a SaaS ERP solution base on NAV, I hope a great future for Madeira but I can’t see it to satisfy a wide range of market now. It’s simply not enough for me…

I’ve placed in Bold the word actually because I think that the industry world (alias big companies) is not ready for Madeira now. In the future things could change (maybe also the cloud culture) and we’ll see what happens. Now I couldn’t recommend Madeira to a customer unless it has few technical requirements or it has a really small budget.

Standard NAV will remain the main proposal for a company that needs a solid ERP system, totally adaptable to its business model. With NAV you can choose for a totally On-Premise solution or an hybrid one (I’m pushing always more to use Azure at least for the database tier) and with NAV you’ve all the power you want for your business now and forever.