DMA for PSO

We'll guide you through the world of AI.

Assessment of the Level of Digitalization for EDIH Clients


Digital Maturity Assessment (DMA)
Target Audience: Public-sector organizations
Phase: T0 (before the start of EDIH support)
MODULE 1: Customer Data

In this module, please provide basic general information about the public sector organization interested in receiving support from EDIH. This data is needed to analyze how your organization’s digital maturity compares to that of similar organizations.
MODULE 2: Level of Digitalization

The questions in this module are designed to measure your organization’s level of digitalization. This information helps determine the starting point for your organization’s digital transformation and identify areas where it may need support from the EDIH. It also helps in evaluating the services that the EDIH ultimately offers, as well as in assessing the EU policies and financial instruments that support EDIHs. The following dimensions are evaluated (using the evaluation criteria listed on the last page):

Digital Strategy and Investments

Readiness for Digital Transformation

People-Centered Digitalization

Data Management and Security

Interoperability

Green Digitalization



M2.1. Digitalization Strategy and Investments

The questions in this dimension are designed to assess the overall status of a digital transformation strategy within your organization. They ask about the organization’s readiness to embark on a digital journey that may require organizational and financial efforts that are not yet foreseeable, as well as the associated investments in digitalization per business area (either completed or planned).

M2.1.2. In which of the following operational areas has your organization already invested in digitalization, and in which areas does it plan to invest in the future? Please select all that apply.
M2.2. Readiness for Digital Transformation

This dimension provides an assessment of the current prevalence of digital technologies (both conventional and more advanced technologies).
M2.3. People-Centered Digitalization

This dimension assesses how employees are trained, engaged, and empowered for and through digital technologies, and how their working conditions are improved to increase their productivity and well-being.
M2.4. Data Management and Security

This dimension covers how data is stored digitally, organized within the organization, made accessible via networked devices, and used for business purposes, while ensuring adequate data protection through cybersecurity measures. The question refers to data stored in all possible forms, including documents.
M2.5. Interoperability

This dimension examines the level of interoperability the organization has achieved, as measured by the status of planning and implementation of a set of the 12 interoperability principles of the new European Interoperability Framework (EIF). M2.5.1. When digitizing processes and services, what steps does your organization take to share data, information, and knowledge with other public sector organizations? Please select all options that apply to your organization using the provided scale:
M2.6. Green Digitalization

This dimension measures a company’s ability to implement digitalization as part of a long-term strategy that embraces responsibility for sustainability and the protection of natural resources and the environment.
M2.6.2. Does your organization also consider the environmental impact when making decisions about digitization and designing digital processes? Please rate all applicable options as "No," "Partially," or "Yes":
/** * DMA (Digital Maturity Assessment) Calculator * ------------------------------------------- * Dieses Skript berechnet die Reifegrade für die KMU- und ÖD-Versionen des DMA-Formulars in Elementor Pro. * Es synchronisiert benutzerdefinierte HTML-Matrix-Tabellen mit versteckten Elementor-Feldern, * führt die Reifegradberechnungen durch und befüllt das visuelle Dashboard am Ende des Formulars. */ (function() { let initialized = false; function tryInit() { if (initialized) return; // Versuche festzustellen, welches Formular auf der Seite aktiv ist const isKMUForm = document.querySelector('[name*="kmu_"]') || document.querySelector('[class*="kmu_"]') || document.getElementById('form-field-kmu_score_overall') !== null; const isODForm = document.querySelector('[name*="od_"]') || document.querySelector('[class*="od_"]') || document.getElementById('form-field-od_score_overall') !== null; if (isKMUForm) { console.log("DMA Calculator: KMU Formular erkannt, initialisiere..."); setupKMUMatrixTable(); setupCheckboxResets('kmu_m21_q2'); setupKMUQ1Resets(); setupCheckboxResets('kmu_m22_q3'); setupCheckboxResets('kmu_m23_q5'); setupCheckboxResets('kmu_m23_q6'); setupCheckboxResets('kmu_m24_q7'); setupCheckboxResets('kmu_m24_q8'); setupCheckboxResets('kmu_m26_q10'); // Event Listener auf alle relevanten Formularfelder legen document.addEventListener('change', function(e) { if (e.target.name && e.target.name.includes('kmu_')) { calculateKMUScores(); } }); // Event-Listener für Elementor-Schritt-Navigation if (window.jQuery) { jQuery(document).on('elementor/forms/navigation', function() { setTimeout(calculateKMUScores, 100); }); jQuery(document).on('submit_success', function() { showSuccessPopup(); }); } // Fallback für Klicks auf Navigations-Buttons document.addEventListener('click', function(e) { if (e.target.closest('.elementor-button') || e.target.closest('[class*="step"]')) { setTimeout(calculateKMUScores, 200); } }); calculateKMUScores(); initialized = true; } else if (isODForm) { console.log("DMA Calculator: ÖD Formular erkannt, initialisiere..."); setupCheckboxResets('od_m21_q1'); setupCheckboxResets('od_m22_q3'); setupCheckboxResets('od_m23_q5'); setupCheckboxResets('od_m23_q6'); setupCheckboxResets('od_m24_q7'); setupCheckboxResets('od_m24_q8'); setupCheckboxResets('od_m26_q10'); document.addEventListener('change', function(e) { if (e.target.name && e.target.name.includes('od_')) { calculateODScores(); } }); if (window.jQuery) { jQuery(document).on('elementor/forms/navigation', function() { setTimeout(calculateODScores, 100); }); jQuery(document).on('submit_success', function() { showSuccessPopup(); }); } document.addEventListener('click', function(e) { if (e.target.closest('.elementor-button') || e.target.closest('[class*="step"]')) { setTimeout(calculateODScores, 200); } }); calculateODScores(); initialized = true; } } // Starte Initialisierungsversuche zu verschiedenen Zeitpunkten if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', tryInit); } else { tryInit(); } window.addEventListener('load', tryInit); // Polling-Fallback für dynamisch geladene Formulare const initInterval = setInterval(function() { if (initialized) { clearInterval(initInterval); } else { tryInit(); } }, 500); // Nach 15 Sekunden Suche einstellen setTimeout(function() { clearInterval(initInterval); }, 15000); /** * Setzt die Checkboxen zurück, wenn "Keine der Optionen" (oder das Äquivalent) ausgewählt wird, * und hebt die Auswahl von "Keine der Optionen" auf, wenn eine andere Checkbox gewählt wird. */ function setupCheckboxResets(fieldId) { const selector = `[name^="form_fields[${fieldId}]"]`; const checkboxes = document.querySelectorAll(selector); if (checkboxes.length === 0) return; checkboxes.forEach(cb => { cb.addEventListener('change', function(e) { const currentVal = e.target.value.trim(); const isNoneOption = currentVal === '0' || e.target.nextElementSibling?.textContent.toLowerCase().includes('keine') || e.target.nextElementSibling?.textContent.toLowerCase().includes('keiner'); if (e.target.checked) { if (isNoneOption) { // Wenn "Keine" gecheckt wird, alle anderen entchecken checkboxes.forEach(otherCb => { if (otherCb !== e.target) otherCb.checked = false; }); } else { // Wenn etwas anderes gecheckt wird, das "Keine"-Feld entchecken checkboxes.forEach(otherCb => { const otherVal = otherCb.value.trim(); const otherIsNone = otherVal === '0' || otherCb.nextElementSibling?.textContent.toLowerCase().includes('keine') || otherCb.nextElementSibling?.textContent.toLowerCase().includes('keiner'); if (otherIsNone) otherCb.checked = false; }); } } }); }); } /** * KMU M2.1 Q1 Matrix-Tabelle Funktionalität: * Synchronisiert die Checkboxen der HTML-Tabelle mit dem Hidden Feld in Elementor. */ function setupKMUMatrixTable() { const matrixContainer = document.querySelector('.dma-matrix-container'); const hiddenField = document.getElementById('form-field-kmu_m21_q1_data') || document.querySelector('[name="form_fields[kmu_m21_q1_data]"]'); const noneCheckbox = document.getElementById('kmu_m21_q1_none'); if (!matrixContainer || !hiddenField) return; const tableCheckboxes = matrixContainer.querySelectorAll('.dma-matrix-cb'); tableCheckboxes.forEach(cb => { cb.addEventListener('change', function() { if (this.checked && noneCheckbox) { noneCheckbox.checked = false; // "Keine" entchecken } updateKMUMatrixHiddenData(hiddenField, tableCheckboxes, noneCheckbox); calculateKMUScores(); }); }); if (noneCheckbox) { noneCheckbox.addEventListener('change', function() { if (this.checked) { // Alle anderen Checkboxen in der Tabelle deaktivieren tableCheckboxes.forEach(cb => cb.checked = false); } updateKMUMatrixHiddenData(hiddenField, tableCheckboxes, noneCheckbox); calculateKMUScores(); }); } } function updateKMUMatrixHiddenData(hiddenField, checkboxes, noneCheckbox) { const data = { getaetigt: [], geplant: [] }; if (!noneCheckbox || !noneCheckbox.checked) { checkboxes.forEach(cb => { if (cb.checked) { const idx = parseInt(cb.getAttribute('data-index')); if (cb.classList.contains('getaetigt')) { data.getaetigt.push(idx); } else if (cb.classList.contains('geplant')) { data.geplant.push(idx); } } }); } // Als JSON im Hidden Field abspeichern, damit Elementor es mitsendet hiddenField.value = JSON.stringify(data); } /** * Hilfsfunktion zum Summieren von ausgewählten Checkbox-Werten in Elementor */ function sumCheckedValues(fieldId) { let sum = 0; const checked = document.querySelectorAll(`[name^="form_fields[${fieldId}]"]:checked`); checked.forEach(cb => { const val = parseFloat(cb.value); if (!isNaN(val)) sum += val; }); return sum; } /** * Hilfsfunktion zum Zählen der ausgewählten Checkboxen (z. B. wenn alle je 1 Punkt wert sind) */ function countCheckedOptions(fieldId) { const checked = document.querySelectorAll(`[name^="form_fields[${fieldId}]"]:checked`); let count = 0; checked.forEach(cb => { // "Keine" Option (Wert 0 oder Text enthält 'keine') nicht mitzählen const labelText = cb.nextElementSibling?.textContent.toLowerCase() || ""; const isNone = cb.value.trim() === '0' || labelText.includes('keine') || labelText.includes('keiner'); if (!isNone) count++; }); return count; } /** * Hilfsfunktion zum Auslesen eines Radio-Buttons */ function getRadioValue(fieldId) { const checked = document.querySelector(`[name="form_fields[${fieldId}]"]:checked`); return checked ? parseFloat(checked.value) : 0; } function updateHiddenScoreField(fieldId, val) { const fld = document.getElementById(`form-field-${fieldId}`) || document.querySelector(`[name="form_fields[${fieldId}]"]`) || document.querySelector(`[name*="${fieldId}"]`); if (fld) fld.value = val; } /** * BERECHNUNG FÜR KMU (UNTERNEHMEN) */ function calculateKMUScores() { console.log("Berechne KMU Scores..."); // --- Dimension 1: Strategie (M2.1) --- let q1_getaetigt_count = 0; let q1_geplant_count = 0; const matrixContainer = document.querySelector('.dma-matrix-container'); const noneCheckbox = document.getElementById('kmu_m21_q1_none'); if (matrixContainer && (!noneCheckbox || !noneCheckbox.checked)) { q1_getaetigt_count = matrixContainer.querySelectorAll('.dma-matrix-cb.getaetigt:checked').length; q1_geplant_count = matrixContainer.querySelectorAll('.dma-matrix-cb.geplant:checked').length; } else { // Fallback für Standard-Elementor-Radios (falls keine Matrix-Tabelle im DOM ist) for (let i = 1; i Max 30 Punkte summiert * 3.333 = 100 const d1 = Math.min(100, Math.round((q1_getaetigt_count + q1_geplant_count + q2_count) * (100 / 30))); // --- Dimension 2: Bereitschaft (M2.2) --- const q3_count = countCheckedOptions('kmu_m22_q3'); // Max 10 let q4_sum = 0; for (let i = 1; i <= 7; i++) { q4_sum += getRadioValue(`kmu_m22_q4_${i}`); } const q4_scaled = (q4_sum / 7); // Skaliert auf 10 Punkte (da Q4-Werte nun 0 bis 10 sind) const d2 = Math.min(100, Math.round((q3_count + q4_scaled) * 5)); // D2 = (Q3 + Q4) * 5 // --- Dimension 3: Menschzentriert (M2.3) --- const q5_sum = sumCheckedValues('kmu_m23_q5'); // Max 9 Punkte in Gewichten const q5_scaled = (q5_sum * 10 / 9); // Skaliert auf 10 const q6_sum = sumCheckedValues('kmu_m23_q6'); // Max 10 Punkte in Gewichten const d3 = Math.min(100, Math.round((q5_scaled + q6_sum) * 5)); // D3 = (Q5 + Q6) * 5 // --- Dimension 4: Daten & Sicherheit (M2.4) --- const q7_count = countCheckedOptions('kmu_m24_q7'); // Max 7 positive Optionen const q7_scaled = (q7_count * 10 / 7); const q8_count = countCheckedOptions('kmu_m24_q8'); // Max 6 positive Optionen const q8_scaled = (q8_count * 10 / 6); const d4 = Math.min(100, Math.round((q7_scaled + q8_scaled) * 5)); // D4 = (Q7 + Q8) * 5 // --- Dimension 5: Automatisierung & KI (M2.5) --- let q9_sum = 0; for (let i = 1; i <= 5; i++) { q9_sum += getRadioValue(`kmu_m25_q9_${i}`); } const q9_scaled = (q9_sum / 5); // Skaliert auf 10 (da Q9-Werte nun 0 bis 10 sind) const d5 = Math.min(100, Math.round(q9_scaled * 10)); // D5 = Q9 * 10 // --- Dimension 6: Grüne Digitalisierung (M2.6) --- const q10_count = countCheckedOptions('kmu_m26_q10'); // Max 10 let q11_sum = 0; for (let i = 1; i <= 5; i++) { q11_sum += getRadioValue(`kmu_m26_q11_${i}`); // Werte 0, 10, 20. Max 100 } const q11_scaled = q11_sum / 10; // Skaliert auf max 10 Punkte const d6 = Math.min(100, Math.round((q10_count + q11_scaled) * 5)); // D6 = (Q10 + Q11) * 5 // --- Gesamtergebnis --- const overall = Math.round((d1 + d2 + d3 + d4 + d5 + d6) / 6); // Versteckte Felder befüllen (für die Übermittlung) updateHiddenScoreField('kmu_score_d1', d1); updateHiddenScoreField('kmu_score_d2', d2); updateHiddenScoreField('kmu_score_d3', d3); updateHiddenScoreField('kmu_score_d4', d4); updateHiddenScoreField('kmu_score_d5', d5); updateHiddenScoreField('kmu_score_d6', d6); updateHiddenScoreField('kmu_score_overall', overall); // Dashboard rendern renderDashboard('kmu_dma_dashboard_html', { d1, d2, d3, d4, d5, d6 }, overall); } /** * BERECHNUNG FÜR ÖFFENTLICHEN SEKTOR (ÖD) */ function calculateODScores() { console.log("Berechne ÖD Scores..."); // --- Dimension 1: Strategie & Investition (M2.1) --- const q1_count = countCheckedOptions('od_m21_q1'); // Max 10 let q2_sum = 0; for (let i = 1; i <= 8; i++) { q2_sum += getRadioValue(`od_m21_q2_${i}`); // Werte: 0, 0.5, 1. Max 8 } const q2_scaled = (q2_sum * 10 / 8); const d1 = Math.min(100, Math.round((q1_count + q2_scaled) * 5)); // --- Dimension 2: Bereitschaft (M2.2) --- const q3_count = countCheckedOptions('od_m22_q3'); // Max 9 const q3_scaled = (q3_count * 10 / 9); let q4_sum = 0; for (let i = 1; i <= 8; i++) { q4_sum += getRadioValue(`od_m22_q4_${i}`); // Skala 0 bis 1. Max 8 } const q4_scaled = (q4_sum * 10 / 8); const d2 = Math.min(100, Math.round((q3_scaled + q4_scaled) * 5)); // --- Dimension 3: Menschzentriert (M2.3) --- const q5_count = countCheckedOptions('od_m23_q5'); // Max 7 const q5_scaled = (q5_count * 10 / 7); const q6_count = countCheckedOptions('od_m23_q6'); // Max 10 const d3 = Math.min(100, Math.round((q5_scaled + q6_count) * 5)); // --- Dimension 4: Daten & Sicherheit (M2.4) --- const q7_count = countCheckedOptions('od_m24_q7'); // Max 9 const q7_scaled = (q7_count * 10 / 9); const q8_count = countCheckedOptions('od_m24_q8'); // Max 6 const q8_scaled = (q8_count * 10 / 6); const d4 = Math.min(100, Math.round((q7_scaled + q8_scaled) * 5)); // --- Dimension 5: Interoperabilität (M2.5) --- let q9_sum = 0; for (let i = 1; i <= 16; i++) { q9_sum += getRadioValue(`od_m25_q9_${i}`); // Werte: 0, 0.5, 1. Max 16 } const q9_scaled = (q9_sum * 10 / 16); const d5 = Math.min(100, Math.round(q9_scaled * 10)); // --- Dimension 6: Grüne Digitalisierung (M2.6) --- const q10_count = countCheckedOptions('od_m26_q10'); // Max 9 const q10_scaled = (q10_count * 10 / 9); let q11_sum = 0; for (let i = 1; i <= 5; i++) { q11_sum += getRadioValue(`od_m26_q11_${i}`); // Werte: 0, 0.5, 1. Max 5 } const q11_scaled = (q11_sum * 10 / 5); const d6 = Math.min(100, Math.round((q10_scaled + q11_scaled) * 5)); // --- Gesamtergebnis --- const overall = Math.round((d1 + d2 + d3 + d4 + d5 + d6) / 6); // Versteckte Felder befüllen updateHiddenScoreField('od_score_d1', d1); updateHiddenScoreField('od_score_d2', d2); updateHiddenScoreField('od_score_d3', d3); updateHiddenScoreField('od_score_d4', d4); updateHiddenScoreField('od_score_d5', d5); updateHiddenScoreField('od_score_d6', d6); updateHiddenScoreField('od_score_overall', overall); // Dashboard rendern renderDashboard('od_dma_dashboard_html', { d1, d2, d3, d4, d5, d6 }, overall); } /** * Rendert die visuell ansprechende Dashboard-Auswertung im HTML-Bereich am Ende. */ function renderDashboard(containerId, dimensionScores, overallScore) { let container = document.getElementById('dma-dashboard-container') || document.querySelector(`#form-field-${containerId} #dma-dashboard-container`) || document.querySelector('#dma-dashboard-container'); if (!container) { // Dynamisches Fallback: Falls der Container nicht im HTML-Feld existiert, erzeuge ihn im Elementor-Feld-Wrapper const wrapper = document.querySelector(`.elementor-field-group-${containerId}`) || document.querySelector(`[class*="${containerId}"]`); if (wrapper) { console.log(`DMA Calculator: Erzeuge Dashboard-Container dynamisch in Wrapper für ${containerId}`); container = document.createElement('div'); container.id = 'dma-dashboard-container'; wrapper.appendChild(container); } } if (!container) { console.log("DMA Calculator: Dashboard-Container nicht gefunden und konnte nicht erzeugt werden."); return; } // Reifegrad-Klasse bestimmen let levelTitle = ""; let levelDesc = ""; let levelColor = ""; if (overallScore = 20 && overallScore = 50 && overallScore { const val = dimensionScores[key]; let barColor = "#3b82f6"; // default blau if (val < 20) barColor = "#ef4444"; else if (val < 50) barColor = "#f59e0b"; else if (val < 80) barColor = "#10b981"; dimensionsHtml += `
D${index+1}: ${dimNames[key]} ${val} / 100
`; }); container.innerHTML = `
${overallScore} Index

Ihr digitaler Reifegrad

${levelTitle}

${levelDesc}


Ergebnis nach Dimensionen:

${dimensionsHtml}
`; } /** * KMU M2.1 Q1 Reset-Funktionalität: * Setzt alle Radio-Buttons zurück, wenn "Keine der Optionen" gewählt wird. */ function setupKMUQ1Resets() { const noneCheckbox = document.getElementById('form-field-kmu_m21_q1_none') || document.querySelector('[name="form_fields[kmu_m21_q1_none]"]') || document.querySelector('[name*="kmu_m21_q1_none"]') || document.getElementById('kmu_m21_q1_none'); if (!noneCheckbox) return; noneCheckbox.addEventListener('change', function() { if (this.checked) { for (let i = 1; i r.checked = false); } calculateKMUScores(); } }); for (let i = 1; i { r.addEventListener('change', function() { if (this.checked && noneCheckbox.checked) { noneCheckbox.checked = false; calculateKMUScores(); } }); }); } } /** * Erzeugt und zeigt das Erfolgs-Popup nach Absenden des Formulars an. */ function showSuccessPopup() { let overlay = document.getElementById('dmaSuccessOverlay'); if (!overlay) { overlay = document.createElement('div'); overlay.id = 'dmaSuccessOverlay'; overlay.className = 'dma-success-overlay'; overlay.innerHTML = `

Vielen Dank!

Ihr Formular wurde erfolgreich übermittelt. Das EDIH-Team wird sich umgehend mit Ihnen in Verbindung setzen.

`; document.body.appendChild(overlay); document.getElementById('dmaCloseSuccessBtn').addEventListener('click', function() { overlay.classList.remove('dma-show'); window.scrollTo({ top: 0, behavior: 'smooth' }); }); } setTimeout(function() { overlay.classList.add('dma-show'); }, 100); } })();