name: mulesoft-bdr description: "BDR Group MuleSoft integration project tracker. Reads the Implementation Playbook, tracks phase progress (0A→0B→0C→1A→1B→1C), flags blockers by owner (Ben/Anil/Dave/Julie/Ryan/Nikith), maintains credential state, generates stakeholder status updates. Use whenever Adam asks about BDR MuleSoft status, blockers, next steps, or phase gates. NOT for generic MuleSoft work — use /mulesoft or subskills for that."
Skill: BDR MuleSoft Project Tracker
Hardened Rules (load-bearing)
Anypoint control plane is EU. Always
eu1.anypoint.mulesoft.com. Applies to: UI login, Runtime Manager URL, Exchange Maven URL (https://maven.eu1.anypoint.mulesoft.com/api/v3/maven), pom<uri>inmule-maven-plugin<cloudHub2Deployment>, CloudHub deploy target (Cloudhub-EU-West-1), API Manager / Connected App / Access Management links, OAuth token endpoints. Wrong region = auth errors that don't say "wrong region."Deploy path = manual JAR upload via Runtime Manager. ACB rocket stalls silently after the CloudHub 1 vs 2 selector. GitHub Actions CI needs 5 repo secrets that aren't set (
ANYPOINT_CLIENT_ID,ANYPOINT_CLIENT_SECRET,SF_USERNAME,SF_PASSWORD,SF_SECURITY_TOKEN). Until those are populated, deploy by: build JAR with bundled Maven (C:\Users\Adam\.vscode\extensions\salesforce.mule-dx-dependencies-1.6.1-win32-x64\build\deps\apache-maven-3.9.4\bin\mvn.cmd -B -U clean package -DskipTests -DskipMunitTestsafter settingJAVA_HOMEto the bundled JDK 17), upload via Runtime Manager → Settings → Applications → Choose File. Smoke test/api/healthafter rolling restart.GitHub account =
a-savage-bdrONLY in.claude-work/orC:\Users\Adam\Mulesoft\bdr-integrations. Every other context =Mrsavage92. Rungh auth statusbefore any push. Switch back toMrsavage92immediately after BDR work — accidental pushes to BDR-named repos are a confidentiality breach. Read operations (gh run view,gh pr view, logs) without confirmation. Write operations (push, merge, close, delete, workflow trigger, secret/settings change) require explicit "do it" in the same turn.CloudHub 2.0 has NO Promote button in Runtime Manager — that's CH1 legacy. For CH2 sandbox→prod app deployment the path is: download JAR from sandbox app's ⋯ menu (Settings → Application File → Download) → switch env → Runtime Manager → Deploy Application → Choose file → Import file from Exchange OR upload local file → set per-env Properties tab → Deploy. However API Manager DOES have "Promote API from environment" — that promotes the API instance + policies + SLAs (NOT the JAR). Don't conflate them: Runtime Manager handles binary; API Manager handles policy layer. Verified 2026-05-15 via docs.mulesoft.com/cloudhub-2/ch2-update-apps.
CloudHub 2.0 application name has a 48-character limit.
broadband-availability-process-api-production(47) fits but anything≥38 chars + "-production"is rejected at submit. Use-prodinstead. Thedeploy/deploy-production.jsonapplicationNamefield can aspirationally say-productionbut the Runtime Manager UI is source of truth — override at deploy.Last-Mile Security setting MUST match the Mule app's internal listener protocol — they MUST be the same. LMS controls whether the ingress→pod last hop is HTTPS. If they disagree → 502 Bad Gateway. External callers always get HTTPS either way (ingress terminates TLS at edge). The mapping:
<http:listener-connection ... protocol="HTTPS" />(withtls:context) → LMS ON (CHECKED). Both BDR broadband apps (ITS, Process). Verified 2026-05-15 — forgetting LMS-ON gave 502 on ITS prod.<http:listener-connection ... />with noprotocol=attribute → defaults to HTTP → LMS OFF (UNCHECKED). SF System API (salesforce-system-api/src/main/mule/global-config.xml). Verified 2026-05-18 — leaving LMS-ON with HTTP listener gave 502. Toggling LMS off resolved it in one rolling restart.- To check before deploy:
grep "http:listener-connection" <app>/src/main/mule/global-config.xml→ if you seeprotocol="HTTPS"→ LMS ON; if no protocol attribute → LMS OFF. Each app may differ. Don't apply one rule to all of them.
Process API listener path is
/api/v1/*, NOT/api/*like ITS API. Process API health URL =/api/v1/health. ITS API health URL =/api/health. Hitting wrong path returns APIKit "No listener for endpoint: /api/health" 404. Same in sandbox + prod.PROD-CUTOVER-CHECKLIST.mdandBROADBAND-RUNBOOK.mdboth had wrong URL — flagged for correction. Memorise: ITS →/api/health, Process →/api/v1/health.Client ID Enforcement is OWASP API02 baseline for prod APIs even with one known consumer — but BDR's Mule apps DO NOT have
<api-platform-gw:api>autodiscovery wired in (verified 2026-05-15 via grep ofintegrations/*/src/). Without autodiscovery the apps cannot be registered as "Mule Gateway" type in API Manager. The remaining options are (a) Endpoint with Proxy = deploy a separate Mule Proxy app in front (adds infra + latency) or (b) Endpoint without Proxy = governance-only, no enforcement. Neither is a "click in API Manager today" job. Doing CIE properly = a v1.0.3 sprint: add autodiscovery to both Mule apps'global-config.xml→ build new JARs → deploy sandbox → UAT → apply CIE policy in API Manager → generate Connected App per env → update SF External Credential per env → repeat in prod. ~1-2 days work. For Phase 1 cutover: ship without CIE, calendar v1.0.3 hardening for week 1. Audit MULE-H1 indocs/DEEP-DIVE-AUDIT-2026-05-13.mdalready flagged this. Don't suggest "click in API Manager" without first checking if the Mule source has autodiscovery wired.BDR Anypoint deep-link IDs (captured 2026-05-15): Org ID
4d23f27b-2a82-4617-8ac1-56cb3ea622aa. Production env IDdfc0161d-daed-4c93-b71d-5b8fe4701ee4. API Manager URL pattern:https://eu1.anypoint.mulesoft.com/apimanager/bdr-group/#/organizations/{org-id}/environments/{env-id}/apis. Runtime Manager:https://eu1.anypoint.mulesoft.com/cloudhub/. Exchange:https://eu1.anypoint.mulesoft.com/exchange/. Env switcher is in top-right of UI, not in URL path.Anypoint Secret Groups are for Anypoint Runtime Fabric, NOT CloudHub 2.0 Shared Space. BDR is on CH2 Shared Space. For CH2 secrets, use Runtime Manager → app → Settings → Properties → tick "Secure" — that IS encrypted-at-rest secure storage, fit for purpose. Don't suggest creating Secret Groups; they aren't consumable from CH2 apps.
Maven IS available locally on Adam's Windows machine — bundled with the Salesforce Mule DX VS Code extension at
C:\Users\Adam\.vscode\extensions\salesforce.mule-dx-dependencies-1.6.1-win32-x64\build\deps\apache-maven-3.9.4\bin\mvn.cmd. SetJAVA_HOMEto the bundled JDK 17 first. So local builds DO work — just not via plainmvnon PATH. Don't claim "no local Maven" anymore.BDR's Anypoint subscription is "Customer - Integration Advanced" (verified 2026-05-19 by Adam screenshot of Access Management → Subscription). Expires 2030-04-12. This tier includes:
- Full Anypoint Monitoring (built-in dashboards, custom dashboards, insights, traces, alerts, custom metrics, telemetry exporter, reports)
- Functional Monitoring (the synthetic API testing product — formerly APIfortress)
- Log Search + Log Points + Raw Data
- Runtime Manager basic alerts
Implication: do NOT propose building custom monitoring Mule apps for BDR. All synthetic checks, log-content alerts, KPI threshold alerts, and dashboards are already in the subscription. Build using the UI in Anypoint Monitoring + Functional Monitoring, not custom Mule scheduler flows. See
~/.claude/skills/mulesoft-platform/references/monitoring.mdfor the full decision tree.Subscription caps to track (Access Management → Subscription → Runtime Manager + Object Store panels):
- Mule Public Flows: 200 (BDR uses ~25 across 3 prod apps — plenty of headroom)
- Mule Messages: 20M / month (Phase 1 single-digit % usage)
- Data Throughput: 40,000 GB / month
- VPCs: 2 (0 used)
- Network Connections: 4 (0 used)
- Object Store API Requests: shown <1% used
- vCores: check separately on Subscription Usage panel — roughly 1.6 vCores currently used across the 6 deployed apps (3 prod × 0.4 + 3 sandbox × 0.2)
Purpose
Track the BDR Group MuleSoft integration programme against the Implementation Playbook. Phase 1 scope is NetSuite entitystatus → Salesforce On Stop flag. Future phases expand to liquidations sync, event-driven workflows, and platform-wide integration per the 6-Phase Enterprise strategy.
When to Use
- Status check — "where am I on BDR MuleSoft?"
- Blocker audit — "what am I waiting on and who owns it?"
- Phase gate check — "can I start building yet?"
- Stakeholder update — "draft a message for Dave/Ben/Julie"
- Discovery input review — "has Ben sent the TBA creds?"
When NOT to Use
- Building flows, DataWeave, connector configs — use
/mulesoft-flow,/mulesoft-dataweave,/mulesoft-connector - Anypoint Platform admin tasks — use
/mulesoft-platform - Generic MuleSoft questions — use
/mulesoft
Canonical Sources
Always read these before answering:
C:/Users/Adam/Documents/Claude/BDR/MuleSoft_Implementation_Playbook.docx— primary truthC:/Users/Adam/Documents/Claude/BDR/MuleSoft/Phase 1-6 *.txt— enterprise strategy~/.claude/projects/.../memory/project_bdr_mulesoft.md— current stateC:/Users/Adam/MuleSoft/bdr-integrations/— actual project directory
Modes
Mode 1 — Status Check
Report current phase, % complete, active blockers, next 3 actions.
Read references/playbook-summary.md for the phase structure.
Mode 2 — Blocker Audit
Who owes what. Include chase history and escalation path.
Read references/blockers-matrix.md for the full dependency grid.
Mode 3 — Phase Gate Review
Before recommending "start building" or "deploy to prod", check gate criteria.
Read references/phase-gates.md for exit criteria per phase.
Mode 4 — Stakeholder Comms
Generate WhatsApp/email update to team members.
Use templates/status-report.md as the base.
Phase Map (Condensed)
| Phase | Dates | State | Owner |
|---|---|---|---|
| 0A Prep | By 2 Apr 2026 | SF Connected App, integration user, Anypoint audit | Adam |
| 0B Discovery | 3-14 Apr 2026 | TBA creds, entitystatus list, SF field names, liquidations source | Ben, Julie, Anil, Ryan |
| 0C Platform Setup | 14-18 Apr 2026 | CloudHub perms, Studio install, connectors tested | Adam + Dave |
| Gate Check | 18-21 Apr 2026 | All discovery inputs received, data model validated, Expert Coaching done | Adam |
| 1A Build | 21-25 Apr 2026 | Flow 1 (NS→SF On Stop set), Flow 2 (clear), Flow 3 (liquidations, may slip) | Adam |
| 1B Testing | 28 Apr-2 May 2026 | Dev + UAT, sign-off from Ben/Anil/Julie | Adam + owners |
| 1C Production | Week of 5 May 2026 | JWT upgrade, deploy, monitoring, smoke test | Adam |
Key People Map
| Name | Role | What They Owe | Status Check |
|---|---|---|---|
| Dave Beach | Anypoint Org Owner | CloudHub Admin on all 3 envs | DONE per access management screenshot |
| Ben | NetSuite admin | 5 TBA credentials + Saved Search + sandbox confirmation | CHASED, pending |
| Julie | Business owner | entitystatus trigger list confirmation | CHASED |
| Anil | Salesforce admin | On Stop field API name + SF field review | CHASED |
| Ryan | Liquidations owner | Data source/format/trigger spec | CHASED |
| Nikith | MuleSoft Premier support | Expert Coaching session | Book via case 471920541 |
Proactive Triggers
- If Adam mentions building flows and 0B discovery inputs aren't all received → flag gate risk
- If Adam mentions deploying to production and JWT auth isn't configured → flag security gap
- If a blocker has been "chased" for >3 business days without resolution → escalate to Dave Beach
- If Adam asks about NetSuite sandbox without it being confirmed → flag as testing risk
- If an action is taken against live production data without UAT sign-off → STOP and log
Output Artifacts
| Request | Deliverable | Format |
|---|---|---|
| "Where am I on BDR MuleSoft?" | Phase status + blockers + next 3 actions | Markdown summary |
| "What am I chasing?" | Blocker table with owners + chase log | Markdown table |
| "Draft an update for Dave/Ben/team" | Stakeholder message | Copyable text |
| "Can I start building?" | Gate check report (pass/fail criteria) | Markdown checklist |
| "Update project memory" | Updated project_bdr_mulesoft.md |
Memory file |
Anti-Patterns (do NOT do these)
- Assuming phase completion without verification — always check actual state (files, credentials in config yaml, Anypoint screenshots) before marking done
- Generic MuleSoft advice — always ground in the playbook. If the playbook says OAuth Username-Password for dev and JWT for prod, don't recommend something else
- Ignoring the enterprise strategy — Phase 1 Account Suspension is scaffolding for the larger programme. Decisions here affect Phase 2-6. Don't optimise locally at the expense of the bigger architecture
- Hardcoding credentials in docs or memory — always reference by variable name (
${sf.consumer.key}), never paste actual values
Related Skills
- Use
/mulesoft-connectorwhen setting up the SF/NS connectors during Phase 0C - Use
/mulesoft-flowwhen building the polling flow during Phase 1A - Use
/mulesoft-dataweavefor the NS→SF field mapping during Phase 1A - Use
/mulesoft-platformfor Secrets Manager and deploy during Phase 1C - Use
/mulesoftfor routing when the ask spans multiple subskills