Extend Dynamics 365 Dual Write Solution

Dual Write is a Power Platform based solution to synchronize Dynamics 365 Finance and Supply Chain with Dynamics 365 Customer Engagement in real time. I’ve uploaded a Youtube Video that shows Dual Write in Action. The default solution comes with a set of synchronization entities like Products, Customers, Vendors, Quotations, Sales Orders and Invoices. In a Dynamics 365 project you typically need to add additional information in both applications.

In this example a customer shall have a preferred carrier. The carrier (e.g. UPS, DHL) will be stored in a main table. The customer entity will have a reference to set the carrier. The corresponding account entity in Dynamics 365 Sales will have the same lookup field and preferred carrier settings will be synchronized between Finance and Sales.

Carrier in Dynamics 365 Finance and Supply Chain Management
Carrier in Dynamics 365 Finance and Supply Chain Management

Extend Dynamics 365 Finance / SCM Data Model

For Dynamics 365 Finance / SCM create the necessary artifacts in Visual Studio:

  • A carrier table with a mandatory Name and Description field. Also create a primary index based on the Name.
  • An entity to make the carrier table accessible from external applications.
  • An extension of the CustTable with a Carrier field and a table reference from the CustTable to the Carrier table.
Dynamics 365 Finance / SCM Solution for customers preferred carrier
Dynamics 365 Finance / SCM Solution for customers preferred carrier

Save, compile and create a deployable package. Upload the package to your projects LCS asset library. After the package was validated, deploy the package to your target environment. After the package was deployed, go to Data Management Workspace > Framework Parameters > Entity settings and refresh the entity list.

Extend Dataverse (aka. Common Data Service) Entities

Navigate to https://make.powerapps.com and switch to your target environment. Go to Data > Tables and create a new table for the carrier. The table shall match the carrier table in Dynamics 365 FO. Make the Name field as mandatory primary field and add a second optional text field for the Description. Add a lookup field to the existing company table to match the DataAreaId that will come from Dynamics 365 Finance. Note that PowerApps will add a lot of other fields like owner, created, etc. as well.

Create a carrier entity in the Dataverse (CDS)
Create a carrier entity in the Dataverse (CDS)

Find the account entity that was created by the Dual Write solution. Add an addition lookup field called Carrier that references the newly created carrier table.

Carrier lookup in the account entity
Carrier lookup in the account entity

Customize the accounts form in Dynamics 365 sales

In PowerApps > Data go the accounts table and switch to the forms tab. There go to the Main form that is used in Dynamics 365 Sales to work with accounts. Click on the Name of the form, this will open the forms designer.

Dynamics 365 Dataverse Account entity
Dynamics 365 Dataverse Account entity

In the PowerApps designer add the Carrier field to the form. Save the change and publish the customized form.

Add carrier to Dynamics 365 Sales Account Form
Add carrier to Dynamics 365 Sales Account Form

Map the Carrier Entity from Dynamics 365 Finance to the Carrier table in Sales

In Dynamics 365 Finance open the Data Management Workspace and go to Dual Write. Create a new table mapping. Map the Carrier entity from Dynamics 365 FO with the Carrier table form the Dataverse.

Create a new table mapping in Dynamics 365 Dual Write

Next map the Carrier Name fields and the Carrier Description fields. Save and start the initial synchronization.

Map Dynamics 365 FO entity to Dynamics 365 Sales table

Check if the synchronization was successful. Open https://make.powerapps.com in a browser and switch to your target environment. At the left menu go to Data > Tables. Click on the Carrier table and switch to the Data tab. You should see the same carrier like in Dynamics 365 Finance.

Add the Carrier Lookup field to CustomverV3 mapping

Stop the synchronization of the CustomerV3 to account. Go to table mappings and refresh the tables. This will load the table schema from the Dataverse with the new carrier lookup field. Create a new mapping from the Carrier in Finance to the Carrier field in Dataverses entity. Save the mapping definition as a new version. Restart the synchronization and make sure there are no errors.

Mapping carrier fields in Dual Write
Mapping carrier fields in Dual Write

Now you should see and edit the Carrier in Dynamics 365 Finance as well in Dynamics 365 Sales. Changes made in any of the two products will be synchronized.

Preferred Carrier field in Dynamics 365 Finance and Supply Chain Management
Preferred Carrier field in Dynamics 365 Finance and Supply Chain Management
Mapped and synchronized Carrier field in Dynamics 365 Sales
Mapped and synchronized Carrier field in Dynamics 365 Sales

Limitations

Dual Write has some limitations regarding the number of lookup fields. If you come across an error during the synchronization you may need to remove some of the lookup fields from the Dual Write table mapping.

Third week under third lock-down in Austria (16th January ’21)

We are in the third week of the third lock-down in Austria. Mass-testing to end lock-down for negative tested people has been canceled and we are at least under lock-down till 24th. However, with the increased distribution of the more infectious British COVID-19 strain it is not sure if the lock-down will end or be continued. We are looking at the situation in Ireland where the infections are skyrocketing because of the new COVID-19 strain.

Massive spike of infections in Ireland is possible related to the new COVID-19 strain from Britain
Massive spike of infections in Ireland is possible related to the new COVID-19 strain from Britain
Source: https://coronavirus.jhu.edu/map.html

Right now the number of infections in Austria are stable at a high value.

Infections in Austria
Infections in Austria, Source: https://covid19-dashboard.ages.at/

Last PASS SQL Saturday Vienna 2021

Due to the insolvency of PASS head organization this was the last PASS SQL Saturday in Vienna. The local chapters can operate independently and PASS Austria may exist as Data Community Austria. Because of the COVID-19 pandemic this SQL Saturday was held virtual via Teams. Hopefully we will have a similar event with great content in the future.

Attending the virtual SQL Saturday Vienna 2021 from my home office
Attending the virtual SQL Saturday Vienna 2021 from my home office

Announcement: Global Azure Bootcamp 2012

The Global Azure Bootcamp 2012 will be held virtual this year as well. GAB was one of the first events last year that decided to switch to an virtual form. This years GAB will be virtual as well.

Mandatory Pre-Registration for visiting Austria

Anyone who is coming to Austria has to fill out a registration form. This applies also to Austrians coming back home. You have to provide personal information like name, nationality, etc, where you will stay and where are you coming from. Nevertheless, the 10 day quarantine with an option to test free after 5 days is still mandatory (with some exceptions)

Travel Registration Form for visiting Austria
Travel Registration Form for visiting Austria

Second week under third Lock-down in Austria (11th Jan. ’21)

Since 26.12 we are still under lock-down. It looks like Christmas didn’t cause a rapid spike of infections. However, the goal from the second lock-down to reduce the second wave under 1000 infections per day is still not reached. The actual situation, restaurants and retail closed but offices allowed keeps the curve constant at ~ 2000 infections a day. After the holidays, today is the first “real” working day.

Source: https://covid19-dashboard.ages.at/

Mass-Tests canceled

The third lock-down is scheduled until 24th January. The government wanted to provide the option get tested on 15th, 16th and 17th of January and again provided a website to register for a test. With a negative COVID-19 test it should have been possible to access restaurants and events. However, it was not clear who would have been be responsible to check if a customer has a valid negative test and for how long a negative test result would be valid. So the opposition parties threatened to slow down the process at the Bundesrat (second chamber of parliament) by a one-time veto and the government decided to drop the earlier mass test.

COVID-19 Mass-Test canceled

SQL Saturday virtual Event

COVID-19 killed another organization, PASS (professional associates for SQL Server) is insolvent. However, the local chapters like PASS Austria are still operable. This years SQL Saturday Vienna will be held online. Following a good tradition, SQL Saturday will be held on Friday 15th January.

Labor Minister resigned

CTRL+C and CTRL+V are very helpful shortcuts, but if you write a academic document you need to cite. The labor minister is accused of plagiarism and resigned on Saturday.

First week under third Lock-down in Austria (1.1.2021)

We’re back in a hard lock-down. In contrast to the second lock-down in November and December 2020 this one is a proactive lock-down to keep the infections after Christmas under control. Started on 26th December we are under an all-day curfew and non-essential business are closed. Up to now, the impact of the new GB mutation which is more infectious is unclear. Hopefully this will prevent uns from a third wave.

COVID-19 infections in Austria
COVID-19 Infections in Austria (Wave2) Source: https://covid19-dashboard.ages.at/

The last year was very challenging for all of us. COVID-19 killed approximately 1.8 million people, and many suffer from severe consequences of a COVID-19 infections. Actions taken to get the pandemic under control brought us into a economic and social crisis. However, from an IT perspective the good news are that COVID-19 boosted Digitization.

Something good in 2020

  • Microsoft Teams: 2020 was the year of Teams. Never ever was a Microsoft Product adopted so quickly by so many people and organizations. Thanks to the (very) hard lock-downs in Europe in spring, Teams was one of the few products that kept many organizations operable.
Microsoft Teams in 2020
2020 – The year of Teams
  • The Cloud: Those who didn’t understand the benefit of the cloud have learned it the hard way this year. The only way to scale up in a very short time is the cloud. No matter if it’s in a public or private cloud. But the situation in early 2020 showed that only the public cloud like Azure could handle the situation. When millions of people are forced to work from home, classic on-premises installations and VPN Gateways collapse.
  • Azure Region Austria: Microsoft announced to build two data centers in Austria. We will get our own Azure region. Typically our customers host their Azure Workloads in the West-Europe region. In the future we will be able to place the cloud workloads closed to the our customers.
  • E-Health: Digitalization and health care has never been a big issue in Austria and Digitalization projects like ELGA (electronic health file) was not very widely used. But COVID-19 boosted Digitalization in health care. We’ll get an electronic vaccination pass next year and e-prescription.
  • Home / Distance Schooling: It is said that the Austrian Education system is very old fashioned and stuck in traditions over decades. Over the last centuries E-Learning was explored from time to time but never ever taken serious. COVID-19 forced the education system to adapt to the situation. Universities also struggled to make exams remote compatible and came up with modern, naive and lazy solutions: The closest solution to a normal exam are Zoom-Meeting based exams, where you have to be online including audio and being watched through the webcam. Some Law-Schools found another way without all the fancy technology stuff. You get the exam online and have to upload the results within a given time, including a sworn declaration that you didn’t cheat. And some other lecturers replaced the classic exam by letting the students write an essay about some textbooks.
  • Bitcoin: Lucky you if you are a Bitcoin hodler 😉
Bitcoin skyrocketing in 2020
Bitcoin skyrocketing in 2020

“A very merry Christmas and a happy New Year Let’s hope it’s a good one”
– John Lennon, Merry Christmas

Dynamics 365 Dual Write in Action

Since the early days the integration of Dynamics AX ERP and Dynamics CRM was a painful challenge. Microsoft came up with may not so great working solutions. Dual Write is a Power Platform solution for Dynamics 365 Finance / SCM and Dynamics 365 CE. It supports the synchronization beween these two products almost in real time.

I’ve made a short video to demonstrate the synchronization between Finance and CE. A customer is created in CE and becomes immediately a customer in FO. The quotation from CE is synchronized to FO where it is converted into a sales order. The sales order is visible in CE. The order is invoiced in FO and can be reviewed from within CE.

Dynamics 365 Finance – CE integration via Dual Write

Load context-sensitive Power BI tiles in Dynamics 365 Finance via Power Apps

Power BI goes hand in hand with Dynamics 365 Finance and Supply Chain Management. By default Power BI can be used within workspaces and Dynamics 365 comes with a data warehouse and a large set of reports and dashboards. But wouldn’t it be nice to show Power BI visuals in common forms and filter on the active record? This can be done without coding by using Power Apps:

D365 Parameter to Power BI filter

Dynamics 365 Finance is capable to load Power Apps and pass parameters to the App, while Power Apps can load PowerBI reports and pass a filter to Power BI.

Create a Power BI report

Create a report that can be drilled down to the granularity you want to display in Dynamics 365 Finance. For example if you want to show customer specific information, your report should support filtering on a customer account.

For example I’m using the SalesInvoiceV2Lines and ReleasedProductsV2 entities. The SalesInvoiceV2Lines comes with a table reference to the SalesInvoiceHeaders where the invoice account is stored. The ReleasedProductsV2 can be linked to the lines via the product number.

Dynamics 365 Finance SalesInvoiceV2Lines entity in Power Query editor

Next create the desired visuals. For example a column chart for the revenue by Year and a donut chart for the revenue by product group. Add a filter and inspect the different results you would expect for differnt customers.

Revenue by Year and Product Group

Save and Publish the report. Open the report in Power BI Online and pin the two visuals on a new dashboard. Make sure to give the visuals on the dashboard a useful title and subtitle.

Power BI tiles on a dashboard

Power Apps

Everything comes together in Power Apps. Here the parameter from Dynamics 365 Finance is stored in a variable and passed as filter to Power BI. Open Power Apps via https://make.powerapps.com and create a new canvas app. I’d suggest to use the smart phone layout. According to the documentation add the following code to the OnLoad in Power Apps. This will store the parameter value from Dynamics to a Power Apps variable called FinOpsInput. (Depending on your local settings you may need to replace , with ; in PowerApps)

If(
    !IsBlank(Param("EntityId")), 
    Set(FinOpsInput, Param("EntityId")), 
    Set(FinOpsInput, "")
   )
Read parameter from Dynamics 365 Finance in Power Apps

Next, add the Power BI tiles. From the ribbon go to Insert > Diagram > Power BI. Insert a Power BI tile to the empty screen. Choose your workspace, next the dashboard and finally the tile.

Insert a Power BI tile in Power Apps

The Power BI tile is referenced via an URL. This can be edited by selecting the Power BI tile and switch to Advanced. The syntax is:

&filter=TableName/FieldName eq 'YourValue'

Add a filter on the customer account with the values from the FinOpsInput variable as value. Make sure that the filter matches the field in your Power BI report. For example this would look like the following URL in my example:

"https://app.powerbi.com/embed?dashboardId=d496ce2a-5836-4fc2-a3e9-34a5c1cdd674&tileId=7f1aa48a-e2f8-4eef-a59f-56a0e873e143&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLU5PUlRILUVVUk9QRS1yZWRpcmVjdC5hbmFseXNpcy53aW5kb3dzLm5ldCIsImVtYmVkRmVhdHVyZXMiOnsibW9kZXJuRW1iZWQiOmZhbHNlfX0%3d&filter=SalesInvoiceV2Lines/InvoiceAccount eq '"& FinOpsInput &"'"

Save and publish your App. From the list of your Apps, open the details page of your app and copy the App ID.

Power App Details
Copy the App-ID from the details page

Add the Power App in Dynamics 365 Finance and Supply Chain

Logon to Dynamics 365 Finance and navigate to the screen where you want to display the Power BI tiles. In my example I’d choose Module Accounts Receivable > All Customers. In the upper right at the ribbon click on the Power App button and select add an App.

Add a Power App to Dynamics 365 Finance and Supply Chain Management

In the Add an app dialog provide a useful name. Paste the App-ID in the second field. From the context dropdown select the field to pass as parameter to Power Apps. In my case this would be the AccountNum. Finish by clicking on Insert.

Dynamics 365 Finance requires a reload of the page (F5). Test your Power App by selecting a record and the from the Power Apps button open the Power App. It will load the Power App and present the filtered Power BI tiles.

Third week under second Covid-19 lock-down in Austria (6th Dec. 2020)

Third week home office
Third week home office

Three weeks of hard lock-down have passed and we are about to switch back to lock-down “light”. Stores will re-open on Monday 7th, but hotels, restaurants, bars and ski lifts remain closed. The curfew will be reduced from all-day to 18:00 – 06:00. Home-office has never been mandatory but recommended and will be recommended in the future.

Data shows that both lock-down “light” and “hard” lock-down were successful and infection rate is going down to high but stable niveau. Question is how will Christmas and New Year impact? We are eagerly watching the data from US and how Thanksgiving impacted the number of infections.

Infections are dropping after 3 weeks of hard lock-down
https://covid19-dashboard.ages.at/

Austria is staring voluntary free mass-testing. The army is organizing hundreds of testing sites all over the country. Anti-Gen quick tests are used to identify infectious people. These test have a very low false-negative rate. In case someone is identified as positive, a PCR test is done. Hopefully many non-symptomatic infections people can be found and isolated before Christmas to avoid a third wave and a third lock-down in January. While the registration was a digital disaster the testing itself was easy. Make an appointment and fill out a form. Bring the form and an ID card to the test site. If you have no printer at home it will be printed for you. Get tested and leave the test site. The result is sent to your mobile phone after aprox. 15 minutes.

Negativ Covid-19 test result 🙂

It’s all over now, baby blue

No more Microsoft-Hosted Tier1 Dynamics 365 Finance / SCM environments

Microsoft-Hosted Dynamics 365 Finance and Supply Chain Management Tier1 environments are gone. If you need a development or build environment you have to host it at your own costs in an Azure subscription. Typically partners will create an Azure Subscription for the customer and deploy the Tier1 environments there. Depending on the size (recommended ist D12v2) and Auto-Shutdown strategy the costs will be somewhat equal to the former Tier1 Addons.

During the first lock-down in spring Azure reached its capacity limit in Europe. Even Netflix and YouTube reduced the streaming quality to HD and lower. Microsoft shut of Teams functionality like seaing someone typing in the chat window and video conferences. In spring we were advised to deploy Tier2 environments in other regions than Europe. Thankfully this time we did not experience such capacity limits although many partners deployed many virtual machines for their customers in November.

IT-Disaster Austria Part 1 – The empty Online Shop

This week was an IT disgrace for the Austrian government. Last week was Black-Friday week and Cyber Monday at Amazon. In order to strengthen Austrian companies the Ministry for Digital and Economic affairs together with the Austria Commerce Chamber decided invest 700.000€ to develop and launch an Austrian Online Shop. This week the “Kaufhaus Österreich” / “Store Austria” was launched and failed immediately. Because it is nothing more than a link list with a not functional search. The search does not index the products from the vendors but only their company name and description. For Example, if you search for a mouse no results are returned because no registered vendor has “mouse” in their company name 🤣

Kaufhaus Österreich
No mouse in Austria

IT-Disaster Austria Part 2 – COVID-19 mass-test registration

Austria will conduct free corona mass tests in December. To organize these tests an online registration page. There you have to provide name, social security number, Email or phone number. After the registration a mail is sent with a link to make an appointment in a local test center. The registration site was announced in the media but the registration site failed permanently with an unexpected error. People report that 5 or more try were required to get registered.

österreich-testet Corona Anmeldung
Registration site for Corona mass-test failed

But the “unexpected server error” on submit was not the only problem. The Austrian news paper Der Standard reported a list of problems:

  • The site went offline only few hours after launch because of an DDOS attack
  • People could not book an appointment in their home district
  • Someone managed to book so many appointments that a test site was exclusively blocked
  • Some Email addresses were deleted
  • The website had no imprint

Much more problematic is a huge data leak. More and more people report that they get personal data from other people. For example, on Wednesday a teacher from Carinthia reported that he got an appointment for another person from Vienna.

Second week under second Covid-19 lock-down in Austria (29th. Nov)

Home-Office and Remote-Work

The first lock-down in spring was a game changer. Home office has become normal. But also in non-lock-down times the usage of Microsoft Teams now is on a high volume. For us it has become the collaboration backbone.

Teams usage is stable no matter if lock-down
Teams usage is stable no matter if lock-down

Webcast Marathon

Last week on 26th November we held a webcast marathon. We presented 6 talks for Dynamics 365 Finance and Power Platform. The webcasts were organized using Microsoft Teams Live Events. The registration pages were quickly built using Microsoft Forms and automated using Power Automate. When a new participant registered for a webcast, PA read the registration from Form, picked the corresponding .ics calendar, sent a mail to the participant with the calendar .ics as attachment and created a new record in Azure table storage.

Webcast Registration via Power Automate
Webcast Registration via Power Automate

It turned out that the combination of Office 365, Power Platform and Teams work great together and allows to manage a complex distributed scenario like a webcast with different speakers exclusivly in the cloud.

Lock-down results

In contrast to the very strict first lock-down in spring, the actual “hard” lock-down allows more exceptions.

Monday morning: Some stay at home but many (have to) go to work (30th November)
Monday morning : First week of first lock-down in spring (16th March)

In theory we have a curfew all day. Schools and Universities are closed, many retail stores are closed, home depots are closed for B2C customers and gastronomy is limited to delivery. But since going to work, sport and shopping is allowed we don’t really feel the pressure like in spring. However, it seems to work and the numbers are dropping.

New infections per day are dropping
New infections per day are dropping
Source: https://covid19-dashboard.ages.at

First Week under second Covid-19 lock-down in Austria (22nd. Nov)

Back in Home Office

Back in Home Office for 3 weeks

The second Corona wave hit us hard in Austria. After a very chilly summer, Corona strikes back. Compared to the first wave, testing capacities have rising up to 4x times. But even when considering a high number of unidentified cases in spring, the number of infections is much higher now and hospitals are now reaching their capacity limit.

Source: https://covid19-dashboard.ages.at/

We had a Soft-Lockdown in October with mainly restaurants closed and a pseudo-curfew from 20:00 to 06:00 but a lot of exceptions. Obviously the Soft-Lockdown came to late and had less effect, so we are now under a stricter Lockdown. Although the situation is more severe than in Spring, the restrictions are less hard now.

Notebooks are sold out

Home-Schooling and Home-Office has become a widely accepted practice. However, this results in a high demand of devices. At this moment almost all business grade laptops are sold out. No matter if you are Looking for Lenovo ThinkPads or ThinkBooks, HP Elitebooks, etc.

Webcast Marathon

Due to the pandemic our annual company event for our customers is canceled 😥 Since 10 years we are organizing an yearly event with our customers including good food, news and presentations.

Better times (2019)

This year we are presenting a day full of webcasts regarding the Microsoft Power Platform and Dynamics 365 Finance & Supply Chain. We will discuss collaboration in times of Home Office. Moreover we will present Power Apps, Power BI, Power Automate and Dynamics 365 Finance & SCM ERP projects.

Azure Backup Server agent installation trouble

Taking backups is crucial. I prefer to use the Azure cloud for storing backups. In case a disaster strikes on-premises, the data is at least save in the cloud. Microsoft is offering a great solution with Azure Backup. For taking simple file-based backups you only need the recovery agent installed on the source server. For taking more complex backups e.g. from SQL Server and HyperV the Azure Backup Server is required.

Azure Backup Server (aka. DPM)

The Azure Backup Server is a re-branded System Center Data Protection Manager. Backups can be stored locally on disk and in an Azure Backup Vault. Like the SCDPM Server, the Azure Backup Server requires agents to be installed on the source systems. This can be done using push or pull techniques. Within a domain you can instruct the DPM Server to install an agent on a server. You may also install the agent by hand and instruct DPM to connect to an already installed agent.

Azure Backup Server Console

I had one legacy server hosting a SQL Server 2012 instance, which was protected with System Center Data Protection Manager 2012 a while ago. The old agents were uninstalled years ago but left some entries that blocked the installation of the new DPM agent.

Identifying the problem

When the installation fails, a Log is created in C:\Windows\Temp. A look in the log file revealed that the installer found an installed product that should not be installed.

Agent installation started
 The agent bootstrapper is doing prerequisite checks
 Querying for Product with Upgrade code: {0BEE7F6A-CE2A-A5CF-FFEB-8E0F8A8CDE75}
 Querying for Product with Upgrade code: {EFF053DE-592F-5574-9AA3-64662A944952}
 IsProductInstalled: MsiEnumRelatedProducts returned ERROR_SUCCESS and product code found is {EECBB752-2C6E-45B7-9F18-2327B886309A}
 IsProductInstalled: Product: {EECBB752-2C6E-45B7-9F18-2327B886309A} is installed
 PerformAgentInstall failed with errorcode=addfd060
 Install ProtectionAgent failed with errorcode=addfd060
 Failed: Hr: = [0x80990a2d] DPMAgentInstaller failed, error says: [(null)]
 Failed: Hr: = [0x80990a2d] : SC-DPMRA found. Cannot install Microsoft Azure Backup Agent
 Failed: Hr: = [0x80990a2d] : Encountered Failure: : lVal : PerformAgentInstall(installargs, silent, skipKB)
 Failed: Hr: = [0x80990a2d] : Encountered Failure: : lVal : InstallProtectionAgent(false , false )

To identify the problem get_wmiobject can be used to display ID and Name. A old version of System Center Data Protection Manager Agent was not removed properly.

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize
DPM 2012 Agent leftover

Remove DPM agent leftovers

A first attempt to get rid of the DPM 2012 was to clean the registry. Therefore the regedit.msc was called and all entries referencing {EFF053DE-592F-5574-9AA3-64662A944952} were deleted. This was not sufficient to install the new agent.

Microsoft provides a tool to remove entries from uninstalled programs. The tool MicrosoftProgram_Install_and_Uninstall.meta.diagcab can be downloaded here: Fix problems that block programs from being installed or removed . It found the entry for DPM 2012 and removed it.

Fixit for blocking installation / uninstallation

The tool was a great step in the right direction, however the installation failed again because the DPM service could not be installed. The log file showed the following entry:

Received type [0x01000000] message [Service 'DPM CPWrapper Service' (DpmCPWrapperService) could not be installed. Verify that you have sufficient privileges to install system services.]

It turned out that there was already a CPWrapper Service but it was not functional anymore. The path to binary was no longer working. Therefore the property dialog from the service MMC was also not working. But there exists a tool to remove corrupt service entries. Process Hacker can be used to simple delete the service entry.

Process Hacker

Finally, the agent installation was successful

Azure Backup Server agent installation finished