> Markdown version of [/videos/730-migrating-half-a-million-users-to-a-new-payment-service-provider?t=789](https://www.wearedevelopers.com/videos/730-migrating-half-a-million-users-to-a-new-payment-service-provider?t=789). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # Migrating half a million users to a new payment service provider Faced with a strict 3.5-month deadline, engineers bypassed risky big-bang releases for fine-grained code routing. Discover how they safely migrated half a million payment users using Kotlin. - **Speakers:** Sebastian Hans - **Event:** WeAreDevelopers LIVE - **Published:** October 6, 2023 - **Duration:** 1:57:12 - **URL:** https://www.wearedevelopers.com/videos/730-migrating-half-a-million-users-to-a-new-payment-service-provider ## Summary Faced with a strict 3.5-month deadline due to EU tender delays, Stadtwerke München (SWM) navigated the complex live migration of over half a million users to a new SEPA direct debit payment service provider (PSP). Integrating a massive urban user base active across public transit, parking, and bike-sharing apps required an approach far more nuanced than a high-risk big bang release. To handle overlapping monthly billing cycles, missing SEPA mandates, and unpredictable authorization timeouts, the engineering team bypassed conventional service-level switches in favor of fine-grained, per-user routing embedded directly in their Kotlin and Spring Boot application code. This architectural choice enabled hyper-controlled traffic shaping, starting with organic auto-migrations before scaling to targeted daily batches of thousands of users. The successful rollout reinforced the idea that enterprise software must be treated as a "social-technical system." Technical execution, such as API reverse engineering and maintaining rapid CI/CD deployment pipelines, was heavily dependent on out-of-band collaboration. Success required deep contextual awareness of legal limitations, proactive alignment with customer support, and fast feedback loops driven by production monitoring. When unfinalized vendor contracts or sudden checkout timeouts threatened the schedule, the team's agile DevOps approach allowed them to pivot quickly, negotiate temporary fallback policies with the new PSP, and deploy rapid UX adjustments to public-facing payment portals. Beyond the migration retrospective, the discussion offers a window into SWM's developer-focused corporate culture and ongoing recruitment operations. Managing critical public utility infrastructure, the company emphasizes holistic employee development through blameless, metrics-free performance evaluations and generous annual training budgets. As they continue migrating their workloads to Azure cloud infrastructure using Terraform, SWM actively seeks product-minded engineers who prioritize clear communication, team resilience, and a hybrid collaborative environment over isolated coding heroics. **Keywords:** live payment system migration, sepa direct debit integration, payment service provider routing, socio-technical software design, api reverse engineering, deployment pipeline feedback loops, per-user traffic routing, checkout authorization timeouts, agile production monitoring, blameless engineering culture, developer learning budget, tech onboarding process, kotlin spring boot backend, terraform cloud infrastructure, hybrid work model ## Chapters 1. **Introduction to software development as a sociotechnical system** (00:02) — Software development fundamentally functions as a sociotechnical endeavor where team dynamics and stakeholders dictate success as much as the code itself. 1. **Interactive audience exercise exploring devops and production operations** (02:48) — An interactive workshop exercise captures attendee backgrounds and explores their foundational principles for performing major technical operations in production. 1. **Technical architecture overview and payment integration project constraints** (09:38) — The login ecosystem architecture mandates a tight timeframe for executing a live payment provider migration without system downtime. 1. **Navigating challenges in testing payment service provider APIs** (13:09) — Reverse engineering poorly documented endpoints and dealing with manual vendor configurations severely restrict exhaustive testing capabilities before production. 1. **Project planning strategies against hard implementation deadlines** (16:11) — Backwards and forwards schedule planning aligns legal user notification mandates with an extremely narrow consolidation testing phase. 1. **Technical logic behind SEPA direct debit processing flows** (19:09) — The mechanics of payment processing require securing SEPA mandates upfront, authorizing the transaction risk, and initiating delayed batch captures. 1. **Interactive polling exercise evaluating technical migration strategies** (23:29) — A collaborative analysis weighs the risks of routing updates by individual users against bulk migrating distinct software services. 1. **Building custom routing logic per user for controlled rollouts** (31:26) — Anchoring user-level routing logic in the application code safely bypasses monthly billing cycle complications while preventing runaway vendor costs. 1. **Discussing unexpected feature requests along the critical path** (37:30) — An interactive evaluation explores how to accommodate a rapid frontend feature for upfront mandate grants despite ongoing core migration tasks. 1. **Delivering iterative visual feedback loops for user interfaces** (45:03) — Deploying minimal frontend capabilities and subsequently refining them with rapid visual cues effectively drops customer support escalations. 1. **Interactive problem solving for delayed vendor legal contracts** (48:00) — Brainstorming evaluates emergency pathways and fallback techniques for handling partner services that lack finalized legal contracts before the scheduled go-live. 1. **Deploying fallback code and managing go-live vendor errors** (55:09) — Embedding a legacy vendor fallback directly into the codebase isolates un-contracted services and mitigates manual configuration bugs occurring on the provider side. 1. **Interactive troubleshooting for unexpected network timeout errors** (60:16) — Collaborative debugging explores how increasing network timeouts risks degrading the checkout experience versus pausing migration batches altogether. 1. **Resolving payment timeouts through direct partner risk negotiation** (67:21) — Securing an agreement with the new vendor to temporarily absorb default risk bypasses frontend timeouts and stabilizes the checkout process. 1. **Post-migration technical debt cleanup and sociotechnical reflections** (70:40) — Removing obsolete routing code leaves a clean architecture while cementing crucial principles around business context, fast feedback loops, and operational agility. 1. **Company culture, career paths, and technical talent acquisition** (76:47) — Human resources leaders highlight the organization's employee-oriented focus, internal development trajectories, and wide-reaching technical impact on municipal infrastructure. 1. **Evaluating technical routing choices and industry discovery tactics** (87:01) — Answers to technical inquiries explore how the initial cohort of friendly test users was gathered and whether external corporate benchmarks were audited. 1. **Discussing backend technical stacks and balanced performance evaluations** (91:22) — Explanations outline a modern backend environment reliant on Kotlin and avoiding flawed arbitrary metrics in favor of holistic peer feedback evaluations. 1. **Codebase archival practices and app store customer feedback** (100:14) — Technical principles dictate fully pruning deprecated provider code rather than archiving it, while analytics indicate minimal disruptions to end-user platform ratings. 1. **Analyzing candidate soft skills and developer onboarding frameworks** (106:19) — Recruiters emphasize finding cohesive, communicative peers, highlight extensive German language support, and detail the technical ramp-up cycle for inbound developers. ## Related Moments - [Recognizing the social realities of technical migrations](https://www.wearedevelopers.com/videos/100164-the-migration-cookbook) (from "The Migration Cookbook") - [Executing massive cloud network migrations while maintaining live systems](https://www.wearedevelopers.com/videos/100128-the-golden-age-of-email-owning-the-inbox-in-the-age-of-ai) (from "The Golden Age of Email: Owning the Inbox in the Age of AI") - [Hiring passionate software engineers to tackle unprecedented scaling challenges](https://www.wearedevelopers.com/videos/100128-the-golden-age-of-email-owning-the-inbox-in-the-age-of-ai) (from "The Golden Age of Email: Owning the Inbox in the Age of AI") - [Evolving engineering culture across global product teams](https://www.wearedevelopers.com/videos/608-throwing-off-the-burdens-of-scale-in-engineering) (from "Throwing off the burdens of scale in engineering") - [Accelerating application migration strategies with flexible routing](https://www.wearedevelopers.com/videos/675-demystifying-application-networking-in-the-cloud) (from "Demystifying application networking in the cloud") - [Securing enterprise funding to refactor unscalable procedural shortcuts](https://www.wearedevelopers.com/videos/477-launching-a-marketplace-on-time-a-lesson-in-taking-shortcuts-using-spreadsheets) (from "Launching a marketplace on-time: A lesson in taking shortcuts using spreadsheets!") ## Related Articles - [Dev Digest 120 - Apple and peers](https://www.wearedevelopers.com/magazine/455-dev-digest-120-apple-and-peers) - [Dev Digest 121 - AI goes offline](https://www.wearedevelopers.com/magazine/456-dev-digest-121-ai-goes-offline) - [Dev Digest 131 - AI'm not sure about OSS](https://www.wearedevelopers.com/magazine/472-dev-digest-131-ai-m-not-sure-about-oss) - [Covid-19: A crowdsourced Map For Checking Supermarket Wait Times Worldwide](https://www.wearedevelopers.com/magazine/116-covid-19-a-crowdsourced-map-for-checking-supermarket-wait-times-worldwide) ## Related Jobs - [Lead Software Engineer (f/m/d)](https://www.wearedevelopers.com/jobs/48296-lead-software-engineer-f-m-d) at **Personio SE & Co. KG** - [Mid/Senior Full-Stack Engineer (Web-first)](https://www.wearedevelopers.com/jobs/ext/1210833-mid-senior-full-stack-engineer-web-first) at **SMG Swiss Marketplace Group** - [Engineer, Offensive Security Organization](https://www.wearedevelopers.com/jobs/ext/1992296-engineer-offensive-security-organization) at **Twilio** - [Staff Software Engineer](https://www.wearedevelopers.com/jobs/ext/1425755-staff-software-engineer) at **GitHub** - [Senior Workday Integration Consultant](https://www.wearedevelopers.com/jobs/ext/1492621-senior-workday-integration-consultant) at **SD Worx** - [Software Engineer, Platform Engineering (L2)](https://www.wearedevelopers.com/jobs/ext/1956829-software-engineer-platform-engineering-l2) at **Twilio**