How to compare two revisions of a Boomi component

Everything that you develop in Boomi (processes, maps, connectors, profiles, etc.) is a component and a component in Boomi is always represented (behind the pretty GUI) as a XML document.

This means, that if you have made any change in a Boomi component, and wants to verify which change that you made, you can determine this by comparing two revisions of the ComponentXML for the changed component. This will be a text-comparison and not a GUI-one, but with a little practice, it is easy enough to interpret.

Continue reading “How to compare two revisions of a Boomi component”

Excel – open as “ReadOnly” / Viewing by default

If you open Excel files from Sharepoint, they by default open in Edit mode.

This sadly means, that whenever people interact with the sheet – for instance by filtering, this filtering will be saved. Extreeeemely annoying.

This may very well not be what you want. Fortunately, you can still set you Excel file to open by default in “Viewing” mode.
Continue reading “Excel – open as “ReadOnly” / Viewing by default”

Miracast – Wireless display/screen

While Google ChromeCast and products like Xiaomi Mi TV Stick supports wireless screen-sharing  and wireless streaming, they come with a caveat that may not make them the best solution in all cases

They require:

  • An mobile app to control them
  • A google account to use them

Especially the google account makes it a no-go for me.

However, if all you want it to stream Netflix etc., both these products might be a better option for you.

But if all you are interested in is a wireless screen for your pc or mobile device, there are other, simpler options

Continue reading “Miracast – Wireless display/screen”

Boomi ExecutionRecords – Leveraging Atomsphere API

Recently, I had to extract all the documents of a Boomi process run to investigate a support case. It was 2000+ documents, and I was in no mood to do it manually.

Boomi has detailed how to do it here, and luckily, a lot of the code and techniques from the “Code Search” project, could be reused. But it is by no means simple to do – 5 different API calls are needed, and for each document to be fetched, two of these needs to be called repeatedly handling HTTP 202’s in the process. This is also quite slow. It took several tries, and my 2000 documents took around 2+ hours to download.

Continue reading “Boomi ExecutionRecords – Leveraging Atomsphere API”

Boomi Code Search – Leveraging Atomsphere API

The Boomi Atomsphere API

If you like me would like to search though all your Boomi components for a certain text, the choice is very straightforward, because there is only one.

You have to code it yourself.

For this and many other uses, Boomi has their Atomsphere API, which does indeed expose quite a lot of functionality, but not quite as much as you might want.

Possible uses of the api:

  • Search code for text
  • Test code for known coding issues with external tools
  • Start execution of processes
  • Query a specific process execution for its results
  • …….

Continue reading “Boomi Code Search – Leveraging Atomsphere API”

Boomi – Web Server Listening port not showing in netstat

When you install a new Boomi Atom, and the “Shared Web Server” is enabled on port 9090 (default), you sort of expect that the java atom process is immediately listening at that port.

I was searching for a method to locally query the atom for its generic status, and this page, says that a special Endpoint is always available


This Endpoint is not authenticated.
Continue reading “Boomi – Web Server Listening port not showing in netstat”

LogicApps – remember state of a subscribing trigger

LogicApps has two different kinds of triggers

  • Polling
  • Subscribing

The polling triggers are easy. Whenever the LogicApp is enabled and its trigger is scheduled, it will poll the source for new messages.

The subscribing triggers, like CDS(Dataverse)- and SQL-triggers, are a little harder.

Those triggers has state and remembers where it left off, so if you disable the logic app and re-enable it, then it will trigger for all of the items it has not yet seen since the last time the trigger fired.

This can give you massive problems, if you disabled the LogicApp for the purpose of mass-updating eg. SQL rows without triggering the LogicApp.
Continue reading “LogicApps – remember state of a subscribing trigger”

Azure Devops DACPAC deployment to Azure SQL overwrites database properties

We have a solution, where we use DACPAC deploy in an Azure Devops pipeline to maintain the Azure SQL database.

Apart from the normal issues (like adding not-null columns), this works ok.

But recently, the Query Store ran full, without SQL-server deleting old plans (as it was configured to)

I therefore increased the “Max Size” of the Query Store which solved the problem, but some time later, the “Max Size” value was reverted back to its default value (a measly 100MB)

It turns out, it was the DACPAC deployment that overwrites this setting and constantly reverts it.

The default value is specified in the database project settings in the VS project – under “Project settings” / “Database Settings” / “Optional”.

Here all the default values can be found, including 6 for the Query Store

It seems to be possible to avoid the DACPAC deployment to overwrite database-options as a whole.

Unchecking the “Deploy database properties” in the database project publish does not have any effect.

But here, they mention a “ScriptDatabaseOptions” which can be set to false when using a programmatic deploy using “DacServices“.

Checking the SqlPackage options (which can also be specified in an ‘Azure SQL Database deployment‘ task), this property is found

/p: ScriptDatabaseOptions=(BOOLEAN 'True') Specifies whether target database properties should be set or updated as part of the publish action.

So, it should be enough to add this in the “Additional SqlPackage.exe Arguments” box in Azure Devops


To me, it does not make sense to have the deployment-task overwrite these kinds of settings – at least you would then need to plan your deployments appropriately – expecially “emergency” like deployments to update values.

Accessing table browser in D365 FO

I recently needed to access the tablebrowser in FO and found the nifty hint here:

How to Access the Table Browser

You can access the table browser using the URL string you use to get to the Dynamics 365 Finance and Operations application. At the end of the URL after “” you can add the following string and replace a few values with values you need.


Azure Function Apps – does not deploy all dependencies

As can be found several places, an Azure Function is not always deployed with all dependencies to Azure – apparantly because Microsoft has added a list of “standard” libraries/packages that should always be available on the Azure platform

This results in a nasty error

Could not load file or assembly ‘System.Configuration.ConfigurationManager, Version=5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’. The system cannot find the file specified.”:”System.Configuration.ConfigurationManager, Version=5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″}

For instance here and here

The solution is to use the undocumented property _FunctionsSkipCleanOutput like this in the .csproj file

.. removed ..
.. removed ..

I my case, a used library System.Runtime.Caching was using the System.Configuration.ConfigurationManager library, and the latter was left out when deployed
This was on Microsoft.NET.Sdk.Functions (3.0.9)