{"id":1384,"date":"2026-09-26T20:57:39","date_gmt":"2026-09-26T18:57:39","guid":{"rendered":"https:\/\/wertfels.com\/projekte\/ciam-migration-keycloak\/"},"modified":"2026-09-26T20:57:39","modified_gmt":"2026-09-26T18:57:39","slug":"ciam-migration-keycloak","status":"publish","type":"case_study","link":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/","title":{"rendered":"Legacy customer IAM replaced by Keycloak after more than 20 years"},"content":{"rendered":"    <section id=\"block_b10c6b32fef685a8b355360132c53b33\"\n             class=\"hero-case-study is-hero\"             data-section>\n\n        <div class=\"hero-case-study__inner container-full\">\n\n            <div class=\"hero-case-study__header\">\n                                    <h1 class=\"hero-case-study__title h-52 h-38-m\"><mark>Legacy customer IAM<\/mark> replaced by Keycloak<\/h1>\n                \n                                    <div class=\"hero-case-study__text txt-16 txt-16-m\">\n                        <p>65,000 customer accounts and more than 60 applications moved from an in-house system to Keycloak, without a production outage.<\/p>\n                    <\/div>\n                                                            <\/div>\n\n                                        <div class=\"hero-case-study__map\">\n                    <div class=\"hero-case-study__bg\">\n                        <div class=\"hero-case-study__markers\" data-hero-case-study>\n                                                                                            <a class=\"hero-case-study__marker hero-case-study__marker--1 is-active\"\n                                        href=\"https:\/\/wertfels.com\/en\/projekte\/iam-design-public-administration\/#fallstudie\"                                        data-index=\"0\"\n                                        aria-label=\"Identity Governance\">\n                                    <span class=\"hero-case-study__marker-number\" aria-hidden=\"true\">01<\/span>\n                                <\/a>\n                                                                                            <a class=\"hero-case-study__marker hero-case-study__marker--2\"\n                                        href=\"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/#fallstudie\"                                        data-index=\"1\"\n                                        aria-label=\"IAM Migration\">\n                                    <span class=\"hero-case-study__marker-number\" aria-hidden=\"true\">02<\/span>\n                                <\/a>\n                                                                                            <a class=\"hero-case-study__marker hero-case-study__marker--3\"\n                                        href=\"https:\/\/wertfels.com\/en\/projekte\/application-onboarding-sailpoint-2\/#fallstudie\"                                        data-index=\"2\"\n                                        aria-label=\"Application Onboarding\">\n                                    <span class=\"hero-case-study__marker-number\" aria-hidden=\"true\">03<\/span>\n                                <\/a>\n                                                                                            <a class=\"hero-case-study__marker hero-case-study__marker--4\"\n                                        href=\"https:\/\/wertfels.com\/en\/projekte\/pam-transformation-german-bank\/#fallstudie\"                                        data-index=\"3\"\n                                        aria-label=\"Privileged Access Management\">\n                                    <span class=\"hero-case-study__marker-number\" aria-hidden=\"true\">04<\/span>\n                                <\/a>\n                                                    <\/div>\n                    <\/div>\n\n                    <div class=\"hero-case-study__card\">\n                        <div class=\"hero-case-study__swiper swiper\" data-swiper-modules=\"effectFade\">\n                            <div class=\"swiper-wrapper\">\n                                                                    <div class=\"swiper-slide hero-case-study__slide is-active\">\n                                                                                    <h2 class=\"hero-case-study__slide-title h-22 h-20-m\"><a href=\"https:\/\/wertfels.com\/en\/projekte\/iam-design-public-administration\/#fallstudie\" style=\"color:inherit;text-decoration:none\">Identity Governance<\/a><\/h2>\n                                                                                                                            <p class=\"hero-case-study__slide-text txt-14\">38 use cases designed for a central IAM in public administration, on two coupled platforms.<\/p>\n                                                                            <\/div>\n                                                                    <div class=\"swiper-slide hero-case-study__slide\">\n                                                                                    <h2 class=\"hero-case-study__slide-title h-22 h-20-m\"><a href=\"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/#fallstudie\" style=\"color:inherit;text-decoration:none\">IAM Migration<\/a><\/h2>\n                                                                                                                            <p class=\"hero-case-study__slide-text txt-14\">Legacy customer IAM replaced by Keycloak after more than 20 years. 65,000 customer accounts, no production outage.<\/p>\n                                                                            <\/div>\n                                                                    <div class=\"swiper-slide hero-case-study__slide\">\n                                                                                    <h2 class=\"hero-case-study__slide-title h-22 h-20-m\"><a href=\"https:\/\/wertfels.com\/en\/projekte\/application-onboarding-sailpoint-2\/#fallstudie\" style=\"color:inherit;text-decoration:none\">Application Onboarding<\/a><\/h2>\n                                                                                                                            <p class=\"hero-case-study__slide-text txt-14\">Around 2,500 applications onboarded to SailPoint IdentityIQ, with a fixed process and a security test before every release.<\/p>\n                                                                            <\/div>\n                                                                    <div class=\"swiper-slide hero-case-study__slide\">\n                                                                                    <h2 class=\"hero-case-study__slide-title h-22 h-20-m\"><a href=\"https:\/\/wertfels.com\/en\/projekte\/pam-transformation-german-bank\/#fallstudie\" style=\"color:inherit;text-decoration:none\">Privileged Access Management<\/a><\/h2>\n                                                                                                                            <p class=\"hero-case-study__slide-text txt-14\">Privileged access secured, documented in a traceable way and governed in line with compliance requirements.<\/p>\n                                                                            <\/div>\n                                                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            \n        <\/div>\n            <style>.hero-case-study__slide-title a{transition:color .2s}.hero-case-study__slide-title a:hover,.hero-case-study__slide-title a:focus-visible{color:#204DFF !important}<\/style>\n        <script>\n        (function () {\n            var s = document.currentScript;\n            var root = s && s.closest ? s.closest('.hero-case-study') : null;\n            if (!root) { return; }\n            var aktiv = 0;\n            function setze(i) {\n                root.querySelectorAll('.hero-case-study__marker').forEach(function (m, k) { m.classList.toggle('is-active', k === i); });\n                root.querySelectorAll('.hero-case-study__slide').forEach(function (sl, k) { sl.classList.toggle('is-active', k === i); });\n                var karte = root.querySelector('.hero-case-study__card');\n                if (karte) { karte.classList.add('is-active'); }\n                var sw = root.querySelector('.hero-case-study__swiper');\n                if (sw && sw.swiper) { sw.swiper.slideTo(i, 300); }\n            }\n            var versuche = 0;\n            var warte = setInterval(function () {\n                var sw = root.querySelector('.hero-case-study__swiper');\n                versuche++;\n                if ((sw && sw.swiper) || versuche > 150) {\n                    clearInterval(warte);\n                    if (sw && sw.swiper && aktiv > 0) { sw.swiper.slideTo(aktiv, 0); }\n                }\n            }, 100);\n            function zurFallstudie(weich) {\n                var abschnitt = root.nextElementSibling;\n                if (!abschnitt) { return false; }\n                var ziel = abschnitt;\n                function abstand() { var ab = document.getElementById('wpadminbar'); return (ab ? ab.offsetHeight : 0) + 24; }\n                function ziehe(verhalten) {\n                    var y = ziel.getBoundingClientRect().top + window.pageYOffset - abstand();\n                    window.scrollTo({ top: Math.max(0, y), behavior: verhalten });\n                }\n                var benutzer = false;\n                function stopp() { benutzer = true; }\n                ['wheel', 'touchstart', 'keydown', 'mousedown'].forEach(function (e) { window.addEventListener(e, stopp, { passive: true, once: true }); });\n                ziehe(weich ? 'smooth' : 'auto');\n                var runden = 0;\n                setTimeout(function () {\n                    var pruefe = setInterval(function () {\n                        if (benutzer) { clearInterval(pruefe); return; }\n                        runden++;\n                        if (Math.abs(ziel.getBoundingClientRect().top - abstand()) > 12) { ziehe('auto'); }\n                        if (runden >= 6) { clearInterval(pruefe); }\n                    }, 300);\n                }, weich ? 900 : 250);\n                return true;\n            }\n            document.addEventListener('click', function (ev) {\n                var l = ev.target.closest ? ev.target.closest('a[href=\"#fallstudie\"]') : null;\n                if (l && zurFallstudie(true)) { ev.preventDefault(); }\n            });\n            if (window.location.hash === '#fallstudie') {\n                if (window.history && history.replaceState) {\n                    history.replaceState(null, '', window.location.pathname + window.location.search);\n                }\n                setTimeout(function () { zurFallstudie(false); }, 150);\n            }\n            root.querySelectorAll('a.hero-case-study__marker').forEach(function (m) {\n                m.addEventListener('mouseenter', function () {\n                    setze(parseInt(m.getAttribute('data-index'), 10));\n                });\n            });\n        })();\n        <\/script>\n    <\/section>\n\n\n    <section id=\"block_ab86e69b27a9f0c1c5f44b7bacf37fee\"\n             class=\"features-grid section\"             data-section data-theme=\"light\">\n\n        <div class=\"features-grid__inner container\">\n\n            <div class=\"features-grid__header\">\n                                    <p class=\"features-grid__tag title-tag\">The challenge<\/p>\n                \n                                    <h2 class=\"features-grid__title h-40 h-32-m\">Starting point and challenges<\/h2>\n                            <\/div>\n\n                            <div class=\"features-grid__carousel\" data-aos=\"cards-fan\" data-aos-once=\"false\">\n                    <div class=\"features-grid__swiper swiper\" data-swiper-modules=\"navigation\">\n                        <div class=\"swiper-wrapper\">\n                                                            <div class=\"swiper-slide features-grid__item\"\n                                     style=\"--i: 0\">\n                                    <div class=\"features-grid__item-top\">\n                                                                                    <figure class=\"features-grid__icon m-contain\">\n                                                <img decoding=\"async\" width=\"20\" height=\"20\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/fluent_code-block-24-filled.svg 20w\" sizes=\"auto, (max-width: 20px) 100vw, 20px\" title=\"fluent_code-block-24-filled\" \/>                                            <\/figure>\n                                        \n                                        <p class=\"features-grid__number\">01<\/p>\n                                    <\/div>\n\n                                    <div class=\"features-grid__item-text\">\n                                                                                    <h3 class=\"features-grid__item-title h-22 h-20-m\">In-house system without documentation<\/h3>\n                                        \n                                                                                    <div class=\"features-grid__item-desc txt-14\">The client had built the customer IAM system in-house more than 20 years earlier. There was no documentation.<\/div>\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide features-grid__item\"\n                                     style=\"--i: 1\">\n                                    <div class=\"features-grid__item-top\">\n                                                                                    <figure class=\"features-grid__icon m-contain\">\n                                                <img decoding=\"async\" width=\"20\" height=\"20\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_gear-fine-fill.svg 20w\" sizes=\"auto, (max-width: 20px) 100vw, 20px\" title=\"ph_gear-fine-fill\" \/>                                            <\/figure>\n                                        \n                                        <p class=\"features-grid__number\">02<\/p>\n                                    <\/div>\n\n                                    <div class=\"features-grid__item-text\">\n                                                                                    <h3 class=\"features-grid__item-title h-22 h-20-m\">Many customizations<\/h3>\n                                        \n                                                                                    <div class=\"features-grid__item-desc txt-14\">Over the years, numerous client-specific customizations had been added.<\/div>\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide features-grid__item\"\n                                     style=\"--i: 2\">\n                                    <div class=\"features-grid__item-top\">\n                                                                                    <figure class=\"features-grid__icon m-contain\">\n                                                <img decoding=\"async\" width=\"20\" height=\"20\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/heroicons_rocket-launch-16-solid.svg 20w\" sizes=\"auto, (max-width: 20px) 100vw, 20px\" title=\"heroicons_rocket-launch-16-solid\" \/>                                            <\/figure>\n                                        \n                                        <p class=\"features-grid__number\">03<\/p>\n                                    <\/div>\n\n                                    <div class=\"features-grid__item-text\">\n                                                                                    <h3 class=\"features-grid__item-title h-22 h-20-m\">Failed attempts<\/h3>\n                                        \n                                                                                    <div class=\"features-grid__item-desc txt-14\">Earlier attempts to replace the system had failed because of its complexity.<\/div>\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide features-grid__item\"\n                                     style=\"--i: 3\">\n                                    <div class=\"features-grid__item-top\">\n                                                                                    <figure class=\"features-grid__icon m-contain\">\n                                                <img decoding=\"async\" width=\"20\" height=\"20\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/fa6-solid_gauge-high.svg 20w\" sizes=\"auto, (max-width: 20px) 100vw, 20px\" title=\"fa6-solid_gauge-high\" \/>                                            <\/figure>\n                                        \n                                        <p class=\"features-grid__number\">04<\/p>\n                                    <\/div>\n\n                                    <div class=\"features-grid__item-text\">\n                                                                                    <h3 class=\"features-grid__item-title h-22 h-20-m\">Live operations<\/h3>\n                                        \n                                                                                    <div class=\"features-grid__item-desc txt-14\">Production with 65,000 customer accounts could not be disrupted at any time.<\/div>\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide features-grid__item\"\n                                     style=\"--i: 4\">\n                                    <div class=\"features-grid__item-top\">\n                                                                                    <figure class=\"features-grid__icon m-contain\">\n                                                <img decoding=\"async\" width=\"20\" height=\"20\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/icon-park-solid_all-application.svg 20w\" sizes=\"auto, (max-width: 20px) 100vw, 20px\" title=\"icon-park-solid_all-application\" \/>                                            <\/figure>\n                                        \n                                        <p class=\"features-grid__number\">05<\/p>\n                                    <\/div>\n\n                                    <div class=\"features-grid__item-text\">\n                                                                                    <h3 class=\"features-grid__item-title h-22 h-20-m\">More than 60 applications<\/h3>\n                                        \n                                                                                    <div class=\"features-grid__item-desc txt-14\">Every application depended on the old system and had to be switched over individually.<\/div>\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide features-grid__item\"\n                                     style=\"--i: 5\">\n                                    <div class=\"features-grid__item-top\">\n                                                                                    <figure class=\"features-grid__icon m-contain\">\n                                                <img decoding=\"async\" width=\"20\" height=\"20\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/ph_hard-drives-fill.svg 20w\" sizes=\"auto, (max-width: 20px) 100vw, 20px\" title=\"ph_hard-drives-fill\" \/>                                            <\/figure>\n                                        \n                                        <p class=\"features-grid__number\">06<\/p>\n                                    <\/div>\n\n                                    <div class=\"features-grid__item-text\">\n                                                                                    <h3 class=\"features-grid__item-title h-22 h-20-m\">Parallel operation<\/h3>\n                                        \n                                                                                    <div class=\"features-grid__item-desc txt-14\">The new environment had to be built and run alongside the legacy system.<\/div>\n                                                                            <\/div>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n\n                    <div class=\"features-grid__nav swiper-nav\">\n                        <button class=\"swiper-nav__btn swiper-nav__btn--prev\" type=\"button\" aria-label=\"Back\"><\/button>\n                        <button class=\"swiper-nav__btn swiper-nav__btn--next\" type=\"button\" aria-label=\"Continue\"><\/button>\n                    <\/div>\n                <\/div>\n            \n        <\/div>\n    <\/section>\n\n\n        <section id=\"block_5288b6b170d1c14b825554956cd57588\"\n                 class=\"accordion-approach section\"                 data-section data-theme=\"light\">\n\n            <div class=\"accordion-approach__inner container\">\n\n                <div class=\"accordion-approach__header section-header\">\n                                            <p class=\"accordion-approach__tag title-tag\">Our solution<\/p>\n                    \n                    <div class=\"accordion-approach__head-row section-header__row\">\n                                                    <h2 class=\"accordion-approach__title section-header__title h-40 h-32-m\">Our approach<\/h2>\n                                            <\/div>\n                <\/div>\n\n                <div class=\"accordion-approach__content\">\n\n                    <div class=\"accordion-approach__accordion\" data-accordion=\"single\" data-accordion-persistent data-section>\n                                                    <div class=\"accordion-approach__item accordion__item is-open\">\n                                <h3 class=\"accordion-approach__trigger-heading accordion__trigger-heading h-24 h-22-m\">Analysis without documentation                                    <button class=\"accordion-approach__trigger accordion__trigger\" type=\"button\"\n                                            aria-expanded=\"true\"\n                                            aria-label=\"Analysis without documentation\">\n                                        <span class=\"accordion-approach__icon accordion__icon\" aria-hidden=\"true\"><\/span>\n                                    <\/button>\n                                <\/h3>\n                                <div class=\"accordion-approach__panel accordion__panel\"\n                                     aria-hidden=\"false\">\n                                    <div class=\"accordion-approach__panel-inner accordion__panel-inner\">\n                                                                                    <div class=\"accordion-approach__text txt-14\">WertFels took over overall project management. As there was no documentation, we reconstructed how the legacy system behaved from stakeholder interviews and reverse engineering.<\/div>\n                                        \n                                                                                    <figure class=\"accordion-approach__mobile-image\">\n                                                <img decoding=\"async\" width=\"640\" height=\"814\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-m.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-m-300x382.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-m.jpg 640w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" title=\"migration-1-analyse-m\" \/>                                            <\/figure>\n                                        \n                                        <div class=\"accordion-approach__progress\">\n                                            <span class=\"accordion-approach__progress-bar\"><\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                    <div class=\"accordion-approach__item accordion__item \">\n                                <h3 class=\"accordion-approach__trigger-heading accordion__trigger-heading h-24 h-22-m\">Keycloak alongside the legacy system                                    <button class=\"accordion-approach__trigger accordion__trigger\" type=\"button\"\n                                            aria-expanded=\"false\"\n                                            aria-label=\"Keycloak alongside the legacy system\">\n                                        <span class=\"accordion-approach__icon accordion__icon\" aria-hidden=\"true\"><\/span>\n                                    <\/button>\n                                <\/h3>\n                                <div class=\"accordion-approach__panel accordion__panel\"\n                                     aria-hidden=\"true\">\n                                    <div class=\"accordion-approach__panel-inner accordion__panel-inner\">\n                                                                                    <div class=\"accordion-approach__text txt-14\">We built the new customer IAM platform on Keycloak in parallel with the existing environment. Applications sign in via OpenID Connect and OAuth 2.0.<\/div>\n                                        \n                                                                                    <figure class=\"accordion-approach__mobile-image\">\n                                                <img decoding=\"async\" width=\"640\" height=\"814\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-m.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-m-300x382.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-m.jpg 640w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" title=\"migration-2-parallel-m\" \/>                                            <\/figure>\n                                        \n                                        <div class=\"accordion-approach__progress\">\n                                            <span class=\"accordion-approach__progress-bar\"><\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                    <div class=\"accordion-approach__item accordion__item \">\n                                <h3 class=\"accordion-approach__trigger-heading accordion__trigger-heading h-24 h-22-m\">Migrating customer accounts                                    <button class=\"accordion-approach__trigger accordion__trigger\" type=\"button\"\n                                            aria-expanded=\"false\"\n                                            aria-label=\"Migrating customer accounts\">\n                                        <span class=\"accordion-approach__icon accordion__icon\" aria-hidden=\"true\"><\/span>\n                                    <\/button>\n                                <\/h3>\n                                <div class=\"accordion-approach__panel accordion__panel\"\n                                     aria-hidden=\"true\">\n                                    <div class=\"accordion-approach__panel-inner accordion__panel-inner\">\n                                                                                    <div class=\"accordion-approach__text txt-14\">We migrated the 65,000 customer accounts from the legacy system to Keycloak.<\/div>\n                                        \n                                                                                    <figure class=\"accordion-approach__mobile-image\">\n                                                <img decoding=\"async\" width=\"640\" height=\"814\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-m.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-m-300x382.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-m.jpg 640w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" title=\"migration-3-konten-m\" \/>                                            <\/figure>\n                                        \n                                        <div class=\"accordion-approach__progress\">\n                                            <span class=\"accordion-approach__progress-bar\"><\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                    <div class=\"accordion-approach__item accordion__item \">\n                                <h3 class=\"accordion-approach__trigger-heading accordion__trigger-heading h-24 h-22-m\">Switching application by application                                    <button class=\"accordion-approach__trigger accordion__trigger\" type=\"button\"\n                                            aria-expanded=\"false\"\n                                            aria-label=\"Switching application by application\">\n                                        <span class=\"accordion-approach__icon accordion__icon\" aria-hidden=\"true\"><\/span>\n                                    <\/button>\n                                <\/h3>\n                                <div class=\"accordion-approach__panel accordion__panel\"\n                                     aria-hidden=\"true\">\n                                    <div class=\"accordion-approach__panel-inner accordion__panel-inner\">\n                                                                                    <div class=\"accordion-approach__text txt-14\">We switched over more than 60 applications one after another, each following the WertFels Application Onboarding Engine process. This took eight months, without a single production outage.<\/div>\n                                        \n                                                                                    <figure class=\"accordion-approach__mobile-image\">\n                                                <img decoding=\"async\" width=\"640\" height=\"814\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-m.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-m-300x382.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-m.jpg 640w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" title=\"migration-4-schwenk-m\" \/>                                            <\/figure>\n                                        \n                                        <div class=\"accordion-approach__progress\">\n                                            <span class=\"accordion-approach__progress-bar\"><\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                                    <div class=\"accordion-approach__item accordion__item \">\n                                <h3 class=\"accordion-approach__trigger-heading accordion__trigger-heading h-24 h-22-m\">Shutdown after more than 20 years                                    <button class=\"accordion-approach__trigger accordion__trigger\" type=\"button\"\n                                            aria-expanded=\"false\"\n                                            aria-label=\"Shutdown after more than 20 years\">\n                                        <span class=\"accordion-approach__icon accordion__icon\" aria-hidden=\"true\"><\/span>\n                                    <\/button>\n                                <\/h3>\n                                <div class=\"accordion-approach__panel accordion__panel\"\n                                     aria-hidden=\"true\">\n                                    <div class=\"accordion-approach__panel-inner accordion__panel-inner\">\n                                                                                    <div class=\"accordion-approach__text txt-14\">After the last switch-over, the legacy system was shut down and the servers decommissioned.<\/div>\n                                        \n                                                                                    <figure class=\"accordion-approach__mobile-image\">\n                                                <img decoding=\"async\" width=\"640\" height=\"814\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-m.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-m-300x382.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-m.jpg 640w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" title=\"migration-5-abschaltung-m\" \/>                                            <\/figure>\n                                        \n                                        <div class=\"accordion-approach__progress\">\n                                            <span class=\"accordion-approach__progress-bar\"><\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                                            <\/div>\n\n                    <div class=\"accordion-approach__swiper swiper\" data-swiper-modules=\"autoplay, effectFade\">\n                        <div class=\"swiper-wrapper\">\n                                                            <figure class=\"swiper-slide accordion-approach__slide-image m-contain\">\n                                    <img decoding=\"async\" width=\"1462\" height=\"1184\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-d.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-d-1440x1166.jpg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-d-1280x1037.jpg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-d-767x621.jpg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-d-300x243.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-1-analyse-d.jpg 1462w\" sizes=\"auto, (max-width: 1462px) 100vw, 1462px\" title=\"migration-1-analyse-d\" \/>                                <\/figure>\n                                                            <figure class=\"swiper-slide accordion-approach__slide-image m-contain\">\n                                    <img decoding=\"async\" width=\"1462\" height=\"1184\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-d.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-d-1440x1166.jpg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-d-1280x1037.jpg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-d-767x621.jpg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-d-300x243.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-2-parallel-d.jpg 1462w\" sizes=\"auto, (max-width: 1462px) 100vw, 1462px\" title=\"migration-2-parallel-d\" \/>                                <\/figure>\n                                                            <figure class=\"swiper-slide accordion-approach__slide-image m-contain\">\n                                    <img decoding=\"async\" width=\"1462\" height=\"1184\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-d.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-d-1440x1166.jpg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-d-1280x1037.jpg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-d-767x621.jpg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-d-300x243.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-3-konten-d.jpg 1462w\" sizes=\"auto, (max-width: 1462px) 100vw, 1462px\" title=\"migration-3-konten-d\" \/>                                <\/figure>\n                                                            <figure class=\"swiper-slide accordion-approach__slide-image m-contain\">\n                                    <img decoding=\"async\" width=\"1462\" height=\"1184\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-d.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-d-1440x1166.jpg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-d-1280x1037.jpg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-d-767x621.jpg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-d-300x243.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-4-schwenk-d.jpg 1462w\" sizes=\"auto, (max-width: 1462px) 100vw, 1462px\" title=\"migration-4-schwenk-d\" \/>                                <\/figure>\n                                                            <figure class=\"swiper-slide accordion-approach__slide-image m-contain\">\n                                    <img decoding=\"async\" width=\"1462\" height=\"1184\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-d.jpg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-d-1440x1166.jpg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-d-1280x1037.jpg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-d-767x621.jpg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-d-300x243.jpg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/migration-5-abschaltung-d.jpg 1462w\" sizes=\"auto, (max-width: 1462px) 100vw, 1462px\" title=\"migration-5-abschaltung-d\" \/>                                <\/figure>\n                                                    <\/div>\n                    <\/div>\n\n                <\/div>\n\n            <\/div>\n        <\/section>\n    \n\n    <section id=\"block_434eff4523238fa0160e49a41fd55cbd\"\n             class=\"stats-dashboard section\"             data-section data-theme=\"light\">\n\n        <div class=\"stats-dashboard__inner container\">\n\n            <div class=\"stats-dashboard__header section-header\">\n                                    <p class=\"stats-dashboard__tag title-tag\">The results<\/p>\n                \n                                    <div class=\"stats-dashboard__head-row section-header__row\">\n                        <h2 class=\"stats-dashboard__title section-header__title h-40 h-32-m\">The results<\/h2>\n                    <\/div>\n                            <\/div>\n\n            <div class=\"stats-dashboard__grid\">\n\n                                    <div class=\"stats-dashboard__card stats-dashboard__card--coverage\">\n                                                    <p class=\"stats-dashboard__label\">\n                                Results 2023 to 2025                            <\/p>\n                        \n                        <div class=\"stats-dashboard__ring-wrap\">\n                                    <svg class=\"stats-dashboard__ring stats-dashboard__ring--lg\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n                                            <defs>\n                    <linearGradient id=\"stats-dashboard-ring-gradient\" x1=\"-74.4%\" y1=\"100.26%\" x2=\"152.32%\" y2=\"8.66%\">\n                        <stop offset=\"0%\" stop-color=\"#020D1A\" \/>\n                        <stop offset=\"53.13%\" stop-color=\"#204DFF\" \/>\n                        <stop offset=\"100%\" stop-color=\"#7E67ED\" \/>\n                    <\/linearGradient>\n                <\/defs>\n                        <circle class=\"stats-dashboard__ring-track\" cx=\"50\" cy=\"50\" r=\"42\" \/>\n            <circle class=\"stats-dashboard__ring-fill\" cx=\"50\" cy=\"50\" r=\"42\"\n                    stroke-dasharray=\"263.89378290154\"\n                    stroke-dashoffset=\"0\" \/>\n        <\/svg>\n                                    <p class=\"stats-dashboard__ring-number\">\n                                100%\n                            <\/p>\n                        <\/div>\n\n                        <div class=\"stats-dashboard__text\">\n                                                            <p class=\"stats-dashboard__card-title h-24 h-22-m\">\n                                    Applications switched                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__card-text txt-16\">\n                                    <p>all applications moved from the legacy system to Keycloak<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                \n                                    <div class=\"stats-dashboard__card stats-dashboard__card--accounts\">\n                        <div class=\"stats-dashboard__stat\">\n                                                            <p class=\"stats-dashboard__number\">\n                                    65,000                                <\/p>\n                            \n                            <div class=\"stats-dashboard__bar-visual\" style=\"--percent: 100%\"><\/div>\n                        <\/div>\n\n                        <div class=\"stats-dashboard__text\">\n                                                            <p class=\"stats-dashboard__card-title h-24 h-22-m\">\n                                    Customer accounts                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__card-text txt-16\">\n                                    <p>migrated to Keycloak<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                \n                                    <div class=\"stats-dashboard__card stats-dashboard__card--complaints\">\n                        <div class=\"stats-dashboard__stat\">\n                                                            <p class=\"stats-dashboard__number\">\n                                    0                                <\/p>\n                            \n                                                            <figure class=\"stats-dashboard__icon m-contain\">\n                                    <img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/Group.svg 52w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" title=\"Group\" \/>                                <\/figure>\n                                                    <\/div>\n\n                        <div class=\"stats-dashboard__text\">\n                                                            <p class=\"stats-dashboard__card-title h-24 h-22-m\">\n                                    Production outages                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__card-text txt-16\">\n                                    <p>during the entire switch-over<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                \n                                    <div class=\"stats-dashboard__card stats-dashboard__card--mfa\">\n                        <div class=\"stats-dashboard__stat\">\n                            <p class=\"stats-dashboard__number\">\n                                100%\n                            <\/p>\n\n                            <div class=\"stats-dashboard__ring-wrap stats-dashboard__ring-wrap--sm\">\n                                        <svg class=\"stats-dashboard__ring stats-dashboard__ring--sm\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n                                            <defs>\n                    <linearGradient id=\"stats-dashboard-ring-gradient-sm\" x1=\"-5.23%\" y1=\"244.87%\" x2=\"222.84%\" y2=\"151.82%\">\n                        <stop offset=\"0%\" stop-color=\"#020D1A\" \/>\n                        <stop offset=\"49.04%\" stop-color=\"#204DFF\" \/>\n                        <stop offset=\"92.31%\" stop-color=\"#7E67ED\" \/>\n                    <\/linearGradient>\n                <\/defs>\n                        <circle class=\"stats-dashboard__ring-track\" cx=\"50\" cy=\"50\" r=\"42\" \/>\n            <circle class=\"stats-dashboard__ring-fill\" cx=\"50\" cy=\"50\" r=\"42\"\n                    stroke-dasharray=\"263.89378290154\"\n                    stroke-dashoffset=\"0\" \/>\n        <\/svg>\n                                    <\/div>\n                        <\/div>\n\n                        <div class=\"stats-dashboard__text\">\n                                                            <p class=\"stats-dashboard__card-title h-24 h-22-m\">\n                                    Decommissioning                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__card-text txt-16\">\n                                    <p>legacy system shut down, servers decommissioned<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                \n                                    <div class=\"stats-dashboard__card stats-dashboard__card--permissions\">\n                        <div class=\"stats-dashboard__stat\">\n                            <p class=\"stats-dashboard__number\">\n                                100%\n                            <\/p>\n\n                            <div class=\"stats-dashboard__progress\">\n                                <div class=\"stats-dashboard__progress-bar\" style=\"width: 100%\"><\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"stats-dashboard__text\">\n                                                            <p class=\"stats-dashboard__card-title h-24 h-22-m\">\n                                    Project management                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__card-text txt-16\">\n                                    <p>by WertFels<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                \n                                    <div class=\"stats-dashboard__card stats-dashboard__card--timeline\">\n                        <div class=\"stats-dashboard__stat\">\n                                                            <p class=\"stats-dashboard__number\">\n                                    8 months                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__timeline\">\n                                    <div class=\"stats-dashboard__timeline-track\"><\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M1<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M2<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M3<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M4<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M5<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M6<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M7<\/span>\n                                        <\/div>\n                                                                            <div class=\"stats-dashboard__timeline-mark\">\n                                            <span class=\"stats-dashboard__timeline-dot\"><\/span>\n                                            <span class=\"stats-dashboard__timeline-label\">M8<\/span>\n                                        <\/div>\n                                                                    <\/div>\n                                                    <\/div>\n\n                        <div class=\"stats-dashboard__text\">\n                                                            <p class=\"stats-dashboard__card-title h-24 h-22-m\">\n                                    Switch-over of all applications                                <\/p>\n                            \n                                                            <div class=\"stats-dashboard__card-text txt-16\">\n                                    <p>one application after another<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                \n            <\/div>\n\n        <\/div>\n    <\/section>\n\n\n\n\n        <section id=\"block_0bcc56519dc574d71ece0058f17d02e6\"\n                 class=\"portfolio-teaser section\"                 data-section data-theme=\"light\">\n\n            <div class=\"portfolio-teaser__inner container\">\n\n                <div class=\"portfolio-teaser__header section-header\">\n                                            <p class=\"portfolio-teaser__tag title-tag\">More success stories<\/p>\n                    \n                    <div class=\"portfolio-teaser__head-row section-header__row\">\n                                                    <h2 class=\"portfolio-teaser__title section-header__title h-40 h-32-m\">More case studies<\/h2>\n                        \n                                            <\/div>\n                <\/div>\n\n                <div class=\"portfolio-teaser__carousel\">\n                    <div class=\"portfolio-teaser__swiper swiper\" data-swiper-modules=\"navigation\">\n                        <div class=\"swiper-wrapper\">\n                                                            <div class=\"swiper-slide portfolio-teaser__slide\">\n                                    <div class=\"portfolio-teaser__card\">\n                                        <div class=\"portfolio-teaser__card-content\">\n                                                                                            <p class=\"portfolio-teaser__category\">Privileged Access Management<\/p>\n                                            \n                                            <div class=\"portfolio-teaser__card-text\">\n                                                <div class=\"portfolio-teaser__card-title-group\">\n                                                    <h3 class=\"portfolio-teaser__card-title h-28 h-24-m\">3,200 privileged accounts secured in 6 months<\/h3>\n\n                                                                                                            <div class=\"portfolio-teaser__excerpt txt-16\">Privileged access management for a German financial services group, with 100% PAM coverage of all privileged accounts.<\/div>\n                                                                                                    <\/div>\n\n                                                                                                    <a href=\"https:\/\/wertfels.com\/en\/projekte\/pam-transformation-german-bank\/\"\n                                                       class=\"btn btn--arrow\">View case study<\/a>\n                                                                                            <\/div>\n                                        <\/div>\n\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide portfolio-teaser__slide\">\n                                    <div class=\"portfolio-teaser__card\">\n                                        <div class=\"portfolio-teaser__card-content\">\n                                                                                            <p class=\"portfolio-teaser__category\">Identity Governance<\/p>\n                                            \n                                            <div class=\"portfolio-teaser__card-text\">\n                                                <div class=\"portfolio-teaser__card-title-group\">\n                                                    <h3 class=\"portfolio-teaser__card-title h-28 h-24-m\">38 use cases designed for a central IAM in public administration<\/h3>\n\n                                                                                                            <div class=\"portfolio-teaser__excerpt txt-16\">Two integrated platforms, Garancy for identities and DirX for accounts and roles, plus 38 use cases and a six-stage release plan.<\/div>\n                                                                                                    <\/div>\n\n                                                                                                    <a href=\"https:\/\/wertfels.com\/en\/projekte\/iam-design-public-administration\/\"\n                                                       class=\"btn btn--arrow\">View case study<\/a>\n                                                                                            <\/div>\n                                        <\/div>\n\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide portfolio-teaser__slide\">\n                                    <div class=\"portfolio-teaser__card\">\n                                        <div class=\"portfolio-teaser__card-content\">\n                                                                                            <p class=\"portfolio-teaser__category\">IAM Migration<\/p>\n                                            \n                                            <div class=\"portfolio-teaser__card-text\">\n                                                <div class=\"portfolio-teaser__card-title-group\">\n                                                    <h3 class=\"portfolio-teaser__card-title h-28 h-24-m\">Legacy customer IAM replaced by Keycloak after more than 20 years<\/h3>\n\n                                                                                                            <div class=\"portfolio-teaser__excerpt txt-16\">65,000 customer accounts and more than 60 applications moved from an in-house system to Keycloak, without a production outage.<\/div>\n                                                                                                    <\/div>\n\n                                                                                                    <a href=\"#fallstudie\"\n                                                       class=\"btn btn--arrow\">View case study<\/a>\n                                                                                            <\/div>\n                                        <\/div>\n\n                                                                            <\/div>\n                                <\/div>\n                                                            <div class=\"swiper-slide portfolio-teaser__slide\">\n                                    <div class=\"portfolio-teaser__card\">\n                                        <div class=\"portfolio-teaser__card-content\">\n                                                                                            <p class=\"portfolio-teaser__category\">Application Onboarding<\/p>\n                                            \n                                            <div class=\"portfolio-teaser__card-text\">\n                                                <div class=\"portfolio-teaser__card-title-group\">\n                                                    <h3 class=\"portfolio-teaser__card-title h-28 h-24-m\">2,500 applications onboarded to SailPoint IdentityIQ<\/h3>\n\n                                                                                                            <div class=\"portfolio-teaser__excerpt txt-16\">For a German financial services group: a standardized process, classification by effort and a mandatory security test before every release.<\/div>\n                                                                                                    <\/div>\n\n                                                                                                    <a href=\"https:\/\/wertfels.com\/en\/projekte\/application-onboarding-sailpoint-2\/\"\n                                                       class=\"btn btn--arrow\">View case study<\/a>\n                                                                                            <\/div>\n                                        <\/div>\n\n                                                                            <\/div>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n\n                    <div class=\"portfolio-teaser__nav swiper-nav\">\n                        <button class=\"swiper-nav__btn swiper-nav__btn--prev\" type=\"button\" aria-label=\"Back\"><\/button>\n                        <button class=\"swiper-nav__btn swiper-nav__btn--next\" type=\"button\" aria-label=\"Continue\"><\/button>\n                    <\/div>\n                <\/div>\n\n            <\/div>\n        <\/section>\n    \n\n    <section id=\"contact\"\n             class=\"cta-contact-form section\"             data-section data-theme=\"light\">\n\n        <div class=\"cta-contact-form__inner container\">\n            <div class=\"cta-contact-form__panel\">\n                                    <figure class=\"cta-contact-form__bg m-cover\">\n                        <img decoding=\"async\" width=\"2720\" height=\"1058\" src=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1.png\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1-1920x747.png 1920w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1-1440x560.png 1440w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1-1280x498.png 1280w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1-767x298.png 767w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1-300x117.png 300w, https:\/\/wertfels.com\/wp-content\/uploads\/2026\/08\/tg_image_195989443-1-1.png 2720w\" sizes=\"auto, (max-width: 2720px) 100vw, 2720px\" title=\"tg_image_195989443 1\" \/>                    <\/figure>\n                \n                <div class=\"cta-contact-form__header\">\n                                            <p class=\"cta-contact-form__tag title-tag\">Ready for the next step<\/p>\n                    \n                                            <div class=\"cta-contact-form__text-group\">\n                                                            <h2 class=\"cta-contact-form__title h-40 h-32-m\">Your next project<\/h2>\n                            \n                                                            <div class=\"cta-contact-form__text txt-16 txt-16-m\">Tell us briefly about your project. We will get back to you and discuss where your IAM stands today.<\/div>\n                                                    <\/div>\n                                    <\/div>\n\n                                    <div class=\"cta-contact-form__form-wrap cf7\">\n                        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f1445-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"1445\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/case_study\/1384#wpcf7-f1445-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"1445\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.2.3\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f1445-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<label class=\"w-50\">\n<span class=\"label\">* Name<\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Enter your name\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span>\n<\/label>\n\n<label class=\"w-50\">\n<span class=\"label\">* Email<\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Enter your email address\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n<\/label>\n\n<label class=\"w-50\">\n<span class=\"label\">* Company name<\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Enter your company name\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span>\n<\/label>\n\n<label class=\"w-50\">\n<span class=\"label\">* Industry<\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-industry\"><select class=\"wpcf7-form-control wpcf7-select wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" name=\"your-industry\"><option value=\"\">Select industry<\/option><option value=\"Banking\">Banking<\/option><option value=\"Insurance\">Insurance<\/option><option value=\"Financial services\">Financial services<\/option><option value=\"Automotive\">Automotive<\/option><option value=\"Public sector\">Public sector<\/option><option value=\"Other\">Other<\/option><\/select><\/span>\n<\/label>\n\n<label>\n<span class=\"label\">Message<\/span>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" placeholder=\"Your message\" name=\"your-message\"><\/textarea><\/span>\n<\/label>\n<div class=\"wpcf7-turnstile cf-turnstile\" data-appearance=\"interaction-only\" data-theme=\"light\" data-size=\"flexible\" data-before-interactive-callback=\"wfTsZeigen\" data-sitekey=\"0x4AAAAAAE0D1HVD3x9dyaaX\" data-response-field-name=\"_wpcf7_turnstile_response\"><\/div>\n<button class=\"wpcf7-form-control wpcf7-submit has-spinner btn btn--arrow\" type=\"submit\" value=\"Book an initial call\">Book an initial call<\/button><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n                        <div class=\"cf7-thanks\">\n                            <span class=\"cf7-thanks__icon\" aria-hidden=\"true\"><\/span>\n\n                                                            <p class=\"cf7-thanks__title h-28 h-24-m\">Thank you for your inquiry<\/p>\n                            \n                                                            <div class=\"cf7-thanks__text txt-16\">\n                                    <p>Your message has been sent.\u2028 Our team will get back to you as soon as possible.<\/p>\n                                <\/div>\n                                                    <\/div>\n                    <\/div>\n                            <\/div>\n        <\/div>\n    <\/section>\n","protected":false},"excerpt":{"rendered":"<p>65,000 customer accounts and more than 60 applications moved from an in-house system to Keycloak, without a production outage.<\/p>\n","protected":false},"featured_media":0,"template":"","case_study_category":[8],"case_study_tag":[],"class_list":["post-1384","case_study","type-case_study","status-publish","hentry","case_study_category-iam-migration-transformation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Customer IAM migrated to Keycloak | WertFels<\/title>\n<meta name=\"description\" content=\"Case study: an in-house customer IAM system replaced by Keycloak after more than 20 years. 65,000 customer accounts and more than 60 applications, no production outage.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Customer IAM migrated to Keycloak | WertFels\" \/>\n<meta property=\"og:description\" content=\"Case study: an in-house customer IAM system replaced by Keycloak after more than 20 years. 65,000 customer accounts and more than 60 applications, no production outage.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/\" \/>\n<meta property=\"og:site_name\" content=\"WertFels\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/projekte\\\/ciam-migration-keycloak\\\/\",\"url\":\"https:\\\/\\\/wertfels.com\\\/en\\\/projekte\\\/ciam-migration-keycloak\\\/\",\"name\":\"Customer IAM migrated to Keycloak | WertFels\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/#website\"},\"datePublished\":\"2026-09-26T18:57:39+00:00\",\"description\":\"Case study: an in-house customer IAM system replaced by Keycloak after more than 20 years. 65,000 customer accounts and more than 60 applications, no production outage.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/projekte\\\/ciam-migration-keycloak\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wertfels.com\\\/en\\\/projekte\\\/ciam-migration-keycloak\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/projekte\\\/ciam-migration-keycloak\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wertfels.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Legacy customer IAM replaced by Keycloak after more than 20 years\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/wertfels.com\\\/en\\\/\",\"name\":\"WertFels\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/#organization\",\"name\":\"WertFels GmbH\",\"alternateName\":\"WertFels\",\"url\":\"https:\\\/\\\/wertfels.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wertfels.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wertfels-logo-696.png\",\"contentUrl\":\"https:\\\/\\\/wertfels.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wertfels-logo-696.png\",\"width\":696,\"height\":696,\"caption\":\"WertFels GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/wertfels.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/wertfels-gmbh\"],\"legalName\":\"WertFels GmbH\",\"description\":\"Beratungshaus f\u00fcr Identity und Access Management. Schwerpunkt sind Banken, Versicherer und weitere regulierte Branchen, dazu Non-Human Identities und agentische KI.\",\"email\":\"info@wertfels.com\",\"telephone\":\"+49 89 244102321\",\"vatID\":\"DE328699375\",\"foundingDate\":\"2020-01-20\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Schellingstra\u00dfe 109a\",\"postalCode\":\"80798\",\"addressLocality\":\"M\u00fcnchen\",\"addressCountry\":\"DE\"},\"identifier\":{\"@type\":\"PropertyValue\",\"name\":\"Handelsregister\",\"value\":\"HRB 31625, Amtsgericht Wiesbaden\"},\"areaServed\":[{\"@type\":\"Country\",\"name\":\"Deutschland\"},{\"@type\":\"Country\",\"name\":\"\u00d6sterreich\"},{\"@type\":\"Country\",\"name\":\"Schweiz\"}],\"knowsAbout\":[\"Identity und Access Management\",\"Identity Governance und Administration\",\"Privileged Access Management\",\"Non-Human Identities\",\"Agentische KI\",\"DORA\",\"NIS2\",\"BAIT und VAIT\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"contactType\":\"Vertrieb\",\"telephone\":\"+49 89 244102321\",\"email\":\"info@wertfels.com\",\"availableLanguage\":[\"de\",\"en\"],\"areaServed\":[\"DE\",\"AT\",\"CH\"]}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Customer IAM migrated to Keycloak | WertFels","description":"Case study: an in-house customer IAM system replaced by Keycloak after more than 20 years. 65,000 customer accounts and more than 60 applications, no production outage.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/","og_locale":"en_US","og_type":"article","og_title":"Customer IAM migrated to Keycloak | WertFels","og_description":"Case study: an in-house customer IAM system replaced by Keycloak after more than 20 years. 65,000 customer accounts and more than 60 applications, no production outage.","og_url":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/","og_site_name":"WertFels","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/","url":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/","name":"Customer IAM migrated to Keycloak | WertFels","isPartOf":{"@id":"https:\/\/wertfels.com\/en\/#website"},"datePublished":"2026-09-26T18:57:39+00:00","description":"Case study: an in-house customer IAM system replaced by Keycloak after more than 20 years. 65,000 customer accounts and more than 60 applications, no production outage.","breadcrumb":{"@id":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wertfels.com\/en\/projekte\/ciam-migration-keycloak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wertfels.com\/en\/"},{"@type":"ListItem","position":2,"name":"Legacy customer IAM replaced by Keycloak after more than 20 years"}]},{"@type":"WebSite","@id":"https:\/\/wertfels.com\/en\/#website","url":"https:\/\/wertfels.com\/en\/","name":"WertFels","description":"","publisher":{"@id":"https:\/\/wertfels.com\/en\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/wertfels.com\/en\/#organization","name":"WertFels GmbH","alternateName":"WertFels","url":"https:\/\/wertfels.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wertfels.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/wertfels-logo-696.png","contentUrl":"https:\/\/wertfels.com\/wp-content\/uploads\/2026\/09\/wertfels-logo-696.png","width":696,"height":696,"caption":"WertFels GmbH"},"image":{"@id":"https:\/\/wertfels.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/wertfels-gmbh"],"legalName":"WertFels GmbH","description":"Beratungshaus f\u00fcr Identity und Access Management. Schwerpunkt sind Banken, Versicherer und weitere regulierte Branchen, dazu Non-Human Identities und agentische KI.","email":"info@wertfels.com","telephone":"+49 89 244102321","vatID":"DE328699375","foundingDate":"2020-01-20","address":{"@type":"PostalAddress","streetAddress":"Schellingstra\u00dfe 109a","postalCode":"80798","addressLocality":"M\u00fcnchen","addressCountry":"DE"},"identifier":{"@type":"PropertyValue","name":"Handelsregister","value":"HRB 31625, Amtsgericht Wiesbaden"},"areaServed":[{"@type":"Country","name":"Deutschland"},{"@type":"Country","name":"\u00d6sterreich"},{"@type":"Country","name":"Schweiz"}],"knowsAbout":["Identity und Access Management","Identity Governance und Administration","Privileged Access Management","Non-Human Identities","Agentische KI","DORA","NIS2","BAIT und VAIT"],"contactPoint":{"@type":"ContactPoint","contactType":"Vertrieb","telephone":"+49 89 244102321","email":"info@wertfels.com","availableLanguage":["de","en"],"areaServed":["DE","AT","CH"]}}]}},"_links":{"self":[{"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/case_study\/1384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/case_study"}],"about":[{"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/types\/case_study"}],"version-history":[{"count":0,"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/case_study\/1384\/revisions"}],"wp:attachment":[{"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/media?parent=1384"}],"wp:term":[{"taxonomy":"case_study_category","embeddable":true,"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/case_study_category?post=1384"},{"taxonomy":"case_study_tag","embeddable":true,"href":"https:\/\/wertfels.com\/en\/wp-json\/wp\/v2\/case_study_tag?post=1384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}