M365Con 2027 – free online conference · 11–22 Jan 2027 · 120 sessions→ m365con.net

2025-08-05

Customize Microsoft 365 Apps Deployment with ODT XML

Customize Microsoft 365 Apps Deployment with ODT XML
Click-to-Run feels effortless—until finance is missing Power Query, HR gets Publisher they never wanted, and users are nagged by mid-meeting updates. The fix isn’t a new tool; it’s one line in your Office Deployment Tool XML. This guide shows how to strip bloat, lock the right update channel…
  • Default Click-to-Run = chaos: wrong apps installed, missing features, noisy updates.

  • XML is the lever: exclude bloat, set Update Channel, define Languages, control InstallLocation, enable SharedComputerLicensing, and keep users out of update hell.

  • Segment by persona: finance ≠ marketing ≠ call center. Use per-department XMLs and pilot via Intune/MECM.


🧩 Why “Next, Next, Finish” Breaks at Scale

  • One-size-fits-none bundle (Access/Publisher everywhere, Teams where it shouldn’t).

  • Inconsistent updates: laptops grab builds overnight, others lag; prompts hit at the worst time.

  • Language pack drift and add-in surprises (Power Query/Solver “missing”).

  • Support burn: tickets for licensing prompts, mystery icons, and broken macros after channel changes.


🛠️ The One-Line (Plus a Few More) That Changes Everything

Below are copy-paste-ready snippets for your Office Deployment Tool (ODT) XML. Mix and match.

1) Exclude bloat & pin the update pace

<Configuration> <Add OfficeClientEdition="64" Channel="MonthlyEnterprise"> <Product ID="O365ProPlusRetail"> <Language ID="en-us"/> <ExcludeApp ID="Access"/> <ExcludeApp ID="Publisher"/> <!-- Add or remove as needed: Teams, OneDrive, Groove, Lync, etc. --> </Product> </Add> <Updates Enabled="TRUE" Channel="MonthlyEnterprise"/> <Display Level="None" AcceptEULA="TRUE"/> </Configuration>

2) Finance persona (Excel power features, no fluff) + French fallback

<Configuration> <Add OfficeClientEdition="64" Channel="MonthlyEnterprise" DownloadPath="\\dfs\office\cache"> <Product ID="O365ProPlusRetail"> <Language ID="en-us"/> <Language ID="fr-fr"/> <ExcludeApp ID="Publisher"/> <ExcludeApp ID="Teams"/> </Product> </Add> <Property Name="FORCEAPPSHUTDOWN" Value="FALSE"/> <Property Name="SharedComputerLicensing" Value="FALSE"/> <Updates Enabled="TRUE" Channel="MonthlyEnterprise"/> <Display Level="None" AcceptEULA="TRUE"/> </Configuration>

3) Call center/lab (Shared Computer Activation + quiet installs)

<Configuration> <Add OfficeClientEdition="64" Channel="SemiAnnualEnterprise"> <Product ID="O365ProPlusRetail"> <Language ID="en-us"/> <ExcludeApp ID="Publisher"/> <ExcludeApp ID="Access"/> </Product> </Add> <Property Name="SharedComputerLicensing" Value="TRUE"/> <Property Name="DeviceBasedLicensing" Value="FALSE"/> <Property Name="AUTOACTIVATE" Value="TRUE"/> <Updates Enabled="TRUE" Channel="SemiAnnualEnterprise" /> <Display Level="None" AcceptEULA="TRUE"/> </Configuration>

4) Keep installs off C: (tight images/VDI)

<Property Name="InstallLocation" Value="D:\Apps\MicrosoftOffice"/>

🧭 Channel Cheat Sheet (pick per group, not per org)

Channel Use For Cadence Risk
Current Channel IT/Pilots, early adopters ~2–4 weeks Highest change velocity
Monthly Enterprise General knowledge workers Monthly, predictable Balanced
Semi-Annual Enterprise Finance/Legal/Regulated 2x per year Slow, stable

Rule of thumb: IT and a small pilot sit on Current, most users on Monthly Enterprise, high-risk workflows on Semi-Annual.


🌍 Languages & Regions (stop the “how do I change UI language?” tickets)

Add multiple languages up front; Office picks the right UI:

<Product ID="O365ProPlusRetail"> <Language ID="ja-jp"/> <Language ID="en-us"/> </Product>
  • Quebec sites: fr-fr + en-us

  • Tokyo: ja-jp + en-us

  • Miami: es-es + en-us


🧪 Rollout Pattern (copy/paste plan)

  1. Prototype XML for each persona (Finance, HR, Marketing, Call Center).

  2. Pilot 10–25 users per persona via Intune or MECM; collect add-in/app feedback.

  3. Validate: Power Query/Solver/LOB add-ins, language UI, activation, macros.

  4. Stage by channel: pilots (Current), broad (Monthly Enterprise), sensitive (Semi-Annual).

  5. Enforce via Intune/MECM apps or Win32 package with detection rules.

  6. Report & refine: track install success, crashes, add-in failures, ticket volume.

  7. Document XML versions (Git/Repo) per department + change log.


🔍 Troubleshooting Quick Hits

  • “Unlicensed product” on shared PCs → Ensure <Property Name="SharedComputerLicensing" Value="TRUE"/>.

  • Missing Power Query/Solver → Verify SKU (Microsoft 365 Apps for enterprise), not legacy MSI; re-add via Programs and Features > Modify or redeploy with correct XML.

  • Mid-meeting update prompts → Move persona to Monthly Enterprise; set Display Level=None; schedule maintenance window; consider FORCEAPPSHUTDOWN=FALSE.

  • Wrong apps show up → Confirm ExcludeApp IDs, and that no older MSI Office remains (remove with OffScrub/setup /uninstall MSI).

  • Language mismatch → Ensure multiple <Language> entries; confirm user’s Windows display language if Office follows OS.


🧯 “We Picked Wrong” Rollback Plan

  • Re-deploy with the corrected XML (same Product ID) to change channel/exclusions in place.

  • For bloat removal, add <Remove> block or run a modify deployment:

<Remove> <Product ID="O365ProPlusRetail"> <ExcludeApp ID="Access"/> <ExcludeApp ID="Publisher"/> </Product> </Remove>

📈 KPIs That Prove It Worked

  • Ticket volume: install/activation/update issues (trend ↓).

  • Add-in failures detected by telemetry (trend ↓).

  • Time-to-patch critical updates by persona (SLA met).

  • % devices on intended Channel (compliance ↑).

  • Language-related support tickets (trend ↓).


❓FAQ

Q: Do I need separate installers per department?
A: No—use one ODT with multiple XMLs, or package multiple Win32 apps in Intune with per-group targeting.

Q: Can I switch channels later?
A: Yes—redeploy XML with a new Channel; Office moves to the new cadence.

Q: Teams/OneDrive in VDI?
A: Often exclude and deliver via VDI-optimized packages or machine-wide installers tailored for your platform.

Q: MSI remnants causing conflicts?
A: Remove legacy Office MSI first. Mixed MSI/Click-to-Run equals pain.


✅ Admin Checklist (print this)

  • Base XML per persona with Channel, ExcludeApp, Languages

  • SharedComputerLicensing set where needed

  • Display Level=None + AcceptEULA=TRUE

  • InstallLocation defined (VDI/low C: scenarios)

  • Intune/MECM detection rules + rollback plan

  • Pilot cohorts + schedule

  • Git repo for XML versions + change log

YouTube

Host: Mirko Peters

Related articles

← Microsoft Teams Recording Security and ComplianceCAML vs REST vs JSON for SharePoint Lists →