Boy, have these last months been busy.
Now I am working on a management solution for our cloud offering. This solution is going to give the control of the services and the tenants to a NAV user interface. I am running Powershell scripts from NAV (thanks Waldo) and things are looking good so far.
I extended the Powershell functionality to be able to read an XML response like Waldo describes here.
One of the things I need to do is to maintain files for this management solution. For example a NAVData file, SQL backup file and a NAV license file. When ever I execute a Powershell script from NAV I write these files to a temporary file path and point Powershell over there.
I can’t be sure that every Powershell execution is a success and I can’t leave the temporary files around. I must delete them. The solution in my case is to create a single instance Codeunit and apply a DotNet List object.
I only needed a server version, but with DotNet this can be extended to handle the client side as well.
So, every time I create a temporary file I add the file to a DotNet List. Even if the execution fails the temporary file is still in the list. When the execution finishes all the listed temporary files are removed. If the execution fails then the next successful execution will also remove the previous temporary file.
As you can imagine this type of a Codeunit can be used in many scenarios. By using DotNet Dictionary it is easy to store parameters with names in one place and retrieve them in another.
For example if you need to add a parameter to a standard function, then adding the parameter to the Dictionary before you execute the function and retrieving it within the function will leave the function footprint unchanged and your customization upgradeable.