Not your average Power Platform deployment tools, :: buildThings :: automate the parts of your deployment where the other tools fear to tread.
Do your production deployments use an automated pipeline, but you still have a list of manual interventions as long as your arm? Well, we used to have those too, so we wrote :: buildThings ::.
:: buildThings :: are a set of tasks which aim to support a full ‘hands-off’ deployment of Model Driven Apps on the Power Platform, including Dynamics 365, by cloning data and configuration from a known good master instance to a target instance. They fill in the gaps left by the Microsoft and 3rd party ALM tools.
Show me the Things!
Thing Is |
Thing Does |
Drift the Data |
Copies config data from a specified entity, filtered by a view. |
Facsimile Your Stencils |
Copies all Word Document Templates, updating the Entity Type Code inside the template if necessary. With thanks to Gayan Perera @NZxRMGuy and magnetismsolutions.com for permission to use his code for this. |
Fix a Field |
Updates the value of a single specific field in a specific single record. |
Let Me In |
Looks for all entities with an Access Team enabled, copies over the templates and creates them with the original GUID so that there is no need to update forms referencing Access Team Templates |
Nothing to Report |
Hides those pesky out-of-the-box reports installed by D365. |
Prevent Plagiarism |
Grabs all published duplicate detection rules and the associated conditions and creates them in the target with the same GUIDs. |
The Needs of the Many |
Duplicates N:N data from the source to the target. |
Wake Up Your Logic |
Activates all non-SYSTEM owned Proceses in the target - Actions, Business Rules, Business Process Flows, Modern Flows, Workflows, and even Dialogs. |
What a State |
Sets the Status and Status Reason on individual records - primarily useful for selectively deactivating records. |
User Switcheroo |
Looks for every plugin step/workflow in the source instance set to run as a specified user and switches the user to be one in the target instance. |
You've Got Mail! |
Searches for mailboxes attached to users or queues, optionally approves them for use, sets up the mailbox profile, and schedules a test & enable on the mailbox. Pass in one or multiple email addresses to be processed |
Using the Things
You can use :: buildThings :: in a build or release job in Azure Devops. Here's an example of a release pipeline, in which we've set up a chain of D365CE instances, in each of which we want to run a selection of :: buildThings :: tasks:
If we drill down into the 'staging' environment, here's a set of tasks we might want to run there:
The last task in the list shows a typical config screen for a :: buildThings :: task - in this case we have a configuration entity which stores a Google Maps API Key, and we want to substitute in the right one for this particular D365CE instance.
Version History
v0.9 (Preview) - Bug fix (Jan 2024)
- [What a State] Fixed an issue where processes ('workflow') cannot be updated. This is because they still use the 'SetStateRequest' message rather than 'UpdateRequest'
v0.8 (Preview) - Bug fixes (Jan 2022)
- [All] Applied paging to queryexpression to ensure >5000 records are returned.
- [All] Updated logging to follow powershell and build task colour coding conventions.
- [Migrate The Data] Updated the ignore autonumber logic to be bypassed during upsert operations
- [Manage NN Relationship Data] Fixed an issue where the type checking on the attributes was mis-configured, resulting in the wrong attribute check being applied. Now resolved.
v0.7 (Preview) You've got mail (July 2021)
- [You've got mail] - new build thing to allow the authorisation and 'test and enable' of single or multiple mailboxes
v0.6 (Preview) Functional Improvements (June 2021)
- [Fix A Field] Added support for integer, boolean, decimal, optionset, money and datetime types
- [Needs of the Many] Added support for N:N relationships matched by 2 attributes
- [Drift the Data] Allow skip of autonumber fields during upserts
v0.5 (Preview) Authentication bug fix (June 2021)
- Fixed the "Can't connect to D365" error when using OAuth
- Improved logging when establisheing connections
v0.4 (Preview) Improved error handling and Bug fixes (Oct 2020)
- Added 'Nothing to Report', 'The Needs of the Many', and 'What a State'.
- Changed 'Wake up your Logic' to support all Processes, not just Business Rules. If you were using it before, you will need to remove and re-add it to access the new features.
- Fixed a bug reported by Tom Brosens where 'Drift the Data' failed to update values to null.
- Fixed a bug in 'Fix a Field' where setting a value to null would incorrectly trigger a validation error.
v0.3 (Preview) Improved error handling and Bug fixes (Sept 2020)
- Fixed bugs in which failed tasks were showing as succeeded.
- Changing logging messages throughout to show more targeted information.
- Let me in: fixed race condition where an entity newly enabled for Access Team wasn't available for Access Team Templates.
- Let me in: fixed a bug in which an existing Access Team would be reported as a duplicate.
- Fix a Field: fixed a bug in which FetchXML using double quotes would cause an error.
- Improved a few more log messages.
v0.2 (Preview) Minor update (March 2019)
- No functional changes - just re-compiled to make compatible with v9. They still work for v8.2 as well.
v0.0.1 (Preview) Initial Release (July 2018)
- We're using these tools every day in Azure Devops for v8.2 instances. They should work in TFS and with v8.1 of D365CE, but in all cases should only be considered as suitable for evaluation and feedback.
Open Source
We'll be releasing the code for these tasks on GitHub in due course.
About cloudThing
cloudThing is a Software Development, Power Platform, Data Science, and DevOps company headquartered in the UK with offices in India. We solve complex business problems with simple to use technology. Not everything we produce is free, but this is, you can visit www.cloudthing.com to find out more.