mcs-deploy — solution import, publish, and real verification
The contract: the deploy is not done until a bot in the target environment has
answered a real question, or the exact blocker is reported with the raw error.
Stage 0 — Build (only if no zip was provided)
If Kody points at agent.py files instead of a zip, build via
connected_agents/build_from_agents.py (build_solution_from_dir) in the RAPP repo.
Validate with validate_connected_solution before importing anything.
Stage 1 — Fresh version naming (always)
Kody iterates by fresh installs. Unless he says otherwise, bump the visible name
with the next suffix (v2, r3, ...) so the new import is unambiguous next to the old
one: check pac copilot list / the solution list for the highest existing suffix
first. Never reuse a name and hope the overwrite took.
Stage 2 — Credentials (never ask)
App-registration creds are in the project's local.settings.json:
DYNAMICS_365_CLIENT_ID, DYNAMICS_365_CLIENT_SECRET, DYNAMICS_365_TENANT_ID,
DYNAMICS_365_RESOURCE. Use them for Dataverse Web API calls. For pac, use the
existing auth profile (pac auth list); only ask Kody to run ! pac auth create
if no profile exists. Do not ask him to paste secrets — that is how seven ended up
in prompt history.
Stage 3 — Import
pac solution import --path <zip> --async --force-overwrite
- Or Dataverse Web API when pac auth is unavailable. Prefer an in-place
botcomponent PATCH when only bot content changed — it preserves existing
Direct Line secrets, so channel configs do not need rebinding.
- Connection references must be bound by the maker on first import of a new
solution — say so in the handoff rather than silently leaving them unbound.
Stage 4 — Publish (order is load-bearing)
- Publish the SUB-AGENTS FIRST, the ORCHESTRATOR LAST. A connected-agent root
must have its children published before it, else publish 409s
(ExternalServiceException).
pac copilot publish --bot <GUID> per bot (GUIDs from pac copilot list),
or PvaPublish via Web API, children first.
- pac publish is the oracle. A solution that zips and imports fine can still
fail publish — most often literal
{braces} anywhere Power Fx evaluates
(display names, messages). If publish fails, look for braces first.
Stage 5 — Verify (the part that gets skipped and then bites)
- Direct Line requires
authenticationmode = 1 (no-auth) on EVERY bot in the
chain. Flip via Dataverse Web API (PATCH bots), then republish children-first.
- Known limit: agent-to-agent delegation throws AuthenticationNotConfigured over
anonymous Direct Line. So: single-bot answers are verified over Direct Line;
connected/orchestrator flows are verified in the Test pane — if you cannot
drive the Test pane, give Kody the one specific question to type and what the
correct answer looks like.
- A verification pass = at least one real question, real answer, quoted in the
summary. "Import succeeded" is not verification.
Stage 6 — Handoff
Report: solution name + version, environment, bots published (in order), what was
verified and how, and the direct maker link
(https://make.powerapps.com/environments/<env-id>/bots). If connection
references need manual binding, that is the first line of the handoff, not a
footnote.
<!-- rci-capsule:v1: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 -->