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.