Skip to content

CA to DA migration tools - #294

Open
Graham McMynn (GrahamMcMynn) wants to merge 3 commits into
mainfrom
user/grahamc/260911MigrateCaToDa
Open

Graham McMynn (GrahamMcMynn) wants to merge 3 commits into
mainfrom
user/grahamc/260911MigrateCaToDa

Conversation

@GrahamMcMynn

Copy link
Copy Markdown
Collaborator

Description

This PR creates a migration tool that can be used for auditing the customizations that have been applied to the out of box ESS CA agent

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • [ X ] New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactor / cleanup

Testing

This change has been tested by running the migration tool against our test tenants.

Checklist

  • My code follows the existing style
  • I have added/updated tests where applicable
  • I have updated documentation as needed
Validation
- YAML parse: PASS|FAIL|N-A
- AdaptiveDialog kind: PASS|FAIL|N-A
- XML parse: PASS|FAIL|N-A
- Filename convention (new): PASS|FAIL|N-A
- Folder convention (new, incl. README.md): PASS|FAIL|N-A
- Diff scope (samples/ only): PASS|FAIL|N-A
- Secrets / internal URLs: PASS|FAIL|N-A

Introduces the essmig CLI under tools/ess-ca-to-da. It discovers a customer's ESS Custom Engine Agent (CA) customizations from Dataverse, merges them onto the current ESS Declarative Agent (DA) template, and emits an importable ALM package plus human-facing reports.

Highlights:

- Auto-detects installed ESS agents (core/hr/it); --vertical is optional.

- inspect writes customizations.md tagging each component migratable now / needs you / not supported yet, joined from the same merge the migration report uses.

- Normalizes Copilot Studio's lenient YAML (@OData keys, missing key-space, CRLF) so one malformed component fails alone instead of aborting the run.

- Interactive conflict resolution with hand-merge support; offline snapshot mode for reproducible re-runs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ypes

Capture and migrate the agent's own display name and description: discovery reads the live bot row plus its managed component layer for the shipped baseline (AgentMetadata), and merge carries a confirmed rename onto config botName/gptDisplayName and a re-description onto agent.yml entity.description. An unread baseline degrades to a review item rather than overwriting the template. Surfaced in customizations.md and the assessment.

Detect and report every customized component the agent owns instead of dropping non-carriable types at discovery: the owned sweep now queries DETECTABLE_COMPONENT_TYPES and _classify keeps all agent-owned customizations. File attachments (14), Copilot settings (18) and evaluations/test cases (19) route to MANUAL with reproduced configuration; skills fall through to NO_TARGET.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The agent's Overview description is stored in the description column of the
gpt.default botcomponent, a sibling of the data YAML (which carries only
displayName and instructions). Reading data therefore never surfaced the
description, so a customer's re-description was silently missed.

Retarget _agent_metadata at the gpt.default botcomponent: read the effective
name/description from its row columns and the shipped baseline from its managed
out-of-box layer. Drop the unused bot-row read path and debug scaffolding.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@GrahamMcMynn Graham McMynn (GrahamMcMynn) changed the title User/grahamc/260911 migrate ca to da CA to DA migration tools Sep 21, 2026

@qiangzeng2000-hash qiangzeng2000-hash left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved for the initial inspect-only workflow to collect customer CA customization snapshots and diffs for engineering review. Migration and import execution are outside this approval.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants