Install the Templ8r solution in your D365 environment
Download the managed solution, import it via Solutions in Power Apps, publish. Adds the ribbon button + 6 web resources to your tenant. ~10 minutes.
Templ8r ships as a managed Dynamics 365 solution. Importing it adds a "Generate document" ribbon button to the entities you choose, plus 6 web resources (modal, side pane, admin SPA, history view, bulk-generate, ribbon JS). No plugins, no plugin steps, no custom code runs server-side in your tenant.
Before you start
- You need to be a Dataverse System Administrator in the target environment.
- Templ8r's Application User must already exist in your tenant. If onboarding hasn't run yet, do admin-consent first.
Steps
- Download the latest managed solution: templ8r.co.uk/download/Templ8r.zip. The asset is
Templ8r.zip, ~220 KB. - Open make.powerapps.com, pick the right environment (top-right selector).
- Go to Solutions → Import solution. Upload the
Templ8r.zipfile. - Accept the import dialog. Wait ~60 seconds for "Solution imported successfully".
- Open the new Templ8r solution. Confirm 6 web resources are listed.
- Open any Sales Order record. The Generate document ribbon button appears in the command bar. (To wire it on other entities, see below.)
Add the ribbon to other entities
By default the ribbon shows on Sales Order. To enable it on Quote, Invoice, Account, custom entities — anything in your tenant — open the Templ8r solution → add the target table → use Modern Command Bar Designer (or Ribbon Workbench) to clone the button onto its main form. Re-publish.
Verify
- Open a record. Click Generate document. Modal opens.
- Modal shows the published templates available to your D365 role.
- Click Generate on any template. Within 1–3 seconds you should see download buttons + an "Open in D365" link.
Nothing happens when I click the button
Hard-refresh the page (Ctrl-Shift-R, or Cmd-Shift-R on macOS). Web resources are cached aggressively after import; the modal won't load until your browser picks up the new JS. If still broken after a refresh, see the troubleshooting article on modal failures.