D365 Contact Center / Omnichannel / Customer Service: ALM a release management
Interní decision-making podklad
Datum: 2026-05-19
Scope: Dynamics 365 Customer Service, Omnichannel for Customer Service a Dynamics 365 Contact Center konfigurace
Zdroj: konsolidace research výstupu z kanban parent tasku t_a229817e
Executive summary
Pro D365 Customer Service / Omnichannel / Contact Center neexistuje bezpečný univerzální model „všechno přeneseme jedním solution importem“. Správný enterprise přístup je kombinovaný:
- Dataverse metadata a aplikační customizace: přes solutions.
- Customer Service / Omnichannel konfigurační data: kombinace solutions a Configuration Migration Toolu (CMT), vždy v řízeném pořadí.
- Environment-specific hodnoty: environment variables, connection references, deployment settings a explicitní post-deploy kroky.
- Provozní vazby: často ručně nebo skriptem po deployi.
Největší riziko je unified routing a channel konfigurace. Queues, capacity profiles, skills, decision contracts, decision rule sets, workstreams a channel konfigurace mají pevné dependencies. U routing pravidel může být dvoufázový / „double import“ záměrný, ne chyba.
Doporučení: postavit release model jako verzovaný runbook + pipeline, která odděluje:
- solution metadata,
- CMT referenční konfigurační data,
- environment-specific nastavení,
- ruční/provozní post-deploy validaci.
Doporučený ALM / release management přístup
Princip
Používat stejný build artifact přes TEST → UAT/PREPROD → PROD. V produkci nevytvářet nové zipy, nedělat neřízené unmanaged změny a nefixovat konfiguraci ručně bez propsání zpět do DEV/source control.
Prostředí
| Prostředí | Účel | Doporučení |
|---|---|---|
| DEV | Vývoj | Unmanaged solutions, maker změny povolené, export do Gitu. |
| BUILD | Build artifact | Pack/unpack, solution checker, vytvoření managed solution artifactů. |
| TEST/SIT | Technická validace | První import managed artifactů, CMT data, smoke testy. |
| UAT/PREPROD | Business validace | Stejný artifact jako TEST, rehearsal runbooku, rollback rehearsal. |
| PROD | Produkce | Approval gate, release window, monitoring, žádné ad-hoc unmanaged změny. |
Doporučená repo struktura
/solutions/base-dataverse
/solutions/customer-service-config
/solutions/omnichannel-channel-config
/solutions/copilot-agents
/config-data/cmt/schemas
/config-data/cmt/data/dev|test|uat|prod
/deployment/settings/test.json
/deployment/settings/uat.json
/deployment/settings/prod.json
/runbooks/omnichannel-release.md
/scripts/predeploy
/scripts/postdeploy
/scripts/validate
/scripts/rollback
Automatizace
Použitelné varianty:
pac CLIpro export/import/pack/unpack solutions, solution checker a deployment settings.- Azure DevOps Build Tools nebo GitHub Actions for Power Platform.
- Power Platform Pipelines pro jednodušší governance scénáře.
- Package Deployer pro komplexní balíky obsahující solutions, CMT data a custom hooks.
Praktické doporučení:
- Menší řešení: Git + pac CLI + CI/CD + approval gates + skriptované CMT/post-deploy kroky.
- Složitější Omnichannel/Contact Center release: zvážit Package Deployer nebo ekvivalentní release wrapper, protože se nasazuje více solutions, více CMT balíčků a target-specific runtime konfigurace.
Matice komponent: Solution vs CMT vs kombinace vs ručně
| Komponenta | Mechanismus | Jistota | Praktická poznámka |
|---|---|---|---|
| Vlastní tabulky, sloupce, vztahy | Solution | Vysoká | Standardní Dataverse metadata. DEV unmanaged, vyšší prostředí managed. |
| Formuláře, views, model-driven app customizace | Solution | Vysoká | Standardní ALM přes solutions. |
| Security roles | Solution + post-deploy assignment | Vysoká | Definice role v solution; přiřazení uživatelům/týmům řešit environment-specific. |
| App / experience profiles | Solution | Střední-vysoká | Ověřit konkrétní tabulky a vazby podle verze aplikace. |
| Session templates | Solution | Vysoká | Nasazovat před workstreams/routing konfigurací. |
| Notification templates | Solution | Vysoká | Včetně notification fields. |
| Agent scripts, macros, app tab templates | Solution | Vysoká | Pozor na environment-specific URL a odkazy. |
| Workstreams / pracovní proudy | Solution + CMT | Vysoká | Channel/workstream část solution, zbytek CMT; hlídat „Do not update existing records“. |
Live Chat widget msdyn_livechatconfig |
Solution | Vysoká | Starting table pro solution migraci live chat kanálu. |
| Capacity profiles | CMT pro inicializaci, solution pro update | Vysoká | Nové záznamy přes CMT; další aktualizace mohou jít přes solution, pokud target záznam existuje. |
| Konverzační queues | CMT | Vysoká | Musí existovat před závislými workstream/routing konfiguracemi. |
| Queue membership | Ručně / post-deploy | Vysoká | Vazby agentů jsou provozní a target-specific. |
| Decision contracts | Solution + CMT | Vysoká | Citlivé na GUID remapping a pořadí importů. |
| Decision rule sets / routing rulesets | Solution + CMT | Vysoká | Nejrizikovější oblast; často vícefázový import. |
| Intake/classification/route-to-queue/assignment pravidla | Solution + CMT | Vysoká | Postupovat přesně podle Microsoft runbooku. |
| Quick replies | CMT | Vysoká | Součást remaining channel configuration data. |
| Tags | CMT | Vysoká | msdyn_octag. |
| System messages | CMT | Vysoká | msdyn_ocsystemmessage. |
| Lokalizace system messages | CMT | Vysoká | msdyn_oclocalizationdata. |
| Operating hours | Solution + CMT + ruční kontrola | Vysoká | Calendar items se nemusí migrovat správně; nutná kontrola časových pásem a svátků. |
| Skill-based routing | CMT | Vysoká | Characteristics, rating models, rating values; uživatelé/bookable resources často mimo standardní migraci. |
| Copilot Studio agenti | Solution + post-deploy | Vysoká | Agent jako solution component; auth, channels, sharing, publish a connections validovat po importu. |
| Voice phone numbers / ACS | Ručně / environment-specific | Vysoká | Phone number acquisition/config není běžný ALM artifact. |
| Channel provider/account settings | Ručně / environment-specific | Vysoká | Mimo scope běžné channel migrace. |
| AI/analytics settings | Ručně / environment-specific | Vysoká | Nečekat automatický přenos. |
Doporučené pořadí deploymentu
Konkrétní Microsoft runbook pro daný channel/routing scénář má přednost. Obecné enterprise pořadí:
0. Před deployem
- Ověřit verze Dynamics 365 Customer Service / Contact Center ve source i targetu.
- Ověřit first-party solutions a feature flags.
- Ověřit publisher/prefix, solution boundaries a Git repo.
- Exportovat snapshot target konfigurace před CMT importy.
- Připravit environment variables, connection references a secrets mapping.
- Připravit rollback/revert postup pro každý CMT balíček.
1. Base Dataverse solution
Obsah:
- vlastní tabulky, sloupce, vztahy,
- security roles,
- forms/views/model-driven app customizace,
- pluginy, cloud flows, custom APIs podle řešení.
2. Customer Service app/profile/template solution
Obsah:
- app / experience profiles,
- session templates,
- notification templates,
- application tab templates,
- agent scripts,
- macros.
Důvod: workstreams a routing konfigurace mohou na tyto prvky odkazovat.
3. Copilot Studio solution artifacts
Obsah:
- agenti,
- topics/actions/flows/connectors,
- environment variables,
- connection references.
Po importu ještě nepočítat s hotovým runtime stavem. Auth, channels, sharing, publish a vazby na D365 se ověřují později.
4. CMT prerequisites: skills a capacity
Obsah:
- characteristics,
- rating models,
- rating values,
- nové capacity profiles,
- provisioning users/bookable resources podle potřeby.
5. CMT queues
Obsah:
- konverzační fronty,
- queue prerequisites,
- operating hours podle scénáře,
- overflow prerequisites.
Pozor: nemíchat create a update queue records v jednom importu, pokud konkrétní Microsoft postup říká import rozdělit.
6. Decision/routing CMT fáze
Obsah:
- decision contracts,
- decision rule sets,
- assignment configuration,
- assignment configuration steps,
- selection criteria / overflow pravidla podle Microsoft pořadí.
Doporučení: rozdělit CMT balíčky podle fází, např.:
routing-01-decision-contracts
routing-02-queues
routing-03-assignment-no-criteria
routing-04-assignment-criteria
7. Channel/workstream solution import
Obsah:
- live chat widget
msdyn_livechatconfig, - workstreams a related records,
- channel-specific solution components.
8. Remaining channel configuration CMT
Obsah:
- quick replies,
- tags,
- system messages,
- localization,
- další channel data podle Microsoft schématu.
9. Environment-specific post-deploy
Obsah:
- phone numbers / ACS,
- channel provider a account settings,
- Copilot auth/channels/sharing/publish,
- queue membership / agent assignment,
- calendar items u operating hours,
- secrets / connections,
- live chat snippet, domain a web deployment ověření.
10. Validace
Minimum:
- publish customizations,
- solution checker výsledky,
- audit počtů a klíčů CMT záznamů,
- smoke test routing: intake → classification → queue → assignment,
- live chat end-to-end test,
- voice end-to-end test, pokud relevantní,
- Copilot handoff test,
- kontrola security role assignments,
- kontrola unmanaged layers v targetu.
Známé problémy, rizika a dependency traps
1. Workstream není čistě solution-only
Microsoft doporučuje solutions framework pro channel/workstream konfigurace, ale zároveň používá CMT pro remaining configuration data a prerequisites. Praktický závěr: workstream/channel release musí být řízený runbook, ne jednorázový export/import.
Rizika:
- CMT přepíše záznam přenesený solution importem.
- Vzniknou duplicity při špatném unikátním klíči.
- Target nemá prerequisites, takže import projde jen částečně nebo vytvoří nefunkční routing.
Guardrail: pro CMT balíčky definovat update/create chování a po každé fázi validovat počty záznamů.
2. Queues musí existovat před routing/workstream vazbami
Queues jsou CMT data a jsou dependency pro routing a workstream konfigurace.
Rizika:
- Workstream odkazuje na neexistující queue.
- Queue membership se nepřenese a agenti nedostanou práci.
- Overflow/assignment pravidla mají další dependencies na decision rule sets.
Guardrail: queue import a membership provisioning mít jako explicitní release krok.
3. Capacity profiles jsou hybrid
Nové capacity profiles migrovat přes CMT; následné aktualizace mohou jít přes solution, pokud target záznam existuje a mapuje správně.
Rizika:
- Duplicita capacity profile.
- Nečekané přepsání produkční kapacity.
- Vazby na users/bookable resources jsou target-specific.
Guardrail: stabilní unikátní klíče a kontrola target mappingu před solution updatem.
4. Decision contracts / rule sets jsou nejcitlivější oblast
U unified routing může být potřeba vícefázový import. „Double import“ není nutně bug; může být záměrný kvůli dependency graphu.
Typické pasti:
msdyn_decisioncontractidobsahuje GUID ze source prostředí.- Selection criteria se doplňují až v pozdější fázi.
- Assignment a overflow rules mají pořadí importu.
- Import jedné fáze bez druhé vytvoří neúplnou konfiguraci.
Guardrail: rozdělit CMT packages podle fází, pojmenovat je pořadím a po každém importu kontrolovat klíče a počty.
5. Operating hours vypadají přeneseně, ale nemusí fungovat
Operating Hour může být related record v solution i CMT datech, ale calendar items a časová pásma vyžadují kontrolu.
Rizika:
- Calendar item se nepřenese správně.
- Svátky a časová pásma neodpovídají targetu.
- Routing/SLA se chová jinak než v DEV.
Guardrail: post-deploy validace calendar items, time zone a svátků v každém target prostředí.
6. Copilot Studio agent není po importu automaticky produkčně připravený
Copilot agenti se přenášejí přes solutions, ale runtime vazby často vyžadují post-deploy.
Rizika:
- Agent není publikovaný.
- Chybí auth/channel/sharing.
- Connection references nejsou namapované.
- Vazba na live chat / voice / handoff není funkční.
Guardrail: samostatný Copilot release checklist: auth, channels, permissions, publish, test conversation, D365 handoff.
7. Voice a channel provider nastavení jsou environment-specific
Phone numbers, ACS, channel provider configuration, account settings a část AI/analytics nastavení nejsou bezpečně přenositelné jako běžné solution/CMT artifacts.
Guardrail: držet je jako explicitní post-deploy checklist, credentials mimo Git a mimo běžná CMT data.
8. Rollback není jednotný
Managed solution upgrade má jiné rollback vlastnosti než CMT data import. CMT není transakční rollback celého release.
Guardrail:
- Před CMT importem exportovat target snapshot stejného schématu.
- Pro každý CMT balíček mít revert postup.
- Routing/queue rollback dělat v opačném pořadí než import.
- Rehearsal rollbacku provést v UAT/PREPROD.
- Neplést solution rollback s data rollbackem.
Guardraily pro DEV / TEST / UAT / PROD
DEV
- Unmanaged solutions jsou povolené jen tady.
- Všechny změny exportovat/unpackovat do Gitu.
- Konfigurační data nerozšiřovat ad-hoc bez schématu CMT balíčku.
- U Omnichannel změn udržovat dependency mapu: queue, capacity, skills, routing, workstream, channel.
- Neřešit produkční credentials ani phone numbers v DEV artefaktech.
BUILD
- Packnout managed solution artifacty.
- Spustit solution checker.
- Připravit deployment settings pro environment variables a connection references.
- Validovat, že CMT balíčky mají verzi, schéma, unikátní klíče a pořadí.
- Vygenerovat release manifest: solutions + CMT packages + post-deploy checklist.
TEST / SIT
- Nasazovat stejný artifact, který půjde do UAT/PROD.
- Spustit plný runbook včetně CMT fází.
- Po každé CMT fázi kontrolovat počty a klíče záznamů.
- Spustit technické smoke testy: routing, live chat, assignment, Copilot handoff.
- Logovat všechny ruční kroky a target-specific hodnoty.
UAT / PREPROD
- Rehearsal produkčního release okna.
- Ověřit business scénáře s produkčně podobnými daty.
- Ověřit rollback/revert postupy.
- Potvrdit Copilot auth, channels, sharing a publish.
- Potvrdit operating hours, calendar items, queue membership a agent capacity.
- Zmrazit release artifact; žádné dodatečné ruční změny bez nového buildu.
PROD
- Approval gate a release window.
- Před CMT importy vytvořit target snapshoty.
- Spouštět kroky přesně podle pořadí v runbooku.
- Po každém kritickém kroku ověřit health check.
- Po deployi provést smoke test s reálnými kanály: live chat / voice / routing / Copilot podle scope.
- Monitoring po release: assignment failures, routing errors, queue backlog, conversation creation, bot handoff.
- Zakázat/hlídat unmanaged layers a přímé maker úpravy mimo emergency proces.
Praktické rozhodnutí pro implementaci
Doporučený cílový model:
- Rozdělit řešení minimálně na:
- base Dataverse solution,
- Customer Service config solution,
- Omnichannel channel/workstream solution,
- Copilot agents solution.
- CMT balíčky verzovat a pojmenovat podle dependency pořadí.
- Každý release mít jeden manifest:
- solution artifacts,
- CMT packages,
- target deployment settings,
- post-deploy checklist,
- rollback checklist.
- Před PROD vyžadovat UAT/PREPROD dress rehearsal.
- V produkci nepouštět CMT opakovaně bez idempotence a ověření unikátních klíčů.
Krátký závěr
D365 Customer Service / Omnichannel / Contact Center konfigurace nelze bezpečně releasovat pouze jako solution. Enterprise ALM musí kombinovat managed solutions, CMT konfigurační balíčky, environment variables / connection references a explicitní post-deploy kroky. Největší riziko je unified routing: queues, capacity profiles, skills a decision rule sets mají pevné dependency pořadí a některé části vyžadují dvoufázový import. Doporučený přístup je verzovaný release runbook a pipeline, která odděluje solution metadata, referenční konfigurační data a environment-specific provozní nastavení.
Primární zdroje použité v parent research
- Microsoft Learn: Overview of data migration for records
https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/migrate-config-data-for-records-overview - Microsoft Learn: Migrate configurations for record routing using solutions
https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/migrate-record-routing-config-using-solutions - Microsoft Learn: Migrate configurations for channels using solutions
https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/migrate-channel-config-using-solutions - Microsoft Learn: Migrate data for the live chat channel
https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/migrate-config-data-for-live-chat - Microsoft Learn: Migrate data for the voice channel
https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/migrate-config-data-for-voice-channel - Microsoft Learn: Export and import app configuration data
https://learn.microsoft.com/en-us/dynamics365/customer-service/implement/export-import-omnichannel-data - Microsoft Learn: Configuration Migration Tool
https://learn.microsoft.com/en-us/power-platform/admin/manage-configuration-data - Microsoft Learn: Copilot Studio export/import agents using solutions
https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-solutions-import-export - Microsoft Learn: Copilot Studio ALM strategy
https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/alm - Microsoft Learn: Power Platform ALM overview
https://learn.microsoft.com/en-us/power-platform/alm/overview-alm - Microsoft Learn: Solution concepts and solution layers
https://learn.microsoft.com/en-us/power-platform/alm/solution-concepts-alm - Microsoft Learn: Environment variables and connection references
https://learn.microsoft.com/en-us/power-apps/maker/data-platform/environmentvariables - Microsoft Learn: Power Platform CLI / pac solution / pac data
https://learn.microsoft.com/en-us/power-platform/developer/cli/introduction - Microsoft Learn: Package Deployer, Azure DevOps Build Tools, GitHub Actions, Power Platform Pipelines
https://learn.microsoft.com/en-us/power-platform/alm/package-deployer-tool - Networg: Package Deployer for solutions, data and migrations
https://blog.networg.com/package-deployer-solutions-data-migrations/ - Networg: Making Dataverse solution imports fast
https://blog.networg.com/making-solution-imports-fast/ - Networg: Dataverse solution component types
https://blog.networg.com/dataverse-solution-component-types/