A single source of truth turned a hard vendor deadline into a working checklist.
1 day
Time from empty repo to live site
Deployed on a custom domain with auto-deploy, auth gate, and pre-commit build check
3 into 1
Sources of truth consolidated
Reconciled Salesforce, MuleSoft, and internal engineering guidance into one reference
Feb 14, 2026
Vendor deadline addressed
Salesforce Live Agent API retirement, no extension available
1 URL
New-engineer onboarding
Self-serve migration reference replaces meetings and Slack archaeology
The University of Maryland Global Campus (UMGC) runs a student-facing chat system that advisors and prospective students rely on every day. That chat runs on Salesforce Live Agent, an API that Salesforce has scheduled for retirement on February 14, 2026. There is no extension and no grace period. If the migration is not complete and tested by that date, the channel goes dark for students.
The technical migration itself is only half of the difficulty. UMGC's stack has multiple moving parts: an Azure Bot Framework front end, Azure Conversational Services for NLP, Salesforce on the back end, and a plan to introduce MuleSoft as an API gateway going forward. The result was that the internal engineering team, the Salesforce vendor, and the MuleSoft partner were each describing the migration slightly differently.
Every meeting was ending with more questions than it started. New engineers joining the project were burning weeks getting up to speed. Leadership had a hard date on the calendar and no shared picture of the path to it. The real cost of inaction was not the API sunset alone. It was the compounding ambiguity, meeting by meeting, week by week, that put the deadline at risk.
Periscoped built UMGC a single source of truth. Rather than treating the ambiguity as an inevitable side effect of a multi-vendor migration, we treated it as the problem worth solving first. We consolidated what Salesforce documented, what MuleSoft was proposing, and what UMGC's own engineers had inferred, then reconciled the three into one authoritative reference.
The deliverable is a Docusaurus documentation site at umgc.periscoped.io. It opens with the deadline, spells out what is changing and what is not, and then drills into every part of the stack: the current Live Agent endpoints, the target Enhanced Chat endpoints, the API mapping between them, the Azure widget SDK, and the code paths their engineers need to touch. A checklist and a timeline sit alongside the technical reference so leadership and engineering can track progress against the same artifact.
We hosted the site on Periscoped infrastructure so UMGC did not need to add another vendor to procurement. It sits on AWS Amplify behind a custom domain and an auth gate, with auto-deploy wired to our main branch. Every clarification, every correction, every update from Salesforce or MuleSoft is live for UMGC's team within minutes. The site is not a static handoff. It is a living reference that keeps pace with the migration itself.
We began with listening rather than building. Before opening an editor, we mapped the guidance UMGC was receiving from Salesforce, from their MuleSoft partner, and from their own internal engineering, and we identified where those three sources disagreed. That reconciliation, more than any technical decision, is what unlocked the rest of the work.
Once the picture was clear, we moved quickly. The full site went from empty repository to deployed and reachable at its custom domain in a single working day. We chose Docusaurus because it produces a clean, searchable, developer-first reading experience out of the box and lets us focus on the content rather than the chrome. We put the site behind an auth gate because it references UMGC's internal architecture and we wanted to respect that. We wired up auto-deploy on the main branch so the reference stays current with no ceremony.
Small trust signals matter in a customer engagement. We added a pre-commit hook that runs the production build locally before any change lands, so UMGC's team never opens the site and finds it broken. We documented the deployment and credentials so anyone at Periscoped can pick up the site tomorrow. We treated the engagement as a relationship that continues past the go-live date, not a document dropped on a shared drive.
The strongest signal of success is that the tone of UMGC's project meetings changed. Standups that used to end with "wait, are we doing X or Y?" now end with "we are on step four of the checklist." New engineers joining the project onboard by reading one URL rather than reconstructing the plan from Slack history and vendor threads. Leadership can see the timeline and the checklist and understand where the migration actually is.
Because the site auto-deploys and lives on Periscoped infrastructure, UMGC's team continues to get value from the engagement week over week. When Salesforce clarifies a detail or MuleSoft ships an update, we push a correction and it appears on their team's screens the same day. The reference gets better as the migration evolves, and it does so without asking UMGC to lift a finger.
What we are proudest of is not the site itself. It is the change in confidence. UMGC came in with a hard vendor deadline, three sources of conflicting guidance, and an internal team that was uncertain about the plan. They now have a checklist, a timeline, an API mapping table, and a code-changes guide, all at one address, all kept current by us. The Salesforce Live Agent retirement is no longer a countdown clock in the corner of a slide. It is a plan with a set of steps against it, and UMGC's engineers know exactly where they stand.
The Periscoped team jumped in super quickly and helped me figure out how we were going to map out and make our deadlines. The team was responsive, highly knowledgeable, and provided clear guidance for us.
Team
Embedded documentation and enablement partner, hosting the reference on Periscoped infrastructure with continuous updates through the migration
See how we achieved 1 day time from empty repo to live site — and what we can do for you.
Start a Conversation