{"id":48261,"date":"2026-07-22T11:36:45","date_gmt":"2026-07-22T09:36:45","guid":{"rendered":"https:\/\/device-insight.com\/?page_id=48261"},"modified":"2026-08-11T10:37:35","modified_gmt":"2026-08-11T08:37:35","slug":"modernization-self-assessment","status":"publish","type":"page","link":"https:\/\/device-insight.com\/en\/modernization-self-assessment\/","title":{"rendered":"Modernization Self-Assessment"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"48261\" class=\"elementor elementor-48261 elementor-48260\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-740df150 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"740df150\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5c0c8f23\" data-id=\"5c0c8f23\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a11b15 elementor-widget elementor-widget-spacer\" data-id=\"5a11b15\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c84dfb4 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"6c84dfb4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">5-Minute-Check<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32adeb7 elementor-widget elementor-widget-heading\" data-id=\"32adeb7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Modernization Self-Assessment<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24a6dc56 elementor-widget elementor-widget-text-editor\" data-id=\"24a6dc56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Get a clear picture of where your IT infrastructure stands today and identify the modernization areas with the greatest business impact. Your personal Modernization Scorecard provides an initial assessment and clear next steps.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d622838 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d622838\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dad4f96\" data-id=\"dad4f96\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-73c578c elementor-widget elementor-widget-html\" data-id=\"73c578c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Open+Sans:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#diaApp {\n  --anthrazit: #474E55;\n  --orange: #ff5800;\n  --bg: #ffffff;\n  --box-bg: #eceef0;        \/* helles Grau der Content-Boxen aus Slide.pdf *\/\n  --border: #d5d9dd;\n\n  \/* Dimensionsfarben aus Slide.pdf (Step 01 - Step 05) *\/\n  --dim1: #377AAD;  \/* Blau     - Legacy-Risiko *\/\n  --dim2: #3c8c78;  \/* Gr\u00fcn    - Cloud-Readiness *\/\n  --dim3: #6246B4;  \/* Lila     - IoT\/Edge *\/\n  --dim4: #BA0D80;  \/* Magenta  - Datenplattform *\/\n  --dim5: #322368;  \/* Dunkelviolett - Betriebsmodell *\/\n\n  \/* Ampel *\/\n  --ampel-rot: #d64541;\n  --ampel-gelb: #e8a33d;\n  --ampel-gr\u00fcn: #3c8c78;\n\n  font-family:'Open Sans',sans-serif;background:var(--bg);color:var(--anthrazit);line-height:1.5;\n  max-width:960px;margin:0 auto;padding:32px 20px 80px;\n}\n#diaApp *,#diaApp *::before,#diaApp *::after{box-sizing:border-box;margin:0;padding:0}\n\n\/* \u2500\u2500 Step-Navigation (Stil Slide.pdf) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#diaApp .dia-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:28px}\n#diaApp .dia-step{position:relative;padding:10px 12px;font-size:12.5px;font-weight:700;color:#fff;cursor:pointer;border:none;text-align:left;font-family:inherit;opacity:.45;transition:opacity .15s}\n#diaApp .dia-step.active{opacity:1}\n#diaApp .dia-step.done{opacity:.8}\n#diaApp .dia-step.done::before{content:'\\2713';position:absolute;top:8px;right:10px;font-size:11px}\n\/* Pfeil unten wie in Slide.pdf *\/\n#diaApp .dia-step::after{content:'';position:absolute;left:16px;bottom:-8px;border:8px solid transparent;border-bottom:none;border-top-color:inherit}\n#diaApp .dia-step.s1{background:var(--dim1);border-top-color:var(--dim1);color:#fff}\n#diaApp .dia-step.s2{background:var(--dim2);border-top-color:var(--dim2)}\n#diaApp .dia-step.s3{background:var(--dim3);border-top-color:var(--dim3)}\n#diaApp .dia-step.s4{background:var(--dim4);border-top-color:var(--dim4)}\n#diaApp .dia-step.s5{background:var(--dim5);border-top-color:var(--dim5)}\n#diaApp .dia-step.s1::after{border-top-color:var(--dim1)}\n#diaApp .dia-step.s2::after{border-top-color:var(--dim2)}\n#diaApp .dia-step.s3::after{border-top-color:var(--dim3)}\n#diaApp .dia-step.s4::after{border-top-color:var(--dim4)}\n#diaApp .dia-step.s5::after{border-top-color:var(--dim5)}\n@media(max-width:640px){#diaApp .dia-steps{grid-template-columns:1fr;gap:6px}#diaApp .dia-step::after{display:none}}\n\n\/* \u2500\u2500 Dimensions-Header-Box (Anthrazit-F\u00fcllung, wei\u00dfe Schrift) \u2500\u2500 *\/\n#diaApp .dia-dimbox{background:var(--anthrazit);color:#fff;padding:16px 20px;margin-bottom:20px}\n#diaApp .dia-dimbox h2{font-size:18px;font-weight:700;color:#fff !important}\n#diaApp .dia-dimbox p{font-size:13px;color:#fff;opacity:.85;margin-top:4px}\n\n\/* \u2500\u2500 Fragen \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#diaApp .dia-q{background:var(--box-bg);padding:18px 20px;margin-bottom:14px}\n#diaApp .dia-q-label{font-size:15px;font-weight:700;margin-bottom:12px}\n#diaApp .dia-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px}\n@media(max-width:640px){#diaApp .dia-opts{grid-template-columns:1fr}}\n#diaApp .dia-opt{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--border);cursor:pointer;font-size:13.5px;transition:border-color .15s}\n#diaApp .dia-opt:hover{border-color:var(--anthrazit)}\n#diaApp .dia-opt.selected{border-color:var(--orange);border-width:2px;padding:9px 11px}\n#diaApp .dia-opt .dia-radio{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);flex-shrink:0;margin-top:2px;display:flex;align-items:center;justify-content:center}\n#diaApp .dia-opt.selected .dia-radio{border-color:var(--orange)}\n#diaApp .dia-opt.selected .dia-radio::after{content:'';width:7px;height:7px;border-radius:50%;background:var(--orange)}\n\n\/* \u2500\u2500 Buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#diaApp .dia-nav{display:flex;justify-content:space-between;margin-top:24px;gap:12px}\n#diaApp .dia-btn{padding:12px 28px;border-radius:24px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;transition:opacity .15s}\n#diaApp .dia-btn:hover{opacity:.88}\n#diaApp .dia-btn-primary{background:var(--orange);color:#fff;border:none}\n#diaApp .dia-btn-back{background:transparent;color:var(--anthrazit);border:2px solid var(--anthrazit)}\n#diaApp .dia-btn:disabled{opacity:.4;cursor:not-allowed}\n\n\/* \u2500\u2500 Ergebnis \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#diaApp .dia-result-hero{text-align:center;padding:32px 20px;background:var(--box-bg);margin-bottom:24px}\n#diaApp .dia-ampel{width:88px;height:88px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center}\n#diaApp .dia-ampel svg{width:44px;height:44px}\n#diaApp .dia-result-hero h2{font-size:22px;font-weight:700;margin-bottom:6px;color:var(--anthrazit) !important}\n#diaApp .dia-result-hero p{font-size:14px;max-width:520px;margin:0 auto}\n#diaApp .dia-radar-wrap{text-align:center;padding:8px 0 24px}\n\n\/* Gated section *\/\n#diaApp .dia-gate-wrap{position:relative}\n#diaApp .dia-gated{filter:blur(7px);pointer-events:none;user-select:none;transition:filter .4s}\n#diaApp .dia-gated.unlocked{filter:none;pointer-events:auto;user-select:auto}\n\n\/* Einzelergebnisse *\/\n#diaApp .dia-dimresult{display:flex;gap:14px;align-items:flex-start;background:var(--box-bg);padding:16px 18px;margin-bottom:12px}\n#diaApp .dia-dimresult .dia-dot{width:20px;height:20px;border-radius:50%;flex-shrink:0;margin-top:2px}\n#diaApp .dia-dimresult h3{font-size:15px;font-weight:700;margin-bottom:4px;color:var(--dim-color) !important}\n#diaApp .dia-dimresult p{font-size:13.5px}\n\n\/* Modal *\/\n#diaApp .dia-modal-overlay{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:center;padding-top:48px;z-index:10}\n#diaApp .dia-modal{background:#fff;border:1px solid var(--border);box-shadow:0 8px 40px rgba(71,78,85,.25);padding:28px;max-width:440px;width:calc(100% - 32px)}\n#diaApp .dia-modal h3{font-size:18px;font-weight:700;margin-bottom:6px;color:var(--anthrazit) !important}\n#diaApp .dia-modal p{font-size:13.5px;margin-bottom:18px}\n#diaApp .dia-modal input{width:100%;padding:11px 14px;border:1px solid var(--border);font-size:14px;font-family:inherit;margin-bottom:12px;color:var(--anthrazit)}\n#diaApp .dia-modal input:focus{outline:none;border-color:var(--orange)}\n#diaApp .dia-modal .dia-btn{width:100%}\n#diaApp .dia-modal .dia-privacy{font-size:11px;margin-top:10px;opacity:.7}\n\n\/* CTA *\/\n#diaApp .dia-cta{margin-top:28px;padding:24px;background:var(--anthrazit);text-align:center}\n#diaApp .dia-cta h3{color:#fff !important;font-size:18px;font-weight:700;margin-bottom:6px}\n#diaApp .dia-cta p{color:#fff;opacity:.85;font-size:13.5px;margin-bottom:16px;max-width:520px;margin-left:auto;margin-right:auto}\n<\/style>\n\n<div class=\"dia-app\" id=\"diaApp\">\n\n  <div class=\"dia-steps\" id=\"diaSteps\"><\/div>\n  <div id=\"diaPanels\"><\/div>\n\n<\/div>\n\n<!-- Calendly assets \u2013 widget is opened as a popup, see openCalendly() below -->\n<link rel=\"stylesheet\" href=\"https:\/\/assets.calendly.com\/assets\/external\/widget.css\">\n<script src=\"https:\/\/assets.calendly.com\/assets\/external\/widget.js\" async><\/script>\n\n<script>\nvar dims = [\n  { id: \"legacy\", color: \"#377AAD\", cls: \"s1\" },\n  { id: \"cloud\",  color: \"#3c8c78\", cls: \"s2\" },\n  { id: \"iot\",    color: \"#6246B4\", cls: \"s3\" },\n  { id: \"data\",   color: \"#BA0D80\", cls: \"s4\" },\n  { id: \"ops\",    color: \"#322368\", cls: \"s5\" }\n];\n\nvar TEXTS = {\n  dims: {\n    legacy: {\n      name: \"Legacy Risk\",\n      intro: \"How old are your core systems, and what level of operational risk do they pose?\",\n      questions: [\n        {q:\"How old are your business-critical core applications on average?\",\n         opts:[\"Over 15 years, partly undocumented\",\"10\u201315 years, maintenance becoming harder\",\"5\u201310 years, actively maintained\",\"Under 5 years, cloud-native architecture\"]},\n        {q:\"How would you describe the state of your technical debt?\",\n         opts:[\"Uncontrolled \u2013 we don't know the extent of the problem\",\"Known, but no budget or plan for reduction\",\"Partially addressed, roadmap in place\",\"Systematically managed, with continuous reduction\"]},\n        {q:\"Can your core applications be patched automatically?\",\n         opts:[\"No \u2013 patches are applied manually or not at all\",\"Partially \u2013 OS yes, applications no\",\"Mostly automated, with some exceptions\",\"Fully automated via CI\/CD pipelines\"]}\n      ]\n    },\n    cloud: {\n      name: \"Cloud Readiness\",\n      intro: \"How well is your infrastructure prepared for cloud operations?\",\n      questions: [\n        {q:\"What share of your production workloads runs in the cloud today?\",\n         opts:[\"Under 10 % \u2013 primarily on-premises\",\"10\u201330 % \u2013 initial workloads migrated\",\"30\u201360 % \u2013 cloud is the strategic platform\",\"Over 60 % \u2013 cloud-first is the standard\"]},\n        {q:\"Do you use Infrastructure as Code (IaC) for your infrastructure?\",\n         opts:[\"No \u2013 infrastructure is configured manually\",\"Occasionally, for selected projects\",\"For most cloud resources\",\"Fully \u2013 no manual provisioning\"]},\n        {q:\"How is your server infrastructure licensed?\",\n         opts:[\"High and rising recurring costs (e.g., VMware)\",\"Mixed \u2013 some licenses optimized, others not\",\"Cloud licensing with reserved instances \/ hybrid benefits\",\"Pay-as-you-go with full flexibility\"]}\n      ]\n    },\n    iot: {\n      name: \"IoT & Edge\",\n      intro: \"How mature is your IoT and edge infrastructure?\",\n      questions: [\n        {q:\"How connected are your production assets and machines today?\",\n         opts:[\"Under 20 % connected, mostly manual data collection\",\"20\u201350 % connected, heterogeneous protocols\",\"50\u201380 % connected, mostly standardized\",\"Over 80 % connected, standardized and centrally managed\"]},\n        {q:\"Do you have centralized device management for your edge\/IoT devices?\",\n         opts:[\"No \u2013 devices are managed individually and manually\",\"Partially \u2013 for selected device groups\",\"Centralized management for most devices\",\"Fully centralized, including OTA updates and certificate management\"]},\n        {q:\"Can you roll out firmware updates to your edge devices remotely and securely?\",\n         opts:[\"No \u2013 updates only possible on site\",\"For some device types, not consistently\",\"For most devices, triggered manually\",\"Fully automated, with rollback and integrity checks\"]}\n      ]\n    },\n    data: {\n      name: \"Data Platform\",\n      intro: \"How well is your data structured, accessible, and quality-assured?\",\n      questions: [\n        {q:\"Where does your most critical operational and production data reside today?\",\n         opts:[\"Scattered across silos \u2013 Excel, local databases, isolated systems\",\"In several systems, without a central platform\",\"Partially consolidated in a data platform\",\"Central data platform with governance\"]},\n        {q:\"How would you rate the quality of your data for reporting and analysis?\",\n         opts:[\"Poor \u2013 reports are often inaccurate or incomplete\",\"Moderate \u2013 requires manual rework\",\"Good \u2013 automated, but gaps remain in production data\",\"Very good \u2013 end-to-end data quality assurance\"]},\n        {q:\"Do you have defined data owners and governance processes?\",\n         opts:[\"No \u2013 no formal data governance\",\"Informal \u2013 individual people feel responsible\",\"Partially defined, processes being established\",\"Formal governance with owners and processes\"]}\n      ]\n    },\n    ops: {\n      name: \"Operations & Cost\",\n      intro: \"How transparent are your IT costs, and how automated are your operations?\",\n      questions: [\n        {q:\"What share of your IT budget do you estimate goes purely to maintaining existing systems?\",\n         opts:[\"Over 80 % \u2013 little room for innovation\",\"60\u201380 % \u2013 typical, but restrictive\",\"40\u201360 % \u2013 deliberately reduced\",\"Under 40 % \u2013 room for innovation\"]},\n        {q:\"Do you have transparency into the total cost of ownership (TCO) of your IT infrastructure?\",\n         opts:[\"No \u2013 we don't know the total costs\",\"Roughly estimated, but not broken down\",\"Traceable for most systems\",\"Full TCO transparency with a FinOps process\"]},\n        {q:\"How automated are your IT operations (monitoring, incident response, patch management)?\",\n         opts:[\"Mostly manual \u2013 reactive to problems\",\"Basic monitoring, manual response\",\"Automated monitoring, partially automated response\",\"High degree of automation with self-healing\"]}\n      ]\n    }\n  },\n\n  empfehlungen: {\n    legacy: {\n      rot:   \"Your core applications pose a significant operational risk: outdated technology, concentrated knowledge, and a lack of patch capability threaten the continuity of your business. We recommend a near-term analysis of your most critical application to quantify failure risks and define a viable modernization path.\",\n      gelb:  \"Your application landscape shows clear signs of aging. Operations are still stable, but maintenance costs and dependencies are growing. Now is the right time to develop a modernization roadmap \u2013 before mounting pressure limits your options.\",\n      gr\u00fcn: \"Your applications are in good shape. Regularly check whether new requirements (regulation, integrations, scaling) call for adjustments, and keep technical debt actively in view.\"\n    },\n    cloud: {\n      rot:   \"Your infrastructure is essentially tied to on-premises \u2013 with rising license costs and limited flexibility. A cloud migration strategy with clear workload prioritization would reduce costs and create room to maneuver. The first step: a structured inventory of your workloads.\",\n      gelb:  \"You've taken initial steps into the cloud, but without a consistent strategy, savings potential and scaling benefits remain untapped. A structured cloud readiness review shows which workloads should be migrated next \u2013 and how license costs can be optimized.\",\n      gr\u00fcn: \"Your cloud usage is already advanced. Focus now on cost optimization (reserved instances, rightsizing) and governance to secure the benefits long term.\"\n    },\n    iot: {\n      rot:   \"Your production assets are barely connected or are managed manually \u2013 as a result, operational data goes unused and maintenance stays reactive. A retrofit approach can connect your existing assets without disrupting production. We recommend a feasibility analysis for your most important machine types.\",\n      gelb:  \"Your machines are partially connected, but heterogeneous protocols and a lack of central device management limit the benefit. Standardizing connectivity and introducing central device management would significantly increase transparency and efficiency.\",\n      gr\u00fcn: \"Your IoT infrastructure is well positioned. Next steps: automated firmware distribution, advanced analytics based on machine data, and new data-driven services for your customers.\"\n    },\n    data: {\n      rot:   \"Your data is scattered across silos \u2013 analysis is time-consuming, error-prone, and outdated. This means the foundation for data-driven decisions is missing. Building a central data platform with clear governance is the most important lever for extracting value from existing data.\",\n      gelb:  \"You have the beginnings of a data platform, but quality, governance, and accessibility are not consistently ensured. Targeted further development \u2013 especially integrating production data \u2013 would improve decision quality across the board.\",\n      gr\u00fcn: \"Your data landscape is well structured. Build on it: self-service analytics for additional business areas and the integration of further data sources continuously increase its value.\"\n    },\n    ops: {\n      rot:   \"Most of your IT budget goes into keeping existing systems running \u2013 leaving little room for innovation. A TCO analysis shows where costs are tied up and which modernization steps would have the greatest economic impact. That's the starting point for any investment decision.\",\n      gelb:  \"Your IT operations work, but tie up an above-average amount of resources. More automation in operations (monitoring, patching, deployment) would free up capacity \u2013 for work that moves your business forward.\",\n      gr\u00fcn: \"Your operating model is efficiently set up. Regularly review new automation opportunities and maintain cost transparency \u2013 so budget stays free for innovation.\"\n    }\n  },\n\n  gesamtTexte: {\n    rot:   \"Your IT landscape shows urgent need for action in several areas. The good news: with the right priorities, you can achieve impact quickly.\",\n    gelb:  \"Your IT landscape is functional, but modernization needs are evident in several areas. Now is a good time to tackle the most important issues in a structured way.\",\n    gr\u00fcn: \"Your IT landscape is overall well positioned. Targeted optimizations can secure and extend your lead.\"\n  },\n\n  ampelLabel: {\n    rot:  \"Urgent need for action\",\n    gelb: \"Action needed\",\n    gr\u00fcn: \"Well positioned\"\n  },\n\n  ui: {\n    zurueck: \"Back\",\n    weiter: \"Next\",\n    auswertungAnzeigen: \"Show results\",\n    bitteAlleFragen: \"Please answer all questions\",\n    zurueckZuFragen: \"Back to questions\",\n    ctaHeading: \"Let\u2019s talk about your results\",\n    ctaText: \"In a complimentary 30-minute session, our experts will put your results into context and outline concrete next steps.\",\n    ctaButton: \"Schedule a conversation\",\n    modalHeading: \"Your detailed results\",\n    modalText: \"Enter your details to access your personalized results and tailored recommendations.\",\n    namePlaceholder: \"Name *\",\n    firmaPlaceholder: \"Company *\",\n    emailPlaceholder: \"Email address *\",\n    privacyText: \"By submitting, you agree to the processing of your data in accordance with our privacy policy.\",\n    validationAlert: \"Please enter your name, company, and a valid email address.\",\n    sendingLabel: \"Sending\u2026\"\n  },\n\n  consent: {\n    text: \"I agree to the processing of my data by Device Insight.\"\n  },\n\n  auswertung: {\n    kritischsteDimension: \"Most critical dimension\",\n    gesamtergebnis: \"Overall result\",\n    datum: \"Date\",\n    version: \"Version\",\n    keine: \"none\"\n  }\n};\n\nvar ASSESSMENT_VERSION = \"1\";\n\n\/* ============================================================\n   HUBSPOT-INTEGRATION\n   Portal-\/Formular-ID und Endpoint aus submit-form.sh.\n   ============================================================ *\/\nvar HUBSPOT_PORTAL_ID = \"6621808\";\nvar HUBSPOT_FORM_GUID = \"eb9503f8-0288-468f-a65f-2b73590b9e04\";\nvar HUBSPOT_ENDPOINT = \"https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/\" + HUBSPOT_PORTAL_ID + \"\/\" + HUBSPOT_FORM_GUID;\n\n\/* ============================================================\n   CALENDLY-INTEGRATION (Platzhalter-IDs f\u00fcr den Test)\n   TODO: echten Calendly-Org-\/Event-Slug von DI einsetzen.\n   ============================================================ *\/\nvar CALENDLY_URL = \"https:\/\/calendly.com\/di-sales-team\/modernization-scorecard\";\n\n\/* ============================================================\n   STATE & LOGIK\n   ============================================================ *\/\nvar answers = {};\nvar current = 0;\nvar RESULTS = dims.length;\nvar leadSubmitted = false;\nvar leadName = \"\";\nvar leadEmail = \"\";\n\nfunction renderSteps() {\n  var el = document.getElementById('diaSteps');\n  var html = '';\n  dims.forEach(function(d, i) {\n    var cls = d.cls + (i === current ? ' active' : '') + (isComplete(i) && i !== current ? ' done' : '');\n    html += '<button class=\"dia-step ' + cls + '\" onclick=\"goTo(' + i + ')\">' + TEXTS.dims[d.id].name + '<\/button>';\n  });\n  el.innerHTML = html;\n}\n\nfunction isComplete(di) {\n  return TEXTS.dims[dims[di].id].questions.every(function(_, qi) { return answers[di + '-' + qi] !== undefined; });\n}\n\nfunction allComplete() {\n  return dims.every(function(_, i) { return isComplete(i); });\n}\n\nfunction renderPanel() {\n  var c = document.getElementById('diaPanels');\n  if (current === RESULTS) { renderResults(c); return; }\n  var d = dims[current];\n  var t = TEXTS.dims[d.id];\n  var html = '';\n  html += '<div class=\"dia-dimbox\"><h2>' + t.name + '<\/h2><p>' + t.intro + '<\/p><\/div>';\n  t.questions.forEach(function(q, qi) {\n    var key = current + '-' + qi;\n    html += '<div class=\"dia-q\"><div class=\"dia-q-label\">' + q.q + '<\/div><div class=\"dia-opts\">';\n    q.opts.forEach(function(o, oi) {\n      var sel = answers[key] === oi ? ' selected' : '';\n      html += '<div class=\"dia-opt' + sel + '\" onclick=\"pick(' + current + ',' + qi + ',' + oi + ')\"><div class=\"dia-radio\"><\/div><span>' + o + '<\/span><\/div>';\n    });\n    html += '<\/div><\/div>';\n  });\n  html += '<div class=\"dia-nav\">';\n  html += current > 0 ? '<button class=\"dia-btn dia-btn-back\" onclick=\"goTo(' + (current - 1) + ')\">' + TEXTS.ui.zurueck + '<\/button>' : '<span><\/span>';\n  if (current < dims.length - 1) {\n    html += '<button class=\"dia-btn dia-btn-primary\" onclick=\"goTo(' + (current + 1) + ')\">' + TEXTS.ui.weiter + '<\/button>';\n  } else {\n    html += '<button class=\"dia-btn dia-btn-primary\" ' + (allComplete() ? '' : 'disabled title=\"' + TEXTS.ui.bitteAlleFragen + '\"') + ' onclick=\"goTo(' + RESULTS + ')\">' + TEXTS.ui.auswertungAnzeigen + '<\/button>';\n  }\n  html += '<\/div>';\n  c.innerHTML = html;\n}\n\nfunction pick(di, qi, val) { answers[di + '-' + qi] = val; renderSteps(); renderPanel(); }\nfunction goTo(i) { current = i; renderSteps(); renderPanel(); window.scrollTo({ top: 0, behavior: 'smooth' }); }\n\n\/* \u2500\u2500 Ampel-Bewertung \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction dimAvg(di) {\n  var sum = 0, n = 0;\n  TEXTS.dims[dims[di].id].questions.forEach(function(_, qi) {\n    var v = answers[di + '-' + qi];\n    if (v !== undefined) { sum += v; n++; }\n  });\n  return n > 0 ? sum \/ n : -1;\n}\nfunction ampel(avg) {\n  if (avg < 1.0) return 'rot';\n  if (avg < 2.0) return 'gelb';\n  return 'gr\u00fcn';\n}\nvar AMPEL_COLOR = { rot: '#d64541', gelb: '#e8a33d', gr\u00fcn: '#3c8c78' };\n\nfunction formatDate(d) {\n  var pad = function(n) { return (n < 10 ? '0' : '') + n; };\n  return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate());\n}\n\nfunction kritischsteDimension(avgs) {\n  var minIdx = 0;\n  for (var i = 1; i < avgs.length; i++) {\n    if (avgs[i] < avgs[minIdx]) minIdx = i;\n  }\n  return ampel(avgs[minIdx]) === 'gr\u00fcn' ? TEXTS.auswertung.keine : TEXTS.dims[dims[minIdx].id].name;\n}\n\nfunction buildAuswertungText(avgs, totalAmpel) {\n  var lines = [\n    TEXTS.auswertung.kritischsteDimension + ': ' + kritischsteDimension(avgs),\n    TEXTS.auswertung.gesamtergebnis + ': ' + TEXTS.ampelLabel[totalAmpel],\n    TEXTS.gesamtTexte[totalAmpel],\n    ''\n  ];\n  var AMPEL_ORDER = { rot: 0, gelb: 1, gr\u00fcn: 2 };\n  var sortedIdx = dims.map(function(_, i) { return i; });\n  sortedIdx.sort(function(i1, i2) {\n    var order1 = AMPEL_ORDER[ampel(avgs[i1])];\n    var order2 = AMPEL_ORDER[ampel(avgs[i2])];\n    if (order1 !== order2) return order1 - order2;\n    return avgs[i1] - avgs[i2];\n  });\n  sortedIdx.forEach(function(i) {\n    var d = dims[i];\n    var a = ampel(avgs[i]);\n    lines.push(TEXTS.dims[d.id].name + ' \u2013 ' + TEXTS.ampelLabel[a]);\n    lines.push(TEXTS.empfehlungen[d.id][a]);\n  });\n  lines.push(TEXTS.auswertung.datum + ': ' + formatDate(new Date()));\n  lines.push(TEXTS.auswertung.version + ': ' + ASSESSMENT_VERSION);\n  return lines.join('\\n\\n') + '\\n';\n}\n\n\/* \u2500\u2500 SVG-Netzdiagramm (ohne Achsenbeschriftung) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction radarSVG() {\n  var W = 460, H = 340, cx = W \/ 2, cy = H \/ 2, R = 105, N = dims.length;\n  var svg = '<svg width=\"' + W + '\" height=\"' + H + '\" viewBox=\"0 0 ' + W + ' ' + H + '\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"max-width:100%;height:auto\">';\n  \/\/ Grid rings (keine Zahlen an den Achsen)\n  [0.33, 0.66, 1.0].forEach(function(f) {\n    var pts = [];\n    for (var i = 0; i < N; i++) {\n      var a = -Math.PI \/ 2 + i * 2 * Math.PI \/ N;\n      pts.push((cx + Math.cos(a) * R * f).toFixed(1) + ',' + (cy + Math.sin(a) * R * f).toFixed(1));\n    }\n    svg += '<polygon points=\"' + pts.join(' ') + '\" fill=\"none\" stroke=\"#d5d9dd\" stroke-width=\"1\"\/>';\n  });\n  \/\/ Axes\n  for (var i = 0; i < N; i++) {\n    var a = -Math.PI \/ 2 + i * 2 * Math.PI \/ N;\n    svg += '<line x1=\"' + cx + '\" y1=\"' + cy + '\" x2=\"' + (cx + Math.cos(a) * R).toFixed(1) + '\" y2=\"' + (cy + Math.sin(a) * R).toFixed(1) + '\" stroke=\"#d5d9dd\" stroke-width=\"1\"\/>';\n  }\n  \/\/ Data polygon\n  var dpts = [];\n  for (var i = 0; i < N; i++) {\n    var avg = Math.max(dimAvg(i), 0);\n    var f = (avg \/ 3) * 0.9 + 0.1;  \/\/ min 10% damit die Form sichtbar bleibt\n    var a = -Math.PI \/ 2 + i * 2 * Math.PI \/ N;\n    dpts.push((cx + Math.cos(a) * R * f).toFixed(1) + ',' + (cy + Math.sin(a) * R * f).toFixed(1));\n  }\n  svg += '<polygon points=\"' + dpts.join(' ') + '\" fill=\"rgba(255,88,0,0.15)\" stroke=\"#ff5800\" stroke-width=\"2\"\/>';\n  \/\/ Data points in dimension colors\n  for (var i = 0; i < N; i++) {\n    var avg = Math.max(dimAvg(i), 0);\n    var f = (avg \/ 3) * 0.9 + 0.1;\n    var a = -Math.PI \/ 2 + i * 2 * Math.PI \/ N;\n    svg += '<circle cx=\"' + (cx + Math.cos(a) * R * f).toFixed(1) + '\" cy=\"' + (cy + Math.sin(a) * R * f).toFixed(1) + '\" r=\"5\" fill=\"' + dims[i].color + '\" stroke=\"#fff\" stroke-width=\"1.5\"\/>';\n  }\n  \/\/ Achsentitel (Dimensionsnamen) an den Achsenenden, in Dimensionsfarbe\n  var LABEL_OFFSET = 18;\n  for (var i = 0; i < N; i++) {\n    var a = -Math.PI \/ 2 + i * 2 * Math.PI \/ N;\n    var lx = cx + Math.cos(a) * (R + LABEL_OFFSET);\n    var ly = cy + Math.sin(a) * (R + LABEL_OFFSET);\n    \/\/ Textausrichtung abh\u00e4ngig von der Position auf dem Kreis\n    var anchor = 'middle';\n    if (Math.cos(a) > 0.3) anchor = 'start';\n    else if (Math.cos(a) < -0.3) anchor = 'end';\n    var baseline = 'middle';\n    if (Math.sin(a) < -0.3) baseline = 'auto';       \/\/ oben: Text \u00fcber dem Punkt\n    else if (Math.sin(a) > 0.3) baseline = 'hanging'; \/\/ unten: Text unter dem Punkt\n    svg += '<text x=\"' + lx.toFixed(1) + '\" y=\"' + ly.toFixed(1) + '\" text-anchor=\"' + anchor + '\" dominant-baseline=\"' + baseline + '\" font-family=\"Open Sans, sans-serif\" font-size=\"12.5\" font-weight=\"700\" fill=\"' + dims[i].color + '\">' + TEXTS.dims[dims[i].id].name + '<\/text>';\n  }\n  svg += '<\/svg>';\n  return svg;\n}\n\n\/* \u2500\u2500 Ergebnis-Seite \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction renderResults(c) {\n  var avgs = dims.map(function(_, i) { return dimAvg(i); });\n  var total = avgs.reduce(function(a, b) { return a + b; }, 0) \/ avgs.length;\n  var totalAmpel = ampel(total);\n\n  var html = '';\n\n  \/\/ Gesamtbewertung (immer sichtbar)\n  html += '<div class=\"dia-result-hero\">';\n  html += '<div class=\"dia-ampel\" style=\"background:' + AMPEL_COLOR[totalAmpel] + '\">';\n  if (totalAmpel === 'gr\u00fcn') {\n    html += '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"3\"><path d=\"M5 13l4 4L19 7\"\/><\/svg>';\n  } else if (totalAmpel === 'gelb') {\n    html += '<svg viewBox=\"0 0 24 24\" fill=\"#fff\"><rect x=\"10.5\" y=\"5\" width=\"3\" height=\"10\"\/><rect x=\"10.5\" y=\"17.5\" width=\"3\" height=\"3\"\/><\/svg>';\n  } else {\n    html += '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"3\"><path d=\"M12 5v9m0 4h.01\"\/><\/svg>';\n  }\n  html += '<\/div>';\n  html += '<h2>' + TEXTS.ampelLabel[totalAmpel] + '<\/h2>';\n  html += '<p>' + TEXTS.gesamtTexte[totalAmpel] + '<\/p>';\n  html += '<div class=\"dia-radar-wrap\">' + radarSVG() + '<\/div>';\n  html += '<\/div>';\n\n  \/\/ Gated: Einzelergebnisse + Empfehlungen\n  html += '<div class=\"dia-gate-wrap\">';\n  html += '<div class=\"dia-gated' + (leadSubmitted ? ' unlocked' : '') + '\" id=\"diaGated\">';\n  dims.forEach(function(d, i) {\n    var a = ampel(avgs[i]);\n    var emp = TEXTS.empfehlungen[d.id][a];\n    html += '<div class=\"dia-dimresult\">';\n    html += '<div class=\"dia-dot\" style=\"background:' + AMPEL_COLOR[a] + '\"><\/div>';\n    html += '<div><h3 style=\"--dim-color:' + d.color + '\">' + TEXTS.dims[d.id].name + ' \u2013 ' + TEXTS.ampelLabel[a] + '<\/h3>';\n    html += '<p>' + emp + '<\/p><\/div><\/div>';\n  });\n  html += '<div class=\"dia-cta\"><h3>' + TEXTS.ui.ctaHeading + '<\/h3><p>' + TEXTS.ui.ctaText + '<\/p><button class=\"dia-btn dia-btn-primary\" onclick=\"openCalendly()\">' + TEXTS.ui.ctaButton + '<\/button><\/div>';\n  html += '<\/div>';\n\n  \/\/ Modal (nur wenn noch nicht submitted)\n  if (!leadSubmitted) {\n    html += '<div class=\"dia-modal-overlay\" id=\"diaModal\">';\n    html += '<div class=\"dia-modal\">';\n    html += '<h3>' + TEXTS.ui.modalHeading + '<\/h3>';\n    html += '<p>' + TEXTS.ui.modalText + '<\/p>';\n    html += '<input type=\"text\" id=\"diaName\" placeholder=\"' + TEXTS.ui.namePlaceholder + '\">';\n    html += '<input type=\"text\" id=\"diaFirma\" placeholder=\"' + TEXTS.ui.firmaPlaceholder + '\">';\n    html += '<input type=\"email\" id=\"diaEmail\" placeholder=\"' + TEXTS.ui.emailPlaceholder + '\">';\n    html += '<button class=\"dia-btn dia-btn-primary\" id=\"diaSubmitBtn\" onclick=\"submitLead()\">' + TEXTS.ui.auswertungAnzeigen + '<\/button>';\n    html += '<div class=\"dia-privacy\">' + TEXTS.ui.privacyText + '<\/div>';\n    html += '<\/div><\/div>';\n  }\n\n  html += '<\/div>';\n\n  html += '<div class=\"dia-nav\"><button class=\"dia-btn dia-btn-back\" onclick=\"goTo(' + (dims.length - 1) + ')\">' + TEXTS.ui.zurueckZuFragen + '<\/button><span><\/span><\/div>';\n\n  c.innerHTML = html;\n}\n\nfunction submitLead() {\n  var name = document.getElementById('diaName').value.trim();\n  var firma = document.getElementById('diaFirma').value.trim();\n  var email = document.getElementById('diaEmail').value.trim();\n  if (!name || !firma || !email || email.indexOf('@') < 0) {\n    alert(TEXTS.ui.validationAlert);\n    return;\n  }\n\n  var avgs = dims.map(function(_, i) { return dimAvg(i); });\n  var total = avgs.reduce(function(a, b) { return a + b; }, 0) \/ avgs.length;\n  var totalAmpel = ampel(total);\n\n  var payload = {\n    fields: [\n      { name: 'email', value: email },\n      { name: 'company', value: firma },\n      { name: 'auswertung_selfassessment_modernization', value: buildAuswertungText(avgs, totalAmpel) }\n    ],\n    context: {\n      pageUri: window.location.href,\n      pageName: document.title\n    },\n    legalConsentOptions: {\n      consent: {\n        consentToProcess: true,\n        text: TEXTS.consent.text,\n        communications: []\n      }\n    }\n  };\n\n  var btn = document.getElementById('diaSubmitBtn');\n  if (btn) { btn.disabled = true; btn.textContent = TEXTS.ui.sendingLabel; }\n\n  fetch(HUBSPOT_ENDPOINT, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application\/json' },\n    body: JSON.stringify(payload)\n  })\n  .then(function(res) {\n    if (!res.ok) { throw new Error('HubSpot submit failed: ' + res.status); }\n  })\n  .catch(function(err) {\n    \/\/ Nutzer-Experience geht vor: Ergebnisse werden trotzdem freigeschaltet.\n    console.error('HubSpot submission error', err);\n  })\n  .finally(function() {\n    leadName = name;\n    leadEmail = email;\n    leadSubmitted = true;\n    renderPanel();\n  });\n}\n\nfunction openCalendly() {\n  if (typeof Calendly === 'undefined') {\n    window.open(CALENDLY_URL, '_blank');\n    return;\n  }\n  Calendly.initPopupWidget({\n    url: CALENDLY_URL,\n    prefill: {\n      name: leadName,\n      email: leadEmail\n    }\n  });\n}\n\n\/* INIT *\/\nrenderSteps();\nrenderPanel();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>5-Minute-Check Modernization Self-Assessment Get a clear picture of where your IT infrastructure stands today and identify the modernization areas with the greatest business impact. Your personal Modernization Scorecard provides an initial assessment and clear next steps.<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-48261","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/pages\/48261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/comments?post=48261"}],"version-history":[{"count":7,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/pages\/48261\/revisions"}],"predecessor-version":[{"id":48465,"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/pages\/48261\/revisions\/48465"}],"wp:attachment":[{"href":"https:\/\/device-insight.com\/en\/wp-json\/wp\/v2\/media?parent=48261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}