2025: A new ambition for MDS. Discover our strategy and innovations soon. In the meantime, explore our vision.

Making data a strategic asset

At MY DATA SOLUTION, our ambition is clear: to become the leader in data enhancement and protection by 2025. We help you transform your data into a strategic asset while ensuring its security and compliance.
vision loupe 1 - My data solution
An Ambition

Your trusted partner

We aim to be much more than a service provider. Our goal is to become your strategic partner, capable of combining technical expertise, innovation and understanding of your challenges.

Ensure compliance

We help you navigate a complex regulatory landscape, including GDPR, DORA, IA ACT and other major standards.

Secure your data

With advanced cybersecurity and governance solutions (NIS2) we protect your activities against growing threats.

Valorize your information

We implement strategies to transform your data into an asset for decision-making and growth.

Why Choose MY DATA SOLUTION?

Recognized expertise in compliance, resilience and data enhancement.

With advanced cybersecurity solutions, we protect your business against growing threats.

A commitment to building sustainable and innovative solutions with you.

Our strategic pillars

Conformité et régulation

An expert center to support our clients on regulatory data requirements (GDPR, DORA, IA ACT, NIS2, etc.) while ensuring ethical data governance.

Integrated security

We combine this resilience plan with cutting-edge technologies to ensure optimal protection of your information and infrastructure.

(function() { function initMdsAudit() { var form = document.querySelector('.mds-audit form.elementor-form'); if (!form) return; var ids = ['q1','q2','q3','q4','q5','q6','q7','q8','q9','q10']; function calcScore() { var total = 0; ids.forEach(function(id) { var input = form.querySelector('input[name="form_fields[' + id + ']"]:checked'); if (input && input.value) { var val = parseInt(input.value, 10); if (!isNaN(val)) total += val; } }); var hidden = form.querySelector('input[name="form_fields[score_total]"]'); if (hidden) hidden.value = total; var out = document.querySelector('#mds-score'); if (out) { out.textContent = total + '/100'; out.classList.remove('mds-score-low','mds-score-mid','mds-score-high'); if (total < 30) out.classList.add('mds-score-low'); else if (total < 70) out.classList.add('mds-score-mid'); else out.classList.add('mds-score-high'); } var msg = ''; if (total < 30) { msg = '

Risque élevé de non-conformité.
Les fondamentaux manquent (registre, bases légales, sécurité). Demandez un audit express gratuit et un plan d’action priorisé.

'; } else if (total < 70) { msg = '

Conformité partielle.
Plusieurs zones critiques subsistent (sécurité, contrats). Recevez un plan d’action et une estimation d’effort.

'; } else if (total < 85) { msg = '

Bonne conformité.
Quelques optimisations restantes (sensibilisation, audits). Visez le niveau d’excellence.

'; } else { msg = '

Conformité avancée.
Excellent niveau. Nous vous aidons à maintenir & valoriser cet avantage.

'; } var reco = document.querySelector('#mds-reco'); if (reco) reco.innerHTML = msg; } form.addEventListener('change', calcScore); form.addEventListener('keyup', calcScore); // Elementor ré-injecte le DOM entre les steps → on observe var observer = new MutationObserver(calcScore); observer.observe(form, {subtree: true, childList: true}); calcScore(); } // Le popup peut arriver après chargement → petit polling function waitForForm() { var tries = 0; var iv = setInterval(function() { if (document.querySelector('.mds-audit form.elementor-form')) { clearInterval(iv); initMdsAudit(); } else if (++tries > 20) { clearInterval(iv); } }, 300); } document.addEventListener('DOMContentLoaded', waitForForm); })(); /* === MDS – Progress bar for multi-step === */ (function () { function getForm() { return document.querySelector('.mds-popup .elementor-form'); } function getBar() { return document.querySelector('.mds-popup .mds-progress__bar'); } function updateProgress() { var form = getForm(), bar = getBar(); if (!form || !bar) return; var steps = form.querySelectorAll('.e-form__step'); if (!steps.length) { bar.style.width = '100%'; return; } // repère le step visible (Elementor masque les autres) var visibleIndex = 0; steps.forEach(function (s, i) { var hidden = s.classList.contains('elementor-hidden') || getComputedStyle(s).display === 'none'; if (!hidden) visibleIndex = i; }); var pct = Math.round(((visibleIndex + 1) / steps.length) * 100); bar.style.width = pct + '%'; } function boot() { var form = getForm(); if (!form) { setTimeout(boot, 300); return; } updateProgress(); // clic sur Next/Previous form.addEventListener('click', function (e) { if (e.target.closest('button')) setTimeout(updateProgress, 30); }); // si Elementor ré-injecte le DOM, on recalcule var mo = new MutationObserver(updateProgress); mo.observe(form, { attributes: true, childList: true, subtree: true }); } document.addEventListener('DOMContentLoaded', boot); })();