Messages
Ordered list of dispatched messages across all your buses
"Contao\CoreBundle\Messenger\Message\SearchIndexMessage" |
|
|---|---|
| Caller | In SearchIndexListener.php line |
| Bus | messenger.bus.default |
| Message | Contao\CoreBundle\Messenger\Message\SearchIndexMessage {#6926 -document: Contao\CoreBundle\Search\Document {#6925 -originalDocument: null -jsonLds: null -uri: Nyholm\Psr7\Uri {#6927 -scheme: "https" -userInfo: "" -host: "www.essensei.fr" -port: null -path: "/formation/decouper-et-affiner-les-user-stories" -query: "" -fragment: "" } -statusCode: 200 -headers: [ "cache-control" => [ "private, s-maxage=3600" ] "date" => [ "Mon, 19 Jan 2026 02:11:16 GMT" ] "content-type" => [ "text/html; charset=UTF-8" ] "vary" => [ "Origin" "Cookie" ] "x-cache-debug" => [ "1" ] "x-content-type-options" => [ "nosniff" ] "referrer-policy" => [ "no-referrer-when-downgrade, strict-origin-when-cross-origin" ] "strict-transport-security" => [ "max-age=31536000" ] "x-cache-tags" => [ "contao.db.tl_module.249,contao.db.tl_module.164,contao.db.tl_module.160,contao.db.tl_module.233,contao.db.tl_module.188,contao.db.tl_module.234,contao.db.tl_module.235,contao.db.tl_module.263,contao.db.tl_page.226,contao.db.tl_page.306,contao.db.tl_page.322,contao.db.tl_page.310,contao.db.tl_page.312,contao.db.tl_page.311,contao.db.tl_page.315,contao.db.tl_page.307,contao.db.tl_page.297,contao.db.tl_page.318,contao.db.tl_page.319,contao.db.tl_page.317,contao.db.tl_page.290,contao.db.tl_module.190,contao.db.tl_module.236,contao.db.tl_module.161,contao.db.tl_module.165,contao.db.tl_module.162,contao.db.tl_module.240,contao.db.tl_module.163,contao.db.tl_module.168,contao.db.tl_module.169,contao.db.tl_article.459,contao.db.tl_content.5992,contao.db.tl_content.5824,contao.db.tl_news.45,contao.db.tl_content.6269,contao.db.tl_content.6063,contao.db.tl_content.6467,contao.db.tl_content.5827,contao.db.tl_content.5830,contao.db.tl_content.5828,contao.db.tl_content.5831,contao.db.tl_content.5977,contao.db.tl_content.5976,contao.db.tl_content.5835,contao.db.tl_module.251,contao.db.tl_content.5978,contao.db.tl_form_field.37,contao.db.tl_form_field.45,contao.db.tl_form_field.46,contao.db.tl_form_field.53,contao.db.tl_form_field.38,contao.db.tl_form_field.44,contao.db.tl_form_field.47,contao.db.tl_form_field.48,contao.db.tl_form_field.40,contao.db.tl_form_field.49,contao.db.tl_form_field.50,contao.db.tl_form_field.41,contao.db.tl_form_field.51,contao.db.tl_form_field.56,contao.db.tl_form_field.55,contao.db.tl_form_field.54,contao.db.tl_form.4,contao.db.tl_content.5993,contao.db.tl_module.239,contao.db.tl_module.185,contao.db.tl_module.242,contao.db.tl_module.182,contao.db.tl_page.225,contao.db.tl_module.186,oveleon.cookiebar.1,contao.db.tl_page.308" ] "x-frame-options" => [ "SAMEORIGIN" ] "x-xss-protection" => [ "1; mode=block" ] "x-debug-token" => [ "be4880" ] "x-debug-token-link" => [ "https://www.essensei.fr/_profiler/be4880" ] "x-robots-tag" => [ "noindex" ] "age" => [ "0" ] "contao-private-response-reason" => [ "response-cookies (contao_frontend_deauth_profile_token, contao_frontend_auth_profile_token, csrf_https-contao_csrf_token)" ] "set-cookie" => [ "contao_frontend_deauth_profile_token=be4880; path=/; httponly; samesite=lax" "contao_frontend_auth_profile_token=deleted; expires=Sun, 19 Jan 2025 02:11:15 GMT; Max-Age=0; path=/; httponly" "csrf_https-contao_csrf_token=7To1f6bosd6wA7r1d56oqahWmNb_IgePhUxgKmJ45P8; path=/; secure; httponly; samesite=lax" ] ] -body: """ \n <!-- TEMPLATE START: templates/client/fe_page.html5 -->\n <!DOCTYPE html>\n <html lang="fr">\n <head>\n \n <meta charset="UTF-8">\n <title>Découper et affiner les User Stories</title>\n <base href="https://www.essensei.fr/">\n \n <meta name="robots" content="index,follow">\n <meta name="description" content="Cette formation vous aidera à appréhender la nature réelle des User Stories, à les découper selon une logique de progression plutôt que de construction et de les affiner pour obtenir le niveau de qualité attendu par l'état de l'art en la matière.">\n <meta name="generator" content="Contao Open Source CMS">\n \n <link rel="canonical" href="https://www.essensei.fr/formation/decouper-et-affiner-les-user-stories">\n \n <meta name="viewport" content="width=device-width,initial-scale=1.0,shrink-to-fit=no,viewport-fit=cover">\n <link rel="stylesheet" href="/assets/contao/css/icons.min.css?v=e03c59c9"><link rel="stylesheet" href="/bundles/contaothemesnetfontawesomeinserttag/css/all.min.css?v=cf52dd22"><link rel="stylesheet" href="/bundles/contaocookiebar/styles/cookiebar_simple.css?v=140a8ec0"><link rel="stylesheet" href="/assets/colorbox/css/colorbox.min.css?v=83af8d5b"><link rel="stylesheet" href="/assets/tablesorter/css/tablesorter.min.css?v=54af7ed9"><link rel="stylesheet" href="/files/client/css/client.css?v=61dbe1b8"><link rel="stylesheet" href="/files/client/css/fixes.css?v=553d7381"> <script src="/assets/jquery/js/jquery.min.js?v=2e868dd8"></script><script src="/files/oneo/js/modernizr.min.js?v=d182cd88"></script><script src="https://www.google.com/recaptcha/api.js"></script>\n \t<!-- Start of HubSpot Embed Code -->\n \t<script>\n \t\tvar _hsq = window._hsq = window._hsq || [];\n \t\t_hsq.push(['setContentType', 'site-page']);\n \t</script>\n \t<script type="text/javascript" id="hs-script-loader" async defer src="//js-eu1.hs-scripts.com/146564187.js"></script>\n \t<!-- End of HubSpot Embed Code -->\n \t<!-- images::apple --><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon.png" sizes="57x57"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-57x57.png" sizes="57x57"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-60x60.png" sizes="60x60"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-72x72.png" sizes="72x72"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-76x76.png" sizes="76x76"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-114x114.png" sizes="114x114"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-120x120.png" sizes="120x120"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-144x144.png" sizes="144x144"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-152x152.png" sizes="152x152"><link rel="apple-touch-icon" href="/files/images/tiles/apple-touch-icon-180x180.png" sizes="180x180"><!-- images::android --><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-36x36.png" sizes="36x36"><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-48x48.png" sizes="48x48"><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-72x72.png" sizes="72x72"><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-96x96.png" sizes="96x96"><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-144x144.png" sizes="144x144"><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-512x512.png" sizes="512x512"><link rel="icon" type="image/png" href="/files/images/tiles/android-chrome-192x192.png" sizes="192x192"><link rel="icon" type="image/png" href="/files/images/tiles/homescreen-192x192.png" sizes="192x192"><!-- images::microsoft --><meta content="/files/images/tiles/small.jpg" name="msapplication-square70x70logo"><meta content="/files/images/tiles/medium.jpg" name="msapplication-square150x150logo"><meta content="/files/images/tiles/wide.jpg" name="msapplication-wide310x150logo"><meta content="/files/images/tiles/large.jpg" name="msapplication-square310x310logo"><!-- images::icon --><link rel="icon" type="image/png" href="/files/images/tiles/favicon-16x16.png" sizes="16x16"><link rel="icon" type="image/png" href="/files/images/tiles/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/files/images/tiles/favicon-96x96.png" sizes="96x96"><link rel="icon" type="image/png" href="/files/images/tiles/favicon-128x128.png" sizes="128x128"><link rel="icon" type="image/png" href="/files/images/tiles/favicon-160x160.png" sizes="160x160"><link rel="icon" type="image/png" href="/files/images/tiles/favicon-192x192.png" sizes="192x192"><link rel="icon" type="image/png" href="/files/images/tiles/favicon-196x196.png" sizes="196x196"><!-- additionals::windows --><!-- additionals::ios --><!-- additionals::android --><!-- additionals::webApp --><!-- favicon --><link rel="shortcut icon" type="image/x-icon" href="/files/images/tiles/favicon.ico" ><link rel="icon" type="image/ico" href="/files/images/tiles/favicon.ico" ><meta prefix="og: http://ogp.me/ns#" property="og:title" content="Découper et affiner les User Stories">\n <meta prefix="og: http://ogp.me/ns#" property="og:type" content="article" />\n <meta prefix="og: http://ogp.me/ns#" property="og:image" content="https://www.essensei.fr/files/images/formations/product_owner/aleksandar-zivkovic-5ft9zo7_pjy-unsplash.jpg">\n <meta prefix="og: http://ogp.me/ns#" property="og:image:type" content="image/jpeg">\n <meta prefix="og: http://ogp.me/ns#" property="og:image:width" content="3024">\n <meta prefix="og: http://ogp.me/ns#" property="og:image:height" content="4032">\n <meta prefix="og: http://ogp.me/ns#" property="og:url" content="https://www.essensei.fr/formation/decouper-et-affiner-les-user-stories">\n <meta prefix="og: http://ogp.me/ns#" property="og:description" content="Cette formation vous aidera à appréhender la nature réelle des User Stories, à les découper selon une logique de progression plutôt que de construction et de les affiner pour obtenir le niveau de qualité attendu par l'état de l'art en la matière.">\n <meta prefix="og: http://ogp.me/ns#" property="og:site_name" content="Essensei">\n \n \t\t<script src="https://cdn.jsdelivr.net/npm/sienna-accessibility@latest/dist/sienna-accessibility.umd.js" defer></script>\n \t<script src="https://unpkg.com/web-vitals@5.1.0/dist/web-vitals.iife.js" defer></script> \n \n <script src="bundles/contaocookiebar/scripts/cookiebar.min.js?v=140a8ec0"></script>\n </head>\n <body id="top" class="oneo-no-sidebar oneo-fullwidth level-2 page-308">\n \n \t\n \t<div class="page">\n \t\t\t\t\t<header class="page-header">\n \t\t\t\t\n <!-- TEMPLATE START: vendor/oveleon/contao-cookiebar/contao/templates/cookiebar/ccb_opener_default.html5 -->\n \n <!-- indexer::stop -->\n <div class="mod_cookiebar_opener block">\n \n \n \n <a href="javascript:;" class="ccb-trigger" title="Paramètres de Confidentialité" rel="noreferrer noopener">Confidentialité</a>\n \n \n </div>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: vendor/oveleon/contao-cookiebar/contao/templates/cookiebar/ccb_opener_default.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <div class="header-navigation">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <div class="main-navigation-wrapper">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <div class="navigation-wrapper left-navigation-wrapper">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: templates/client/rsce_client_logo.html5 -->\n \n <!-- indexer::stop -->\n <div class="ce_rsce_client_logo logo">\n \t<a href="">\n \t\t\t\t\t\t\t\t\n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/picture/picture_default.html5 -->\n \n \n <img src="/files/images/common/logo.png" width="832" height="144" alt="Essensei">\n \n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/picture/picture_default.html5 -->\n \t\t\t</a>\n </div>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: templates/client/rsce_client_logo.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <div class="navigation-wrapper right-navigation-wrapper">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <a href="/contact" title="Contacter notre équipe d'experts" class="page-contact hs-cta-trigger-button hs-cta-trigger-button-273522371778" itemprop="url">\n <span itemprop="name">Prise de rendez-vous</span>\n </a>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_navigation.html5 -->\n \n <!-- indexer::stop -->\n <nav class="mod_navigation main-navigation block">\n \n \n <a href="/formation/decouper-et-affiner-les-user-stories#skipNavigation190" class="invisible">Aller au contenu</a>\n \n \n <!-- TEMPLATE START: templates/client/nav_custom_sub_nolink.html5 -->\n \n <ul class="level_1">\n \n <li class="home tagline-no-border">\n <a\n href="/"\n title="Conseil & formation agile pour les entreprises"\n class="home tagline-no-border" >\n Accueil </a>\n \n \n \n \n <li class="">\n <a\n href="/expertises"\n title="L'agilité au service de vos ambitions"\n >\n Expertises </a>\n \n \n \n \n <li class="page-roadmap-narrative">\n <a\n href="/roadmap-narrative"\n title="Roadmap Narrative : racontez la progression de vos utilisateurs"\n class="page-roadmap-narrative" >\n Roadmap Narrative </a>\n \n \n \n \n <li class="submenu trail">\n <a\n href="/formations"\n title="Formations méthodes & certifications agiles | Scrum, SAFe, …"\n class="submenu trail" aria-haspopup="true" >\n Formations </a>\n \n <!-- TEMPLATE START: templates/client/nav_custom_sub_nolink.html5 -->\n \n <ul class="level_2">\n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-produit"\n title="Parcours Produit"\n class="sibling" >\n Parcours Produit </a>\n \n \n \n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-manager"\n title="Parcours Manager"\n class="sibling" >\n Parcours Manager </a>\n \n \n \n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-agile-a-l-echelle"\n title="Parcours Agile à l'échelle"\n class="sibling" >\n Parcours Agile à l'échelle </a>\n \n \n \n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-delivery"\n title="Parcours Delivery"\n class="sibling" >\n Parcours Delivery </a>\n \n \n \n </ul>\n \n <!-- TEMPLATE END: templates/client/nav_custom_sub_nolink.html5 -->\n \n \n \n \n <li class="submenu nolink">\n <strong>\n Ressources </strong>\n \n <!-- TEMPLATE START: templates/client/nav_custom_sub_nolink.html5 -->\n \n <ul class="level_2">\n \n <li class="">\n <a\n href="/publications"\n title="Nos publications"\n >\n Publications </a>\n \n \n \n \n <li class="">\n <a\n href="/ressources/a-telecharger"\n title="Nos ressources téléchargeables"\n >\n À télécharger </a>\n \n \n \n \n <li class="">\n <a\n href="/ressources/conferences"\n title="Conférences"\n >\n Conférences </a>\n \n \n \n </ul>\n \n <!-- TEMPLATE END: templates/client/nav_custom_sub_nolink.html5 -->\n \n \n \n \n <li class="">\n <a\n href="/equipe"\n title="Des experts unis par la passion du métier"\n >\n Equipe </a>\n \n \n \n </ul>\n \n <!-- TEMPLATE END: templates/client/nav_custom_sub_nolink.html5 -->\n \n <span id="skipNavigation190" class="invisible"></span>\n \n </nav>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_navigation.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <div class="main-navigation-mobile">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_navigation.html5 -->\n \n <!-- indexer::stop -->\n <nav class="mod_navigation main-navigation block">\n \n \n <a href="/formation/decouper-et-affiner-les-user-stories#skipNavigation190" class="invisible">Aller au contenu</a>\n \n \n <!-- TEMPLATE START: templates/client/nav_custom_sub_nolink.html5 -->\n \n <ul class="level_1">\n \n <li class="home tagline-no-border">\n <a\n href="/"\n title="Conseil & formation agile pour les entreprises"\n class="home tagline-no-border" >\n Accueil </a>\n \n \n \n \n <li class="">\n <a\n href="/expertises"\n title="L'agilité au service de vos ambitions"\n >\n Expertises </a>\n \n \n \n \n <li class="page-roadmap-narrative">\n <a\n href="/roadmap-narrative"\n title="Roadmap Narrative : racontez la progression de vos utilisateurs"\n class="page-roadmap-narrative" >\n Roadmap Narrative </a>\n \n \n \n \n <li class="submenu trail">\n <a\n href="/formations"\n title="Formations méthodes & certifications agiles | Scrum, SAFe, …"\n class="submenu trail" aria-haspopup="true" >\n Formations </a>\n \n <!-- TEMPLATE START: templates/client/nav_custom_sub_nolink.html5 -->\n \n <ul class="level_2">\n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-produit"\n title="Parcours Produit"\n class="sibling" >\n Parcours Produit </a>\n \n \n \n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-manager"\n title="Parcours Manager"\n class="sibling" >\n Parcours Manager </a>\n \n \n \n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-agile-a-l-echelle"\n title="Parcours Agile à l'échelle"\n class="sibling" >\n Parcours Agile à l'échelle </a>\n \n \n \n \n <li class="sibling">\n <a\n href="https://www.essensei.fr/formations#parcours-delivery"\n title="Parcours Delivery"\n class="sibling" >\n Parcours Delivery </a>\n \n \n \n </ul>\n \n <!-- TEMPLATE END: templates/client/nav_custom_sub_nolink.html5 -->\n \n \n \n \n <li class="submenu nolink">\n <strong>\n Ressources </strong>\n \n <!-- TEMPLATE START: templates/client/nav_custom_sub_nolink.html5 -->\n \n <ul class="level_2">\n \n <li class="">\n <a\n href="/publications"\n title="Nos publications"\n >\n Publications </a>\n \n \n \n \n <li class="">\n <a\n href="/ressources/a-telecharger"\n title="Nos ressources téléchargeables"\n >\n À télécharger </a>\n \n \n \n \n <li class="">\n <a\n href="/ressources/conferences"\n title="Conférences"\n >\n Conférences </a>\n \n \n \n </ul>\n \n <!-- TEMPLATE END: templates/client/nav_custom_sub_nolink.html5 -->\n \n \n \n \n <li class="">\n <a\n href="/equipe"\n title="Des experts unis par la passion du métier"\n >\n Equipe </a>\n \n \n \n </ul>\n \n <!-- TEMPLATE END: templates/client/nav_custom_sub_nolink.html5 -->\n \n <span id="skipNavigation190" class="invisible"></span>\n \n </nav>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_navigation.html5 -->\n \n <!-- TEMPLATE START: templates/client/mod_customnav.html5 -->\n <!-- indexer::stop -->\n <nav class="mod_customnav secondary-navigation block">\n \n \n <a href="/formation/decouper-et-affiner-les-user-stories#skipNavigation240" class="invisible">Aller au contenu</a>\n \n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/navigation/nav_default.html5 -->\n \n <ul class="level_1">\n <li><a href="/gestion-du-handicap">Gestion du handicap</a></li>\n </ul>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/navigation/nav_default.html5 -->\n \n <a id="skipNavigation240" class="invisible"> </a>\n \n </nav>\n <!-- indexer::continue -->\n <!-- TEMPLATE END: templates/client/mod_customnav.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \t\t\t</header>\n \t\t\n \t\t\t\n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <div class="tagline">\n <div class="tagline-inner">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n </div>\n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_html.html5 -->\n \n \t\t<div class="content-wrapper">\n \n \t\t\t<main role="main" class="main-content">\n \n \t\t\t\t\n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_article.html5 -->\n \n \n <div id="article-459" class="mod_article block">\n \n \n <!-- TEMPLATE START: templates/client/rsce_client_centered_wrapper_start.html5 -->\n \r\n \r\n <div class=" centered-wrapper ce_rsce_client_centered_wrapper_start " >\r\n \r\n \t\t\t\t<div class="centered-wrapper-inner insidePadding insidePadding-50px25px" style="padding:50px 25px;">\r\n \n <!-- TEMPLATE END: templates/client/rsce_client_centered_wrapper_start.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/news-bundle/contao/templates/modules/mod_newsreader.html5 -->\n \n <div class="mod_newsreader block">\n \n \n \n \n <!-- TEMPLATE START: templates/client/news_full_formation.html5 -->\n <div class="layout_full formation-full block old_arc_11 approfondir">\n <h1>\n Découper et affiner les User Stories \n </h1>\n \n <div class="news-img centered-wrapper" style="min-height: 300px;">\n <div class="centered-wrapper-background"\n style="background-image: url('/assets/images/m/aleksandar-zivkovic-5ft9zo7_pjy-unsplash-7jvna1bch2t8pr9.jpg');"\n data-image-url="/assets/images/m/aleksandar-zivkovic-5ft9zo7_pjy-unsplash-7jvna1bch2t8pr9.jpg">\n </div>\n </div>\n <div class="archive">\n Parcours Produit <span class="news-full-subtitle">Approfondir</span>\n </div>\n \n \n \n \n <!-- TEMPLATE START: templates/client/rsce_client_hubspot.html5 -->\n \n <!-- indexer::stop -->\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: templates/client/rsce_client_hubspot.html5 -->\n \n <!-- TEMPLATE START: templates/client/rsce_formations.html5 -->\n <div class="formation-container new ce_rsce_formations " >\n \t\t\n \t<section class="formation-item">\n \t\t<div class="formation-main">\n \t\t\t\t\t\t\t<h2 class="formation-item-title">Description</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<p>Le Product Owner, l'un des rôles pilier de Scrum a en charge de piloter le développement du produit et de créer une compréhension partagée de ce qui est attendue par le biais de spécifications agiles. Les User Stories en sont le standard de facto. Cette formation vous aidera à appréhender la nature réelle des User Stories, à les découper selon une logique de progression plutôt que de construction et de les affiner pour obtenir le niveau de qualité attendu par l'état de l'art en la matière.</p>\t\t\t\t</div>\n \t\t\t\t\t\t\n \t\t\t<div class="preinscription">\n \t\t\t\t<a class="button" target="_blank" rel="nofollow" href="#pre-inscription"><i class='fa fa-pen-to-square'></i> Pré-inscription</a>\n \t\t\t</div>\n \t\t\t<!--\n \t\t\t<div class="preinscription">\n \t\t\t\t<a class="button" target="_blank" rel="nofollow" href="#pre-inscription">{{fa::pen-to-square}} Pré-inscription</a>\n \t\t\t\t<a class="button" target="_blank" rel="nofollow" href="#">{{fa::comment-dots}} Demander un devis</a>\n \t\t\t</div>\n \t\t\t-->\n \t\t\t\t\t\t\t<h2 class="formation-item-title">Points fort de la formation</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<ul><li><strong>Un exercice de Carpaccio ludique, permettant d’expérimenter le découpage et l’enchainement de User Stories</strong> : découpage des fonctionnalités, stratégie de progression de valeur.</li><li><strong>Une pédagogie active et immersive inspirée des neurosciences</strong> : ancrage durable des connaissances par l’expérimentation, les échanges et la mise en situation. </li><li><strong>Des formateurs expérimentés, praticiens et certifiés</strong> : à la fois formateurs, créateurs des programmes et consultants, nos experts conjuguent leurs expériences professionnelles et leurs pédagogies pour accompagner au mieux chacun des stagiaires.</li></ul>\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Objectifs pour produire des User Stories de qualité</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<ul><li>Mieux spécifier vos User Stories</li><li>Améliorer la qualité d'élaboration de vos User Stories</li><li>Progresser vers un meilleur découpage de vos User Stories orienté produit</li><li>Développer des stratégies d'évolution de votre produit</li><li>Traiter de manière pertinente les cas particuliers de User Stories</li></ul>\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<div class="formation-item-programme">\n \t\t\t\t<h2 class="formation-item-title">Programme de la formation</h2>\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-details">\n \t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t<div class="formation-item-programme-details-item">\n \t\t\t\t\t\t\t<h3 class="formation-item-subtitle">Module 1 Qu’est-ce qu’une User Story ?</h3>\n \t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-comprendre">\n \t\t\t\t\t\t\t\t\t<h4>Comprendre</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tLa spécification agile via les User Stories<br />\n Les 3C de Ron Jeffries\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-pratiquer">\n \t\t\t\t\t\t\t\t\t<h4>Pratiquer</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tLa formulation de User Stories<br />\n Les conversations avec les parties prenantes et l’équipe de réalisation\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t<div class="formation-item-programme-details-item">\n \t\t\t\t\t\t\t<h3 class="formation-item-subtitle">Module 2 Affiner les User Stories</h3>\n \t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-comprendre">\n \t\t\t\t\t\t\t\t\t<h4>Comprendre</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tLes caractéristiques INVEST d’une User Story\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-pratiquer">\n \t\t\t\t\t\t\t\t\t<h4>Pratiquer</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tEvaluer des User Stories avec INVEST\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t<div class="formation-item-programme-details-item">\n \t\t\t\t\t\t\t<h3 class="formation-item-subtitle">Module 3 Découper les User Stories</h3>\n \t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-comprendre">\n \t\t\t\t\t\t\t\t\t<h4>Comprendre</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tDifférentes techniques de découpage<br />\n Le coût du délai\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-pratiquer">\n \t\t\t\t\t\t\t\t\t<h4>Pratiquer</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tLe découpage en User Stories d’un besoin fonctionnel<br />\n La construction d’une progression de valeur<br />\n Le choix d’une stratégie produit\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t<div class="formation-item-programme-details-item">\n \t\t\t\t\t\t\t<h3 class="formation-item-subtitle">Module 4 Les User Stories qui n’en sont pas</h3>\n \t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-comprendre">\n \t\t\t\t\t\t\t\t\t<h4>Comprendre</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tLes User Stories “techniques”<br />\n Le vocabulaire à éviter dans les User Stories\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t<div class="formation-item-programme-module-pratiquer">\n \t\t\t\t\t\t\t\t\t<h4>Pratiquer</h4>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-programme-module-content">\n \t\t\t\t\t\t\t\t\t\tReformuler en User Story ayant de la valeur pour l’utilisateur\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title ">Public visé et pré-requis</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<ul>\n <li>Product Owner en poste effectif / débutant</li>\n <li>Connaissance du rôle et des missions du Product Owner</li>\n <li>Formation initiale au rôle de PO utile mais non indispensable</li>\n </ul>\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Cette formation est-elle pour moi ?</h2>\n \t\t\t\t<div class="pourmoi">\n \t\t\t\t\t<div class="buttons">\n \t\t\t\t\t\t\t\t\t\t\t\t\t<button data-value="60">L'équipe de développement trouve les US trop grosses pour être terminées sur la durée de l'itération</button>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<button data-value="45">L'équipe de développement pose trop de questions sur les US en cours d'itération</button>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<button data-value="20">Mes US s'intitulent etq utilisateur, etq PO, etq développeur...</button>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<button data-value="20">J'écris les US tout seul dans mon coin</button>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<button data-value="60">Il faut attendre la réalisation de plusieurs US dépendantes entre elles pour tester une fonctionnalité</button>\n \t\t\t\t\t\t\t\t\t\t\t</div>\n \n \t\t\t\t\t<div class="gauge">\n \t\t\t\t\t\t<div class="track"></div>\n \t\t\t\t\t\t<div class="cursor" style="left: 50%;"></div>\n \t\t\t\t\t\t<div class="negative-text">Plutôt pas pour moi</div>\n \t\t\t\t\t\t<div class="positive-text">Plutôt pour moi</div>\n \t\t\t\t\t</div>\n \n \t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Approche pédagogique</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<p>Pédagogie où chaque apprentissage débute par une mise en situation à partir de laquelle le stagiaire construit ses apprentissages. Les exercices sont effectués en sous-groupes, les cycles d’apprentissages se concluant par des périodes de débrief entre stagiaires.</p>\n <ul>\n <li>Ateliers concrets de mise en pratique</li>\n <li>Partage d’expérience dans une ambiance conviviale insistant sur les échanges entre stagiaires.</li>\n <li>Exemples de mises en application réelles</li>\n <li>Temps de réflexion avec synthèse des points clés</li>\n <li>Mise à disposition de ressources préalables à la formation pour se préparer au sujet, puis mise à disposition des supports de formation ainsi que des ressources complémentaires pour approfondir</li>\n <li>Projection sur des actions concrètes à mettre en place au quotidien</li>\n </ul>\t\t\t\t</div>\n \t\t\t\t\t\t\n \t\t\t<h2 class="formation-item-title">Pourquoi choisir essensei comme organisme de formation ?</h2>\n \t\t\t\t\t\t\t\n \n \n <div class="content-text"> \n \n \n \n <div class="rte">\n <p>Dans des contextes agiles, les formations ne peuvent pas se résumer à dérouler un support de cours accompagné de quelques quiz, ou à délivrer un guide théorique en vue de passer certification. Chez essensei, nous accompagnons celles et ceux qui veulent dépasser les méthodes figées pour retrouver du sens, de la cohérence et de l’impact dans leurs projets.</p>\n <p>En somme, ce que nous offrons à nos stagiaires à travers nos formations, c’est :</p>\n <ul>\n <li>Une transformation réelle de leurs pratiques.</li>\n <li>Une montée en compétence utile, ancrée dans le quotidien,</li>\n <li>Des coachs agiles seniors passionnés qui ont le goût de transmettre cette passion ainsi que leurs savoirs.</li>\n <li>Une expérience du terrain, acquise à travers des années d’interventions au cœur des entreprises</li>\n <li>Une certaine exigence et un accompagnement bienveillant pour favoriser un apprentissage réel et durable</li>\n <li>Une capacité à mieux collaborer, à aligner les équipes, à piloter des produits ou des transformations complexes avec plus d'efficacité</li>\n <li>Nous avons conçu nos formations agiles pour cela, au croisement de l'expérience terrain, de la rigueur pédagogique et de la compréhension systémique des organisations.</li>\n </ul>\n <p>Chaque session est une opportunité d'expérimentation, de prise de recul, d’apprentissage par la pratique.</p>\n <p>Que vous soyez manager, coach agile, chef de projet ou Product Owner, nos formations vous donnent les clés pour progresser, fédérer vos équipes et faire vraiment bouger les lignes.</p>\n <p>Si vous cherchez plus qu'une formation agile classique, une manière de penser, de décider, d’agir autrement — vous êtes au bon endroit.</p>\n </div>\n \n </div>\n \n \n \n \n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Modalités d’évaluation</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<ul>\n <li>Auto-positionnement en début de formation pour révéler les connaissances déjà acquises</li>\n <li>Auto-évaluation en continu par le biais d'exercices pratiques</li>\n <li>Synthèse des acquis dans le carnet de route</li>\n <li>Quizz d’évaluation réguliers</li>\n <li>Transposition des acquis grâce à l’exercice des “premiers petits pas” pour construire un “plan de résultats”</li>\n <li>Evaluation de fin de formation</li>\n <li>Questionnaire de satisfaction des stagiaires à l’issue de la formation</li>\n <li>Une attestation de participation et d’acquis des connaissances est délivrée aux stagiaires.</li>\n </ul>\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Moyens pédagoqiques techniques</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<ul>\n <li>Support audio-visuel</li>\n <li>Support de cours</li>\n <li>Carnet de route pour consigner les résultats des exercices, les synthèses et les débriefs.</li>\n <li>L’essensei book, à la fois un guide reprenant les sujets vus en formation, un manuel de référence et un index des ressources vers lesquelles se tourner pour aller plus loin.</li>\n </ul>\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Chiffres clés</h2>\n \t\t\t\t<div class="formation-item-keys">\n \t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-key">\n \t\t\t\t\t\t\t<img src="/assets/images/b/satisfaction-28142c1tk1bwcqb.png" width="74" height="50" alt="Illustration : Une femme souriante donnant son avis positif sur nos formations">\n \t\t\t\t\t\t\t<h3>Satisfaction des attentes</h3>\n \t\t\t\t\t\t\t<p>Parfaitement (67%) - Oui (33%)</p>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-key">\n \t\t\t\t\t\t\t<img src="/assets/images/n/reussite-fjtyrwc6d7c0k9n.png" width="50" height="50" alt="Illustration : Une femme fière de sa réussite">\n \t\t\t\t\t\t\t<h3>Taux de réussite</h3>\n \t\t\t\t\t\t\t<p>92%</p>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-key">\n \t\t\t\t\t\t\t<img src="/assets/images/7/assiduite-03ffg4ahyj4d47x.png" width="52" height="50" alt="Illustration : Une femme et un homme se mettant d'accord avec enthousiasme sur les modalités de suivi de formation de bout en bout">\n \t\t\t\t\t\t\t<h3>Assiduité</h3>\n \t\t\t\t\t\t\t<p>100%</p>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Formateur(s)</h2>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-formateur-container">\n \t\t\t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-formateur">\n \t\t\t\t\t\t\t\t\n <!-- TEMPLATE START: templates/client/rsce_formateur.html5 -->\n <section class="formateur ce_rsce_formateur">\n \n \n <a class="avatar" href="/equipe#christophe">\n <img src="/assets/images/x/essensei-christophe-vf-5-be0t8ayxb1gj2a9.jpg" width="200" height="200" alt="Photo : Christophe Addinquy">\n </a>\n <div class="details">\n \t<div class="description">\n \t \t <h3 class="nom"><a href="/equipe#christophe">\n \t \t Christophe Addinquy\t \t </a></h3>\n \t \t </div>\n <div class="certifications">\n <img src="/assets/images/p/management-30-attendee-badge-fgzp3hsfe16fdfj.png" width="111" height="100" alt="Badge : Certification Management 3.0 de Happy Melly">\n <img src="/assets/images/j/psmi-es5w9drx5a1rq8b.png" width="100" height="100" alt="Badge : Certification PSM I Professional Scrum Master I de Scrum.org">\n <img src="/assets/images/s/pspoi-7g6x4yyrmbf8v0e.png" width="100" height="100" alt="Badge : Certification PSPO I Professional Scrum Product Owner I de Scrum.org">\n </div>\n </div>\n \n </section>\n \n \n <!-- TEMPLATE END: templates/client/rsce_formateur.html5 -->\n \n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-formateur-container">\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-formateur">\n \t\t\t\t\t\t\t\t\n <!-- TEMPLATE START: templates/client/rsce_formateur.html5 -->\n <section class="formateur ce_rsce_formateur">\n \n \n <a class="avatar" href="/equipe#anne">\n <img src="/assets/images/j/essensei-anne-vf-1-xnj21p32vcysrf5.jpg" width="200" height="200" alt="Photo : Anne Gabrillagues">\n </a>\n <div class="details">\n \t<div class="description">\n \t \t <h3 class="nom"><a href="/equipe#anne">\n \t \t Anne Gabrillagues\t \t </a></h3>\n \t \t </div>\n <div class="certifications">\n <img src="/assets/images/p/management-30-attendee-badge-fgzp3hsfe16fdfj.png" width="111" height="100" alt="Badge : Certification Management 3.0 de Happy Melly">\n </div>\n </div>\n \n </section>\n \n \n <!-- TEMPLATE END: templates/client/rsce_formateur.html5 -->\n \n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-formateur-container">\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-formateur">\n \t\t\t\t\t\t\t\t\n <!-- TEMPLATE START: templates/client/rsce_formateur.html5 -->\n <section class="formateur ce_rsce_formateur">\n \n \n <a class="avatar" href="/equipe#pascal">\n <img src="/assets/images/g/essensei-pascal-vf-3-8gxanp5er5qxpra.jpg" width="200" height="200" alt="Photo : Pascal Poussard">\n </a>\n <div class="details">\n \t<div class="description">\n \t \t <h3 class="nom"><a href="/equipe#pascal">\n \t \t Pascal Poussard\t \t </a></h3>\n \t \t </div>\n <div class="certifications">\n <img src="/assets/images/p/management-30-attendee-badge-fgzp3hsfe16fdfj.png" width="111" height="100" alt="Badge : Certification Management 3.0 de Happy Melly">\n <img src="/assets/images/a/safe-remote-trainer-digital-badge-600x600-7za9gc8swzszkgt.png" width="100" height="100" alt="Badge : Certification SAFe remote trainer de Scaled Agile">\n <img src="/assets/images/p/sps-par63ttrnym3g9s.png" width="100" height="100" alt="Badge : Certification SPS Scaled Professional Scrum de Scrum.org">\n <img src="/assets/images/8/cert-mark-spc-150-1yn81e2pb96bye5.png" width="88" height="100" alt="Badge : Certification SAFe SPC SAFe Practice Consultant 6 de Scaled Agile">\n </div>\n </div>\n \n </section>\n \n \n <!-- TEMPLATE END: templates/client/rsce_formateur.html5 -->\n \n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t<div class="formation-item-formateur-container">\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-formateur">\n \t\t\t\t\t\t\t\t\n <!-- TEMPLATE START: templates/client/rsce_formateur.html5 -->\n <section class="formateur ce_rsce_formateur">\n \n \n <a class="avatar" href="/equipe#christian">\n <img src="/assets/images/x/essensei-christian-vf-3-v2-wj4w6a60f160ema.png" width="200" height="200" alt="Photo : Christian Gossart">\n </a>\n <div class="details">\n \t<div class="description">\n \t \t <h3 class="nom"><a href="/equipe#christian">\n \t \t Christian Gossart\t \t </a></h3>\n \t \t </div>\n <div class="certifications">\n <img src="/assets/images/p/management-30-attendee-badge-fgzp3hsfe16fdfj.png" width="111" height="100" alt="Badge : Certification Management 3.0 de Happy Melly">\n <img src="/assets/images/j/psmi-es5w9drx5a1rq8b.png" width="100" height="100" alt="Badge : Certification PSM I Professional Scrum Master I de Scrum.org">\n </div>\n </div>\n \n </section>\n \n \n <!-- TEMPLATE END: templates/client/rsce_formateur.html5 -->\n \n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t\n \t\t\t<h2 class="formation-item-title">Infos pratiques</h2>\n \t\t\t\t\t\t\t <ul>\n <li>Contact pédagogique : <a href="mailto:formation@essensei.fr" target="_blank" rel="noopener">formation@essensei.fr</a></li>\n <li>Déclaration d’activité enregistrée sous le numéro 11756048175. Cet enregistrement ne vaut pas agrément de l’État.</li>\n <li>Pour toutes questions relatives aux adaptations possibles et à l’accessibilité aux personnes en situation de handicap, vous pouvez contacter notre référent, Pascal Poussard <a href="mailto:pascal.poussard@essensei.fr" target="_blank" rel="noopener">pascal.poussard@essensei.fr</a></li>\n <li>Pour toutes questions sur les solutions de financement, vous pouvez contacter, Christophe Addinquy <a href="mailto:christophe.addinquy@essensei.fr" target="_blank" rel="noopener">christophe.addinquy@essensei.fr</a></li>\n </ul>\n \t\t\t\n \t\t</div>\n \t\t<div class="formation-side">\n \t\t\t\t\t\t\t<div>\n \t\t\t\t\t<h2 class="formation-item-title inline-block">Reférence</h2> POADA\t\t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="formation-item-price">\n \t\t\t\t\t<h2 class="formation-item-title">Prix</h2>\n \t\t\t\t\t<table>\n \t\t\t\t\t\t<tr>\n \t\t\t\t\t\t\t<th>Inter</th>\n \t\t\t\t\t\t\t<th>Intra</th>\n \t\t\t\t\t\t</tr>\n \t\t\t\t\t\t<tr>\n \t\t\t\t\t\t\t<td>\n \t\t\t\t\t\t\t\t800 € HT *\n \t\t\t\t\t\t\t</td>\n \t\t\t\t\t\t\t<td>Sur devis</td>\n \t\t\t\t\t\t</tr>\n \t\t\t\t\t</table>\n \t\t\t\t\t<small>* par participant, incluant repas et collations</small>\n \t\t\t\t</div>\n \t\t\t\t\t\t<h2 class="formation-item-title inline-block">Durée</h2> 1 jour soit 7 heures\n \t\t\t<h2 class="formation-item-title">Modalité de participation et accès</h2>\n \t\t\t\t\t\t\t <div>\n \t<p>Ce module s’inscrit dans un parcours thématique mais peut être suivi indépendamment.</p>\n \t<ul>\n \t\t<li>Formation dispensée en présence. Adaptable en distanciel sur demande.</li>\n \t\t<li>De 3 à 15 participants</li>\n \t\t<li>Toute inscription doit être finalisée 48h avant le début de la formation par un devis signé</li>\n \t\t<li>3 participants minimum pour le maintien de la session, une confirmation est envoyée une semaine avant la date de la première session</li>\n \t\t<li>Pré Inscription via le formulaire de bas de page, nous vous répondons sous 24h</li>\n \t\t<li>Nos salles de formation sont accessibles aux personnes à mobilité réduite. Pour toutes autres adaptations pour des situations de handicap, n’hésitez pas à contacter notre référent handicap <a href="mailto:pascal.poussard@essensei.fr" target="_blank" rel="noopener">pascal.poussard@essensei.fr</a></li>\n \t\t<li><a href="/gestion-du-handicap" target="_blank" rel="noopener">En savoir plus sur le handicap avec essensei</a></li>\n \t</ul>\n </div>\n \t\t\t\t\t\t<div class="download_catalog">\n \t\t\t\t\t\t\t\t\t<a class="button" target="_blank" rel="nofollow" href="/files/telechargements/private/programmes_formation/poada_affiner_us_04112025.pdf"><i class='fa fa-download'></i> Programme de la formation</a>\n \t\t\t\t\t\t\t\t <a class="button download_fullcatalog" rel="nofollow" href="files/telechargements/private/catalogue_formations_essensei_04112025.pdf" target="_blank"><i class='fa fa-download'></i> Téléchargez notre catalogue</a>\n \t\t\t</div>\n \t\t\t\t\t\t\t\t\t\t<h2 class="formation-item-title">Pour aller plus loin</h2>\n \t\t\t\t<div>\n \t\t\t\t\t<p>POASP - Spécifier et tester par l’exemple: Ce module vous aidera à élaborer avec votre équipe une meilleure compréhension partagée de vos User Stories et de produire des incréments produits prêts pour la production.</p>\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t</section>\n </div>\n \n <script>\n \tconst buttons = document.querySelectorAll('.pourmoi .buttons button');\n \tconst cursor = document.querySelector('.cursor');\n \tconst track = document.querySelector('.track');\n \tconst negativeText = document.querySelector('.negative-text');\n \tconst positiveText = document.querySelector('.positive-text');\n \tlet activeValues = 0;\n \n \tbuttons.forEach(button => {\n \t\tbutton.addEventListener('click', () => {\n \t\t\tconst value = parseInt(button.getAttribute('data-value'));\n \n \t\t\tif (button.classList.contains('active-negative') || button.classList.contains('active-positive')) {\n \t\t\t\tactiveValues -= value;\n \t\t\t\tbutton.classList.remove('active-negative', 'active-positive');\n \t\t\t} else {\n \t\t\t\tactiveValues += value;\n \t\t\t\tif (value < 0) {\n \t\t\t\t\tbutton.classList.add('active-negative');\n \t\t\t\t} else {\n \t\t\t\t\tbutton.classList.add('active-positive');\n \t\t\t\t}\n \t\t\t}\n \n \t\t\tlet position = Math.max(-100, Math.min(100, activeValues));\n \n \t\t\tconst percent = (position + 100) / 2;\n \t\t\tcursor.style.left = `${percent}%`;\n \n \t\t\tupdateTrackColor(position);\n \t\t\tupdateTextVisibility(position);\n \t\t});\n \t});\n \n \tfunction updateTrackColor(position) {\n \t\tif (position <= -40) {\n \t\t\tconst intensity = Math.abs(position) / 100;\n \t\t\ttrack.style.backgroundColor = `rgb(${255}, ${77 * (1 - intensity)}, ${77 * (1 - intensity)})`;\n \t\t} else if (position >= 40) {\n \t\t\tconst intensity = position / 100;\n \t\t\ttrack.style.backgroundColor = `rgb(${60 * (1 - intensity)}, ${204}, ${70 * (1 - intensity)})`;\n \t\t} else {\n \t\t\ttrack.style.backgroundColor = '#00b7db';\n \t\t}\n \t}\n \n \tfunction updateTextVisibility(position) {\n \t\tif (position < 0) {\n \t\t\tnegativeText.classList.add('visible');\n \t\t\tpositiveText.classList.remove('visible');\n \t\t} else if (position > 0) {\n \t\t\tpositiveText.classList.add('visible');\n \t\t\tnegativeText.classList.remove('visible');\n \t\t} else {\n \t\t\tnegativeText.classList.remove('visible');\n \t\t\tpositiveText.classList.remove('visible');\n \t\t}\n \t}\n </script>\n \n <!-- TEMPLATE END: templates/client/rsce_formations.html5 -->\n \n \n </div>\n \n <!-- TEMPLATE END: templates/client/news_full_formation.html5 -->\n \n \n \n \n </div>\n \n <!-- TEMPLATE END: vendor/contao/news-bundle/contao/templates/modules/mod_newsreader.html5 -->\n \n <!-- TEMPLATE START: templates/client/rsce_client_headline_box_custom.html5 -->\n \n <div class="headline-box -align-center ce_rsce_client_headline_box_custom mt-5 " id="pre-inscription">\n \t\t\t\t<h2\t\t\tclass="headline "\n \t\t\t>\n \t\tJe suis intéressé</h2>\n \t\t\t</div>\n \n <!-- TEMPLATE END: templates/client/rsce_client_headline_box_custom.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_wrapper.html5 -->\n \n <!-- indexer::stop -->\n <div class="ce_form block">\n \n \n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_inline.html5 -->\n <form method="post" enctype="application/x-www-form-urlencoded" class="fullwidth-form contact-form">\n <div class="formbody">\n <input type="hidden" name="FORM_SUBMIT" value="auto_1">\n <input type="hidden" name="REQUEST_TOKEN" value="54c75e03.R9svBRcNV8Iian1-rhwzxiJV6Ar1OWOEzwQVdn12aZo.cI9ANHE7Na1RDksJ7ytB90Zg3mWEWAvTokp3KTQRDMovjldiXGAd9hc6RQ">\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_hidden.html5 -->\n \n <input type="hidden" name="date" value="19/01/2026 03:11">\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_hidden.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_hidden.html5 -->\n \n <input type="hidden" name="context" value="Découper et affiner les User Stories">\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_hidden.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <div class="widget widget-text mandatory">\n <label for="ctrl_37" class="mandatory">\n <span class="invisible">Champ obligatoire </span>Nom/Prénom<span class="mandatory">*</span>\n </label>\n \n \n <input type="text" name="name" id="ctrl_37" class="text mandatory" value="" required>\n </div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <div class="rs-columns ce_rs_columns_start">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- 1 Column -->\n <div class="ce_rs_column_start rs-column -large-col-2-1 -large-first -large-first-row -medium-col-2-1 -medium-first -medium-first-row -small-col-1-1 -small-first -small-last -small-first-row">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <div class="widget widget-text">\n <label for="ctrl_53">\n Société </label>\n \n \n <input type="text" name="company" id="ctrl_53" class="text" value="">\n </div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <div class="widget widget-text mandatory">\n <label for="ctrl_38" class="mandatory">\n <span class="invisible">Champ obligatoire </span>E-Mail<span class="mandatory">*</span>\n </label>\n \n \n <input type="email" name="email" id="ctrl_38" class="text mandatory" value="" required>\n </div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <div class="widget widget-text">\n <label for="ctrl_44">\n Téléphone </label>\n \n \n <input type="tel" name="phone" id="ctrl_44" class="text" value="">\n </div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_text.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- 2 Column -->\n <div class="ce_rs_column_start rs-column -large-col-2-1 -large-last -large-first-row -medium-col-2-1 -medium-last -medium-first-row -small-col-1-1 -small-first -small-last">\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_textarea.html5 -->\n \n <div class="widget widget-textarea">\n <label for="ctrl_40">\n Votre message </label>\n \n \n <textarea name="message" id="ctrl_40" class="textarea" rows="4" cols="40"></textarea>\n </div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_textarea.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n </div>\n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_html.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_explanation.html5 -->\n \n <div class="widget widget-explanation explanation">\n <p>Nous attendons de vous lire avec impatience !</p></div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_explanation.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/forms/form_captcha.html5 -->\n \n <div class="widget widget-captcha mandatory">\n <label for="ctrl_56">\n <span class="invisible">Champ obligatoire </span>Captcha<span class="mandatory">*</span>\n </label>\n \n \n <input type="text" name="captcha_56" id="ctrl_56" class="captcha mandatory" value="" aria-describedby="captcha_text_56" maxlength="2" required>\n <span id="captcha_text_56" class="captcha_text">Quelle est la somme de 9 et 5 ?</span>\n <input type="hidden" name="captcha_56_hash" value="">\n \n <div style="display:none">\n <label for="ctrl_56_hp">Do not fill in this field</label>\n <input type="text" name="captcha_56_name" id="ctrl_56_hp" value="">\n </div>\n <script src="/_contao/captcha/fr" data-id="56" data-name="captcha_56" async></script>\n \n </div>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_captcha.html5 -->\n \n <!-- TEMPLATE START: system/modules/form_google_recaptcha/templates/form_google_recaptcha.html5 -->\n \n <div class="widget widget-google-recaptcha">\n \n <button type="submit" class="g-recaptcha submit" data-sitekey="6LcOQQssAAAAAL6D8mVGsadmdP83KjfvGJ6OCJfu" data-callback="onSubmit_54" data-action="submit">Envoyer le message</button>\n <script>\n function onSubmit_54(token)\n \t{\n jQuery('button[data-sitekey="6LcOQQssAAAAAL6D8mVGsadmdP83KjfvGJ6OCJfu"]').parents('form').submit();\n }\n </script>\n </div>\n \n <!-- TEMPLATE END: system/modules/form_google_recaptcha/templates/form_google_recaptcha.html5 -->\n </div>\n </form>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_inline.html5 -->\n \n </div>\n <!-- indexer::continue -->\n \n <script>\n document.currentScript.previousElementSibling.querySelector('form')?.addEventListener('submit', e => {\n // Prevent double form submission\n if (e.submitter) {\n setTimeout(() => e.submitter.disabled = true);\n setTimeout(() => e.submitter.disabled = false, 30000);\n }\n });\n </script>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/forms/form_wrapper.html5 -->\n \n <!-- TEMPLATE START: templates/client/rsce_client_centered_wrapper_stop.html5 -->\n </div>\n </div>\n \n <!-- TEMPLATE END: templates/client/rsce_client_centered_wrapper_stop.html5 -->\n \n </div>\n \n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_article.html5 -->\n \n \t\t\t\t\n \t\t\t</main>\n \n \t\t\t\n \t\t</div>\n \n \t\t\n \t\t\t\t\t<footer class="page-footer">\n \t\t\t\t\n <!-- TEMPLATE START: templates/client/rsce_client_icon_links.html5 -->\n <ul class="icon-links ce_rsce_client_icon_links">\n \t\t\t<li >\n \t\t\t<a href="https://www.linkedin.com/company/essensei" data-icon="" style="color: #fff; background-color: #0a66c2" target="_blank" rel="noopener">\n \t\t\t\t<span class="icon-links-label">LinkedIn</span>\n \t\t\t</a>\n \t\t</li>\n \t</ul>\n \n <!-- TEMPLATE END: templates/client/rsce_client_icon_links.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/modules/mod_navigation.html5 -->\n \n <!-- indexer::stop -->\n <nav class="mod_navigation footer-navigation block">\n \n \n <a href="/formation/decouper-et-affiner-les-user-stories#skipNavigation185" class="invisible">Aller au contenu</a>\n \n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/navigation/nav_default.html5 -->\n \n <ul class="level_1">\n <li class="home tagline-no-border"><a href="/" class="home tagline-no-border">Accueil</a></li>\n <li><a href="/expertises">Expertises</a></li>\n <li class="page-roadmap-narrative"><a href="/roadmap-narrative" class="page-roadmap-narrative">Roadmap Narrative</a></li>\n <li class="trail"><a href="/formations" class="trail">Formations</a></li>\n <li class="nolink"><a href="/ressources" class="nolink">Ressources</a></li>\n <li><a href="/equipe">Equipe</a></li>\n </ul>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/navigation/nav_default.html5 -->\n \n <span id="skipNavigation185" class="invisible"></span>\n \n </nav>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/modules/mod_navigation.html5 -->\n \n <!-- TEMPLATE START: templates/client/mod_customnav.html5 -->\n <!-- indexer::stop -->\n <nav class="mod_customnav footer-secondary-navigation block">\n \n \n <a href="/formation/decouper-et-affiner-les-user-stories#skipNavigation242" class="invisible">Aller au contenu</a>\n \n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/navigation/nav_default.html5 -->\n \n <ul class="level_1">\n <li><a href="/mentions-legales">Mentions légales</a></li>\n <li class="ccb-trigger ccb-prefill"><a href="/mentions-legales" class="ccb-trigger ccb-prefill">Paramètres de confidentialité</a></li>\n </ul>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/navigation/nav_default.html5 -->\n \n <a id="skipNavigation242" class="invisible"> </a>\n \n </nav>\n <!-- indexer::continue -->\n <!-- TEMPLATE END: templates/client/mod_customnav.html5 -->\n \n <!-- TEMPLATE START: templates/client/rsce_client_footer_copyright.html5 -->\n \n <!-- indexer::stop -->\n <div class="footer-copyright ce_rsce_client_footer_copyright">\n \t<span><p>© Copyright 2026. Essensei. Tous droits réservés. <a href="https://www.bioweb.fr" target="_blank" rel="noopener">Site cultivé par <img style="width: 50px; height: auto;" src="https://www.bioweb.fr/files/images/common/bioweb-logo-1-cr.png" alt="Logo BioWeb.fr"></a></p></span>\n </div>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: templates/client/rsce_client_footer_copyright.html5 -->\n \n <!-- TEMPLATE START: templates/client/rsce_client_footer_top.html5 -->\n \n <!-- indexer::stop -->\n <a href="formation/decouper-et-affiner-les-user-stories#top" class="footer-top-link ce_rsce_client_footer_top">\n \tNach oben</a>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: templates/client/rsce_client_footer_top.html5 -->\n \t\t\t</footer>\n \t\t\t</div>\n \n \t\n \n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/jquery/j_accordion.html5 -->\n \n <script src="/assets/jquery-ui/js/jquery-ui.min.js?v=1.13.2"></script>\n <script>\n jQuery(function($) {\n $(document).accordion({\n // Put custom options here\n heightStyle: 'content',\n header: '.toggler',\n collapsible: true,\n create: function(event, ui) {\n ui.header.addClass('active');\n $('.toggler').attr('tabindex', 0);\n },\n activate: function(event, ui) {\n ui.newHeader.addClass('active');\n ui.oldHeader.removeClass('active');\n $('.toggler').attr('tabindex', 0);\n }\n });\n });\n </script>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/jquery/j_accordion.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/jquery/j_colorbox.html5 -->\n \n <script src="/assets/colorbox/js/colorbox.min.js?v=1.6.4.2"></script>\n <script>\n jQuery(function($) {\n $('a[data-lightbox]').map(function() {\n $(this).colorbox({\n // Put custom options here\n loop: false,\n rel: $(this).attr('data-lightbox'),\n maxWidth: '95%',\n maxHeight: '95%'\n });\n });\n });\n </script>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/jquery/j_colorbox.html5 -->\n \n <!-- TEMPLATE START: vendor/contao/core-bundle/contao/templates/jquery/j_tablesort.html5 -->\n \n <script src="/assets/tablesorter/js/tablesorter.min.js?v=2.31.3.1"></script>\n <script>\n jQuery(function($) {\n $('.ce_table .sortable').each(function(i, table) {\n var attr = $(table).attr('data-sort-default'),\n opts = {}, s;\n \n if (attr) {\n s = attr.split('|');\n opts = { sortList: [[s[0], s[1] == 'desc' | 0]] };\n }\n \n $(table).tablesorter(opts);\n });\n });\n </script>\n \n <!-- TEMPLATE END: vendor/contao/core-bundle/contao/templates/jquery/j_tablesort.html5 -->\n \n <!-- TEMPLATE START: templates/client/js_modernizr.html5 -->\n \n <!-- TEMPLATE END: templates/client/js_modernizr.html5 -->\n \n <!-- TEMPLATE START: templates/client/js_mediaelement.html5 -->\n \n <!-- TEMPLATE END: templates/client/js_mediaelement.html5 -->\n <script src="/files/client/js/script.js?v=b45a08b4"></script><script src="/files/client/js/shared.js?v=b45a08b4"></script> <script type="application/ld+json">\n {\n "@context": "https:\/\/schema.org",\n "@graph": [\n {\n "@type": "WebPage"\n },\n {\n "@id": "#\/schema\/news\/45",\n "@type": "NewsArticle",\n "author": {\n "@type": "Person",\n "name": "Pascal Poussard"\n },\n "datePublished": "2025-03-20T14:46:00+01:00",\n "description": "Cette formation vous aidera à appréhender la nature réelle des User Stories, à les découper selon une logique de progression plutôt que de construction et de les affiner pour obtenir le niveau de qualité attendu par l'état de l'art en la matière.",\n "headline": "Découper et affiner les User Stories",\n "image": {\n "@id": "#\/schema\/image\/dcd01b0c-4206-11f0-8234-45a19a9312a5",\n "@type": "ImageObject",\n "contentUrl": "\/assets\/images\/m\/aleksandar-zivkovic-5ft9zo7_pjy-unsplash-7jvna1bch2t8pr9.jpg"\n },\n "text": "Description\nLe Product Owner, l'un des rôles pilier de Scrum a en charge de piloter le développement du produit et de créer une compréhension partagée de ce qui est attendue par le biais de spécifications agiles. Les User Stories en sont le standard de facto. Cette formation vous aidera à appréhender la nature réelle des User Stories, à les découper selon une logique de progression plutôt que de construction et de les affiner pour obtenir le niveau de qualité attendu par l'état de l'art en la matière.\n\u{A0}Pré-inscription\nPoints fort de la formation\nUn exercice de Carpaccio ludique, permettant d’expérimenter le découpage et l’enchainement de User Stories : découpage des fonctionnalités, stratégie de progression de valeur.\nUne pédagogie active et immersive inspirée des neurosciences : ancrage durable des connaissances par l’expérimentation, les échanges et la mise en situation.\nDes formateurs expérimentés, praticiens et certifiés : à la fois formateurs, créateurs des programmes et consultants, nos experts conjuguent leurs expériences professionnelles et leurs pédagogies pour accompagner au mieux chacun des stagiaires.\nObjectifs pour produire des User Stories de qualité\nMieux spécifier vos User Stories\nAméliorer la qualité d'élaboration de vos User Stories\nProgresser vers un meilleur découpage de vos User Stories orienté produit\nDévelopper des stratégies d'évolution de votre produit\nTraiter de manière pertinente les cas particuliers de User Stories\nProgramme de la formation\nModule 1 Qu’est-ce qu’une User Story ?\nComprendre\nLa spécification agile via les User Stories\nLes 3C de Ron Jeffries\nPratiquer\nLa formulation de User Stories\nLes conversations avec les parties prenantes et l’équipe de réalisation\nModule 2 Affiner les User Stories\nComprendre\nLes caractéristiques INVEST d’une User Story\nPratiquer\nEvaluer des User Stories avec INVEST\nModule 3 Découper les User Stories\nComprendre\nDifférentes techniques de découpage\nLe coût du délai\nPratiquer\nLe découpage en User Stories d’un besoin fonctionnel\nLa construction d’une progression de valeur\nLe choix d’une stratégie produit\nModule 4 Les User Stories qui n’en sont pas\nComprendre\nLes User Stories “techniques”\nLe vocabulaire à éviter dans les User Stories\nPratiquer\nReformuler en User Story ayant de la valeur pour l’utilisateur\nPublic visé et pré-requis\nProduct Owner en poste effectif \/ débutant\nConnaissance du rôle et des missions du Product Owner\nFormation initiale au rôle de PO utile mais non indispensable\nCette formation est-elle pour moi\u{A0}?\nL'équipe de développement trouve les US trop grosses pour être terminées sur la durée de l'itération L'équipe de développement pose trop de questions sur les US en cours d'itération Mes US s'intitulent etq utilisateur, etq PO, etq développeur... J'écris les US tout seul dans mon coin Il faut attendre la réalisation de plusieurs US dépendantes entre elles pour tester une fonctionnalité\nPlutôt pas pour moi\nPlutôt pour moi\nApproche pédagogique\nPédagogie où chaque apprentissage débute par une mise en situation à partir de laquelle le stagiaire construit ses apprentissages. Les exercices sont effectués en sous-groupes, les cycles d’apprentissages se concluant par des périodes de débrief entre stagiaires.\nAteliers concrets de mise en pratique\nPartage d’expérience dans une ambiance conviviale insistant sur les échanges entre stagiaires.\nExemples de mises en application réelles\nTemps de réflexion avec synthèse des points clés\nMise à disposition de ressources préalables à la formation pour se préparer au sujet, puis mise à disposition des supports de formation ainsi que des ressources complémentaires pour approfondir\nProjection sur des actions concrètes à mettre en place au quotidien\nPourquoi choisir essensei comme organisme de formation\u{A0}?\nDans des contextes agiles, les formations ne peuvent pas se résumer à dérouler un support de cours accompagné de quelques quiz, ou à délivrer un guide théorique en vue de passer certification. Chez essensei, nous accompagnons celles et ceux qui veulent dépasser les méthodes figées pour retrouver du sens, de la cohérence et de l’impact dans leurs projets.\nEn somme, ce que nous offrons à nos stagiaires à travers nos formations, c’est :\nUne transformation réelle de leurs pratiques.\nUne montée en compétence utile, ancrée dans le quotidien,\nDes coachs agiles seniors passionnés qui ont le goût de transmettre cette passion ainsi que leurs savoirs.\nUne expérience du terrain, acquise à travers des années d’interventions au cœur des entreprises\nUne certaine exigence et un accompagnement bienveillant pour favoriser un apprentissage réel et durable\nUne capacité à mieux collaborer, à aligner les équipes, à piloter des produits ou des transformations complexes avec plus d'efficacité\nNous avons conçu nos formations agiles pour cela, au croisement de l'expérience terrain, de la rigueur pédagogique et de la compréhension systémique des organisations.\nChaque session est une opportunité d'expérimentation, de prise de recul, d’apprentissage par la pratique.\nQue vous soyez manager, coach agile, chef de projet ou Product Owner, nos formations vous donnent les clés pour progresser, fédérer vos équipes et faire vraiment bouger les lignes.\nSi vous cherchez plus qu'une formation agile classique, une manière de penser, de décider, d’agir autrement — vous êtes au bon endroit.\nModalités d’évaluation\nAuto-positionnement en début de formation pour révéler les connaissances déjà acquises\nAuto-évaluation en continu par le biais d'exercices pratiques\nSynthèse des acquis dans le carnet de route\nQuizz d’évaluation réguliers\nTransposition des acquis grâce à l’exercice des “premiers petits pas” pour construire un “plan de résultats”\nEvaluation de fin de formation\nQuestionnaire de satisfaction des stagiaires à l’issue de la formation\nUne attestation de participation et d’acquis des connaissances est délivrée aux stagiaires.\nMoyens pédagoqiques techniques\nSupport audio-visuel\nSupport de cours\nCarnet de route pour consigner les résultats des exercices, les synthèses et les débriefs.\nL’essensei book, à la fois un guide reprenant les sujets vus en formation, un manuel de référence et un index des ressources vers lesquelles se tourner pour aller plus loin.\nChiffres clés\nSatisfaction des attentes\nParfaitement (67%) - Oui (33%)\nTaux de réussite\n92%\nAssiduité\n100%\nFormateur(s)\nChristophe Addinquy\nAnne Gabrillagues\nPascal Poussard\nChristian Gossart\nInfos pratiques\nContact pédagogique : formation@essensei.fr\nDéclaration d’activité enregistrée sous le numéro 11756048175. Cet enregistrement ne vaut pas agrément de l’État.\nPour toutes questions relatives aux adaptations possibles et à l’accessibilité aux personnes en situation de handicap, vous pouvez contacter notre référent, Pascal Poussard pascal.poussard@essensei.fr\nPour toutes questions sur les solutions de financement, vous pouvez contacter, Christophe Addinquy christophe.addinquy@essensei.fr\nReférence\nPOADA\nPrix\nInter Intra\n800\u{A0}€\u{A0}HT * Sur\u{A0}devis\n* par participant, incluant repas et collations\nDurée\n1 jour soit 7 heures\nModalité de participation et accès\nCe module s’inscrit dans un parcours thématique mais peut être suivi indépendamment.\nFormation dispensée en présence. Adaptable en distanciel sur demande.\nDe 3 à 15 participants\nToute inscription doit être finalisée 48h avant le début de la formation par un devis signé\n3 participants minimum pour le maintien de la session, une confirmation est envoyée une semaine avant la date de la première session\nPré Inscription via le formulaire de bas de page, nous vous répondons sous 24h\nNos salles de formation sont accessibles aux personnes à mobilité réduite. Pour toutes autres adaptations pour des situations de handicap, n’hésitez pas à contacter notre référent handicap pascal.poussard@essensei.fr\nEn savoir plus sur le handicap avec essensei\n\u{A0}Programme de la formation \u{A0}Téléchargez notre catalogue\nPour aller plus loin\nPOASP - Spécifier et tester par l’exemple: Ce module vous aidera à élaborer avec votre équipe une meilleure compréhension partagée de vos User Stories et de produire des incréments produits prêts pour la production.\nconst buttons = document.querySelectorAll('.pourmoi .buttons button'); const cursor = document.querySelector('.cursor'); const track = document.querySelector('.track'); const negativeText = document.querySelector('.negative-text'); const positiveText = document.querySelector('.positive-text'); let activeValues = 0; buttons.forEach(button => { button.addEventListener('click', () => { const value = parseInt(button.getAttribute('data-value')); if (button.classList.contains('active-negative') || button.classList.contains('active-positive')) { activeValues -= value; button.classList.remove('active-negative', 'active-positive'); } else { activeValues += value; if (value < 0) { button.classList.add('active-negative'); } else { button.classList.add('active-positive'); } } let position = Math.max(-100, Math.min(100, activeValues)); const percent = (position + 100) \/ 2; cursor.style.left = `${percent}%`; updateTrackColor(position); updateTextVisibility(position); }); }); function updateTrackColor(position) { if (position = 40) { const intensity = position \/ 100; track.style.backgroundColor = `rgb(${60 * (1 - intensity)}, ${204}, ${70 * (1 - intensity)})`; } else { track.style.backgroundColor = '#00b7db'; } } function updateTextVisibility(position) { if (position < 0) { negativeText.classList.add('visible'); positiveText.classList.remove('visible'); } else if (position > 0) { positiveText.classList.add('visible'); negativeText.classList.remove('visible'); } else { negativeText.classList.remove('visible'); positiveText.classList.remove('visible'); } }",\n "url": "\/formation\/decouper-et-affiner-les-user-stories"\n },\n {\n "@type": "Course",\n "courseCode": "POADA",\n "coursePrerequisites": "Product Owner en poste effectif \/ débutant\nConnaissance du rôle et des missions du Product Owner\nFormation initiale au rôle de PO utile mais non indispensable",\n "description": "<p>Le Product Owner, l'un des rôles pilier de Scrum a en charge de piloter le développement du produit et de créer une compréhension partagée de ce qui est attendue par le biais de spécifications agiles. Les User Stories en sont le standard de facto. Cette formation vous aidera à appréhender la nature réelle des User Stories, à les découper selon une logique de progression plutôt que de construction et de les affiner pour obtenir le niveau de qualité attendu par l'état de l'art en la matière.<\/p>",\n "hasCourseInstance": {\n "@type": "CourseInstance",\n "courseMode": "En présentiel (distanciel possible sur demande)",\n "instructor": [\n {\n "@type": "Person",\n "name": "Christophe Addinquy"\n },\n {\n "@type": "Person",\n "name": "Anne Gabrillagues"\n },\n {\n "@type": "Person",\n "name": "Pascal Poussard"\n },\n {\n "@type": "Person",\n "name": "Christian Gossart"\n }\n ],\n "location": "Région parisienne (déplacement possible en France sur demande)",\n "offers": {\n "@type": "Offer",\n "category": "Formation inter-entreprise",\n "price": "800",\n "priceCurrency": "EUR",\n "validFrom": "2025-01-01"\n }\n },\n "interactivityType": "active",\n "name": "Découper et affiner les User Stories",\n "provider": {\n "@type": "Organization",\n "name": "essensei",\n "sameAs": "https:\/\/essensei.fr"\n },\n "teaches": "Mieux spécifier vos User Stories\nAméliorer la qualité d'élaboration de vos User Stories\nProgresser vers un meilleur découpage de vos User Stories orienté produit\nDévelopper des stratégies d'évolution de votre produit\nTraiter de manière pertinente les cas particuliers de User Stories",\n "url": "https:\/\/www.essensei.fr\/decouper-et-affiner-les-user-stories"\n }\n ]\n }\n </script>\n <script type="application/ld+json">\n {\n "@context": "https:\/\/schema.contao.org",\n "@graph": [\n {\n "@type": "Page",\n "fePreview": false,\n "groups": [],\n "noSearch": false,\n "pageId": 308,\n "protected": false,\n "title": "Découper et affiner les User Stories"\n }\n ]\n }\n </script>\n \n <!-- TEMPLATE START: vendor/oveleon/contao-cookiebar/contao/templates/cookiebar/cookiebar_simple.html5 -->\n <!-- indexer::stop -->\n <div class="contao-cookiebar cc-wrap cookiebar_simple cc-bottom cc-right" role="complementary" aria-describedby="cookiebar-desc" data-nosnippet>\n <div class="cc-inner" aria-live="assertive" role="alert">\n <div id="cookiebar-desc" class="cc-head">\n <p>Nous utilisons des cookies pour nous assurer que nous vous offrons la meilleure expérience sur notre site Web. Si vous continuez sans modifier vos paramètres, nous supposerons que vous acceptez de recevoir tous les cookies de ce site Web. Remarque : Vous pouvez utiliser cette case pour toute information et choisir s'il doit être possible de l'afficher à nouveau ou non.</p> </div>\n <div class="cc-footer highlight">\n <button class="cc-btn cc-focus success" data-accept-all>Tout accepter</button>\n <button class="cc-btn cc-focus deny" data-deny-all>Tout refuser</button>\n <button class="cc-btn cc-focus info" data-toggle-group aria-expanded="false" data-ft-opener aria-controls="cg">Paramètres de confidentialité</button>\n <div id="cg" class="cc-groups toggle-group">\n <div class="cc-group">\n <input type="checkbox" name="group[]" id="g1" value="1" data-toggle-cookies disabled checked>\n <label for="g1" class="group">Essential</label>\n <div class="cc-cookies">\n <p>Ceci est le texte essentiel</p> <div class="cc-cookie">\n <input type="checkbox" name="cookie[]" id="c2" value="2" disabled checked>\n <label for="c2" class="cookie">Contao HTTPS CSRF Token</label>\n <p>Protects against cross-site request forgery attacks.</p> <div class="cc-cookie-info">\n <div><span>Durée de conservation:</span> This cookie will only remain for the current browser session.</div>\n </div>\n </div>\n <div class="cc-cookie">\n <input type="checkbox" name="cookie[]" id="c3" value="3" disabled checked>\n <label for="c3" class="cookie">PHP SESSION ID</label>\n <p>Saves the current PHP session.</p> <div class="cc-cookie-info">\n <div><span>Durée de conservation:</span> This cookie will only remain for the current browser session.</div>\n </div>\n </div>\n </div>\n </div>\n <div class="cc-group">\n <input type="checkbox" name="group[]" id="g2" value="2" data-toggle-cookies>\n <label for="g2" class="group">Analytics</label>\n <div class="cc-cookies">\n <div class="cc-cookie">\n <input type="checkbox" name="cookie[]" id="c4" value="4">\n <label for="c4" class="cookie">Google Analytics</label>\n <p>Cookie de Google pour l'analyse du site Web. Génère des données statistiques sur la façon dont le visiteur utilise le site Web.</p> <button class="cc-detail-btn-details cc-focus" data-toggle-group aria-expanded="false" aria-controls="cc4">\n <span>Afficher plus de détails<span class="cc-invisible"> for Google Analytics</span></span>\n <span>Masquer plus de détails<span class="cc-invisible"> for Google Analytics</span></span>\n </button>\n <div id="cc4" class="cc-cookie-desc toggle-group" style="display: none">\n <p>Fournisseur : Google Ireland Ltd., Gordon House, Barrow Street, Dublin 4, Irlande<br>Durée de stockage : Vous pouvez en savoir plus sur la durée de stockage du cookie ici <a href="https://policies.google.com/privacy." target="_blank" rel="noopener">https://policies.google.com/privacy.</a></p> </div>\n </div>\n </div>\n </div>\n <button class="cc-btn cc-focus save" data-save>Sauvegarder la sélection</button>\n </div>\n </div>\n <div class="cc-info">\n <a href="https://www.essensei.fr/mentions-legales">Mentions légales</a>\n </div>\n </div>\n </div>\n <!-- indexer::continue -->\n \n <!-- TEMPLATE END: vendor/oveleon/contao-cookiebar/contao/templates/cookiebar/cookiebar_simple.html5 -->\n <script>var cookiebar = new ContaoCookiebar({configId:1,pageId:225,hideOnInit:0,blocking:0,focusTrap:1,version:5,lifetime:63072000,consentLog:0,token:'ccb_contao_token',doNotTrack:0,currentPageId:308,excludedPageIds:null,cookies:{"4":{"id":4,"type":"script","checked":true,"token":["_ga"],"resources":[{"src":"https:\/\/www.googletagmanager.com\/gtag\/js?id=G-4QSPQ0KZCR","flags":["async"],"mode":1}],"priority":0,"scripts":[{"script":"window.addEventListener('load', function() {\n if (!window.webVitals) {\n console.error('Web Vitals non charg\u00e9');\n return;\n }\n\n window.dataLayer = window.dataLayer || [];\n function gtag(){ dataLayer.push(arguments); }\n gtag('js', new Date());\n gtag('config', 'G-4QSPQ0KZCR', {\n anonymize_ip: true,\n allow_ad_personalization_signals: false\n });\n\n function sendToGA(metric) {\n gtag('event', metric.name, {\n event_category: 'Web Vitals',\n value: Math.round(metric.name === 'CLS' ? metric.delta * 1000 : metric.delta),\n event_label: metric.id, \n non_interaction: true\n });\n }\n\n ['onCLS','onFID','onLCP','onINP','onTTFB'].forEach(fn => {\n if (typeof webVitals[fn] === 'function') {\n webVitals[fn](sendToGA);\n } else {\n console.warn(fn + ' non disponible');\n }\n });\n});","position":1,"mode":1}]}},configs:[],disableTracking:0,texts:{acceptAndDisplay:'tl_cookiebar.acceptAndDisplayLabel'}});</script>\n \n <div id="sfwdtbe4880" class="sf-toolbar sf-display-none" role="region" aria-label="Symfony Web Debug Toolbar"> <!-- START of Symfony Web Debug Toolbar --><div id="sfMiniToolbar-be4880" class="sf-minitoolbar" data-no-turbolink data-turbo="false"> <button type="button" title="Show Symfony toolbar" id="sfToolbarMiniToggler-be4880" accesskey="D" aria-expanded="false" aria-controls="sfToolbarMainContent-be4880"> <svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Symfony" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 .9C5.8.9.9 5.8.9 12a11 11 0 1 0 22.2 0A11 11 0 0 0 12 .9zm6.5 6c-.6 0-.9-.3-.9-.8 0-.2 0-.4.2-.6l.2-.4c0-.3-.5-.4-.6-.4-1.8.1-2.3 2.5-2.7 4.4l-.2 1c1 .2 1.8 0 2.2-.3.6-.4-.2-.7-.1-1.2.1-.3.5-.5.7-.6.5 0 .7.5.7.9 0 .7-1 1.8-3 1.8l-.6-.1-.6 2.4c-.4 1.6-.8 3.8-2.4 5.7-1.4 1.7-2.9 1.9-3.5 1.9-1.2 0-1.9-.6-2-1.5 0-.8.7-1.3 1.2-1.3.6 0 1.1.5 1.1 1s-.2.6-.4.6c-.1.1-.3.2-.3.4 0 .1.1.3.4.3.5 0 .8-.3 1.1-.5 1.2-.9 1.6-2.7 2.2-5.7l.1-.7.7-3.2c-.8-.6-1.3-1.4-2.4-1.7-.6-.1-1.1.1-1.5.5-.4.5-.2 1.1.2 1.5l.7.6c.7.8 1.2 1.6 1 2.5-.3 1.5-2 2.6-4 1.9-1.8-.6-2-1.8-1.8-2.5.2-.6.6-.7 1.1-.6.5.2.6.7.6 1.2l-.1.3c-.2.1-.3.3-.3.4-.1.4.4.6.7.7.7.3 1.6-.2 1.8-.8a1 1 0 0 0-.4-1.1l-.7-.8c-.4-.4-1.1-1.4-.7-2.6.1-.5.4-.9.7-1.3a4 4 0 0 1 2.8-.6c1.2.4 1.8 1.1 2.6 1.8.5-1.2 1-2.4 1.8-3.5.9-.9 1.9-1.6 3.1-1.7 1.3.2 2.2.7 2.2 1.6 0 .4-.2 1.1-.9 1.1z"/></svg> </button></div><div id="sfToolbarClearer-be4880" class="sf-toolbar-clearer"></div><div id="sfToolbarMainContent-be4880" class="sf-toolbarreset notranslate clear-fix" data-no-turbolink data-turbo="false"> <div class="sf-toolbar-block sf-toolbar-block-request sf-toolbar-status-normal " > <a href="https://www.essensei.fr/_profiler/be4880?panel=request"> <div class="sf-toolbar-icon"> <svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Symfony" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 .9C5.8.9.9 5.8.9 12a11 11 0 1 0 22.2 0A11 11 0 0 0 12 .9zm6.5 6c-.6 0-.9-.3-.9-.8 0-.2 0-.4.2-.6l.2-.4c0-.3-.5-.4-.6-.4-1.8.1-2.3 2.5-2.7 4.4l-.2 1c1 .2 1.8 0 2.2-.3.6-.4-.2-.7-.1-1.2.1-.3.5-.5.7-.6.5 0 .7.5.7.9 0 .7-1 1.8-3 1.8l-.6-.1-.6 2.4c-.4 1.6-.8 3.8-2.4 5.7-1.4 1.7-2.9 1.9-3.5 1.9-1.2 0-1.9-.6-2-1.5 0-.8.7-1.3 1.2-1.3.6 0 1.1.5 1.1 1s-.2.6-.4.6c-.1.1-.3.2-.3.4 0 .1.1.3.4.3.5 0 .8-.3 1.1-.5 1.2-.9 1.6-2.7 2.2-5.7l.1-.7.7-3.2c-.8-.6-1.3-1.4-2.4-1.7-.6-.1-1.1.1-1.5.5-.4.5-.2 1.1.2 1.5l.7.6c.7.8 1.2 1.6 1 2.5-.3 1.5-2 2.6-4 1.9-1.8-.6-2-1.8-1.8-2.5.2-.6.6-.7 1.1-.6.5.2.6.7.6 1.2l-.1.3c-.2.1-.3.3-.3.4-.1.4.4.6.7.7.7.3 1.6-.2 1.8-.8a1 1 0 0 0-.4-1.1l-.7-.8c-.4-.4-1.1-1.4-.7-2.6.1-.5.4-.9.7-1.3a4 4 0 0 1 2.8-.6c1.2.4 1.8 1.1 2.6 1.8.5-1.2 1-2.4 1.8-3.5.9-.9 1.9-1.6 3.1-1.7 1.3.2 2.2.7 2.2 1.6 0 .4-.2 1.1-.9 1.1z"/></svg> <span class="sf-toolbar-value sf-toolbar-ajax-request-counter"> Loading… </span> </div> </a> <div class="sf-toolbar-info"> <div class="sf-toolbar-info-piece"> <b>Loading the web debug toolbar…</b> </div> <div class="sf-toolbar-info-piece"> Attempt #<span id="sfLoadCounter-be4880"></span> </div> <div class="sf-toolbar-info-piece"> <b> <button class="sf-cancel-button" type="button" id="sfLoadCancel-be4880" title="Cancel loading">Cancel</button> </b> </div> </div></div> <button class="hide-button" type="button" id="sfToolbarHideButton-be4880" title="Close Toolbar" accesskey="D" aria-expanded="true" aria-controls="sfToolbarMainContent-be4880"> <svg xmlns="http://www.w3.org/2000/svg" data-icon-name="icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <line x1="18" y1="6" x2="6" y2="18"></line> <line x1="6" y1="6" x2="18" y2="18"></line></svg> </button></div><!-- END of Symfony Web Debug Toolbar --></div><link rel="stylesheet" nonce="514ef3c5d9767d1a6a21f71eac8303c7" href="https://www.essensei.fr/_wdt/styles" /><script nonce="74a16a87ca2529e35f6de17e6acd225a">/*<![CDATA[*/ if (typeof Sfjs === 'undefined' || typeof Sfjs.loadToolbar === 'undefined') { Sfjs = (function() { "use strict"; if ('classList' in document.documentElement) { var hasClass = function (el, cssClass) { return el.classList.contains(cssClass); }; var removeClass = function(el, cssClass) { el.classList.remove(cssClass); }; var addClass = function(el, cssClass) { el.classList.add(cssClass); }; var toggleClass = function(el, cssClass) { el.classList.toggle(cssClass); }; } else { var hasClass = function (el, cssClass) { return el.className.match(new RegExp('\\b' + cssClass + '\\b')); }; var removeClass = function(el, cssClass) { el.className = el.className.replace(new RegExp('\\b' + cssClass + '\\b'), ' '); }; var addClass = function(el, cssClass) { if (!hasClass(el, cssClass)) { el.className += " " + cssClass; } }; var toggleClass = function(el, cssClass) { hasClass(el, cssClass) ? removeClass(el, cssClass) : addClass(el, cssClass); }; } var noop = function() {}; var profilerStorageKey = 'symfony/profiler/'; var addEventListener; var el = document.createElement('div'); if (!('addEventListener' in el)) { addEventListener = function (element, eventName, callback) { element.attachEvent('on' + eventName, callback); }; } else { addEventListener = function (element, eventName, callback) { element.addEventListener(eventName, callback, false); }; } var request = function(url, onSuccess, onError, payload, options, tries) { url = new URL(url); url.searchParams.set('XDEBUG_IGNORE', '1'); url = url.toString(); var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); options = options || {}; options.retry = options.retry || false; tries = tries || 1; /* this delays for 125, 375, 625, 875, and 1000, ... */ var delay = tries < 5 ? (tries - 0.5) * 250 : 1000; xhr.open(options.method || 'GET', url, true); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.onreadystatechange = function(state) { if (4 !== xhr.readyState) { return null; } if (xhr.status == 404 && options.retry && !options.stop) { setTimeout(function() { if (options.stop) { return; } request(url, onSuccess, onError, payload, options, tries + 1); }, delay); return null; } if (200 === xhr.status) { (onSuccess || noop)(xhr); } else { (onError || noop)(xhr); } }; if (options.onSend) { options.onSend(tries); } xhr.send(payload || ''); }; var getPreference = function(name) { if (!window.localStorage) { return null; } return localStorage.getItem(profilerStorageKey + name); }; var setPreference = function(name, value) { if (!window.localStorage) { return null; } localStorage.setItem(profilerStorageKey + name, value); }; var requestStack = []; var extractHeaders = function(xhr, stackElement) { /* Here we avoid to call xhr.getResponseHeader in order to */ /* prevent polluting the console with CORS security errors */ var allHeaders = xhr.getAllResponseHeaders(); var ret; if (ret = allHeaders.match(/^x-debug-token:\s+(.*)$/im)) { stackElement.profile = ret[1]; } if (ret = allHeaders.match(/^x-debug-token-link:\s+(.*)$/im)) { stackElement.profilerUrl = ret[1]; } if (ret = allHeaders.match(/^Symfony-Debug-Toolbar-Replace:\s+(.*)$/im)) { stackElement.toolbarReplaceFinished = false; stackElement.toolbarReplace = '1' === ret[1]; } }; var successStreak = 4; var pendingRequests = 0; var renderAjaxRequests = function() { var requestCounter = document.querySelector('.sf-toolbar-ajax-request-counter'); if (!requestCounter) { return; } requestCounter.textContent = requestStack.length; var infoSpan = document.querySelector(".sf-toolbar-ajax-info"); if (infoSpan) { infoSpan.textContent = requestStack.length + ' AJAX request' + (requestStack.length !== 1 ? 's' : ''); } var ajaxToolbarPanel = document.querySelector('.sf-toolbar-block-ajax'); if (requestStack.length) { ajaxToolbarPanel.style.display = 'block'; } else { ajaxToolbarPanel.style.display = 'none'; } if (pendingRequests > 0) { addClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); } else if (successStreak < 4) { addClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); } else { removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); removeClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); } }; var startAjaxRequest = function(index) { var tbody = document.querySelector('.sf-toolbar-ajax-request-list'); if (!tbody) { return; } var nbOfAjaxRequest = tbody.rows.length; if (nbOfAjaxRequest >= 100) { tbody.deleteRow(0); } var request = requestStack[index]; pendingRequests++; var row = document.createElement('tr'); request.DOMNode = row; var requestNumberCell = document.createElement('td'); requestNumberCell.textContent = index + 1; row.appendChild(requestNumberCell); var profilerCell = document.createElement('td'); profilerCell.textContent = 'n/a'; row.appendChild(profilerCell); var methodCell = document.createElement('td'); methodCell.textContent = request.method; row.appendChild(methodCell); var typeCell = document.createElement('td'); typeCell.textContent = request.type; row.appendChild(typeCell); var statusCodeCell = document.createElement('td'); var statusCode = document.createElement('span'); statusCode.textContent = 'n/a'; statusCodeCell.appendChild(statusCode); row.appendChild(statusCodeCell); var pathCell = document.createElement('td'); pathCell.className = 'sf-ajax-request-url'; if ('GET' === request.method) { var pathLink = document.createElement('a'); pathLink.setAttribute('href', request.url); pathLink.textContent = request.url; pathCell.appendChild(pathLink); } else { pathCell.textContent = request.url; } pathCell.setAttribute('title', request.url); row.appendChild(pathCell); var durationCell = document.createElement('td'); durationCell.className = 'sf-ajax-request-duration'; durationCell.textContent = 'n/a'; row.appendChild(durationCell); request.liveDurationHandle = setInterval(function() { durationCell.textContent = (new Date() - request.start) + ' ms'; }, 100); row.className = 'sf-ajax-request sf-ajax-request-loading'; tbody.insertBefore(row, null); var toolbarInfo = document.querySelector('.sf-toolbar-block-ajax .sf-toolbar-info'); toolbarInfo.scrollTop = toolbarInfo.scrollHeight; renderAjaxRequests(); }; var finishAjaxRequest = function(index) { var request = requestStack[index]; clearInterval(request.liveDurationHandle); if (!request.DOMNode) { return; } if (request.toolbarReplace && !request.toolbarReplaceFinished && request.profile) { /* Flag as complete because finishAjaxRequest can be called multiple times. */ request.toolbarReplaceFinished = true; /* Search up through the DOM to find the toolbar's container ID. */ for (var elem = request.DOMNode; elem && elem !== document; elem = elem.parentNode) { if (elem.id.match(/^sfwdt/)) { Sfjs.loadToolbar(elem.id.replace(/^sfwdt/, ''), request.profile); break; } } } pendingRequests--; var row = request.DOMNode; /* Unpack the children from the row */ var profilerCell = row.children[1]; var methodCell = row.children[2]; var statusCodeCell = row.children[4]; var statusCodeElem = statusCodeCell.children[0]; var durationCell = row.children[6]; if (request.error) { row.className = 'sf-ajax-request sf-ajax-request-error'; methodCell.className = 'sf-ajax-request-error'; successStreak = 0; } else { row.className = 'sf-ajax-request sf-ajax-request-ok'; successStreak++; } if (request.statusCode) { if (request.statusCode < 300) { statusCodeElem.setAttribute('class', 'sf-toolbar-status'); } else if (request.statusCode < 400) { statusCodeElem.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-yellow'); } else { statusCodeElem.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-red'); } statusCodeElem.textContent = request.statusCode; } else { statusCodeElem.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-red'); } if (request.duration) { durationCell.textContent = request.duration + ' ms'; } if (request.profilerUrl) { profilerCell.textContent = ''; var profilerLink = document.createElement('a'); profilerLink.setAttribute('href', request.profilerUrl); profilerLink.textContent = request.profile; profilerCell.appendChild(profilerLink); } renderAjaxRequests(); }; if (window.fetch && window.fetch.polyfill === undefined) { var oldFetch = window.fetch; window.fetch = function () { var promise = oldFetch.apply(this, arguments); var url = arguments[0]; var params = arguments[1]; var paramType = Object.prototype.toString.call(arguments[0]); if (paramType === '[object Request]') { url = arguments[0].url; params = { method: arguments[0].method, credentials: arguments[0].credentials, headers: arguments[0].headers, mode: arguments[0].mode, redirect: arguments[0].redirect }; } else { url = String(url); } if (!url.match(new RegExp("^\/((index|app(_[\\w]+)?)\\.php\/)?_wdt"))) { var method = 'GET'; if (params && params.method !== undefined) { method = params.method; } var stackElement = { error: false, url: url, method: method, type: 'fetch', start: new Date() }; var idx = requestStack.push(stackElement) - 1; promise.then(function (r) { stackElement.duration = new Date() - stackElement.start; stackElement.error = r.status < 200 || r.status >= 400; stackElement.statusCode = r.status; stackElement.profile = r.headers.get('x-debug-token'); stackElement.profilerUrl = r.headers.get('x-debug-token-link'); stackElement.toolbarReplaceFinished = false; stackElement.toolbarReplace = '1' === r.headers.get('Symfony-Debug-Toolbar-Replace'); finishAjaxRequest(idx); }, function (e){ stackElement.error = true; finishAjaxRequest(idx); }); startAjaxRequest(idx); } return promise; }; } if (window.XMLHttpRequest && XMLHttpRequest.prototype.addEventListener) { var proxied = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { var self = this; /* prevent logging AJAX calls to static and inline files, like templates */ var path = url; if (url.slice(0, 1) === '/') { if (0 === url.indexOf('')) { path = url.slice(0); } } else if (0 === url.indexOf('https\u003A\/\/www.essensei.fr')) { path = url.slice(23); } if (!path.match(new RegExp("^\/((index|app(_[\\w]+)?)\\.php\/)?_wdt"))) { var stackElement = { error: false, url: url, method: method, type: 'xhr', start: new Date() }; var idx = requestStack.push(stackElement) - 1; this.addEventListener('readystatechange', function() { if (self.readyState == 4) { stackElement.duration = new Date() - stackElement.start; stackElement.error = self.status < 200 || self.status >= 400; stackElement.statusCode = self.status; extractHeaders(self, stackElement); finishAjaxRequest(idx); } }, false); startAjaxRequest(idx); } proxied.apply(this, Array.prototype.slice.call(arguments)); }; } return { hasClass: hasClass, removeClass: removeClass, addClass: addClass, toggleClass: toggleClass, getPreference: getPreference, setPreference: setPreference, addEventListener: addEventListener, request: request, renderAjaxRequests: renderAjaxRequests, getSfwdt: function(token) { return document.getElementById('sfwdt' + token); }, load: function(selector, url, onSuccess, onError, options) { var el = document.getElementById(selector); if (el && el.getAttribute('data-sfurl') !== url) { request( url, function(xhr) { el.innerHTML = xhr.responseText; el.setAttribute('data-sfurl', url); removeClass(el, 'loading'); var pending = pendingRequests; for (var i = 0; i < requestStack.length; i++) { startAjaxRequest(i); if (requestStack[i].duration) { finishAjaxRequest(i); } } /* Revert the pending state in case there was a start called without a finish above. */ pendingRequests = pending; (onSuccess || noop)(xhr, el); }, function(xhr) { (onError || noop)(xhr, el); }, '', options ); } return this; }, showToolbar: function(token) { var sfwdt = this.getSfwdt(token); removeClass(sfwdt, 'sf-display-none'); if (getPreference('toolbar/displayState') == 'none') { document.getElementById('sfToolbarMainContent-' + token).style.display = 'none'; document.getElementById('sfToolbarClearer-' + token).style.display = 'none'; document.getElementById('sfMiniToolbar-' + token).style.display = 'block'; } else { document.getElementById('sfToolbarMainContent-' + token).style.display = 'block'; document.getElementById('sfToolbarClearer-' + token).style.display = 'block'; document.getElementById('sfMiniToolbar-' + token).style.display = 'none'; } }, hideToolbar: function(token) { var sfwdt = this.getSfwdt(token); addClass(sfwdt, 'sf-display-none'); }, initToolbar: function(token) { this.showToolbar(token); var hideButton = document.getElementById('sfToolbarHideButton-' + token); var hideButtonSvg = hideButton.querySelector('svg'); hideButtonSvg.setAttribute('aria-hidden', 'true'); hideButtonSvg.setAttribute('focusable', 'false'); addEventListener(hideButton, 'click', function (event) { event.preventDefault(); var p = this.parentNode; p.style.display = 'none'; (p.previousElementSibling || p.previousSibling).style.display = 'none'; document.getElementById('sfMiniToolbar-' + token).style.display = 'block'; setPreference('toolbar/displayState', 'none'); }); var showButton = document.getElementById('sfToolbarMiniToggler-' + token); var showButtonSvg = showButton.querySelector('svg'); showButtonSvg.setAttribute('aria-hidden', 'true'); showButtonSvg.setAttribute('focusable', 'false'); addEventListener(showButton, 'click', function (event) { event.preventDefault(); var elem = this.parentNode; if (elem.style.display == 'none') { document.getElementById('sfToolbarMainContent-' + token).style.display = 'none'; document.getElementById('sfToolbarClearer-' + token).style.display = 'none'; elem.style.display = 'block'; } else { document.getElementById('sfToolbarMainContent-' + token).style.display = 'block'; document.getElementById('sfToolbarClearer-' + token).style.display = 'block'; elem.style.display = 'none' } setPreference('toolbar/displayState', 'block'); }); }, loadToolbar: function(token, newToken) { var that = this; var triesCounter = document.getElementById('sfLoadCounter-' + token); var options = { retry: true, onSend: function (count) { if (count === 3) { that.initToolbar(token); } if (triesCounter) { triesCounter.textContent = count; } }, }; var cancelButton = document.getElementById('sfLoadCancel-' + token); if (cancelButton) { addEventListener(cancelButton, 'click', function (event) { event.preventDefault(); options.stop = true; that.hideToolbar(token); }); } newToken = (newToken || token); this.load( 'sfwdt' + token, 'https\u003A\/\/www.essensei.fr\/_wdt\/xxxxxx'.replace(/xxxxxx/, newToken), function(xhr, el) { /* Do nothing in the edge case where the toolbar has already been replaced with a new one */ if (!document.getElementById('sfToolbarMainContent-' + newToken)) { return; } /* Evaluate in global scope scripts embedded inside the toolbar */ var i, scripts = [].slice.call(el.querySelectorAll('script')); for (i = 0; i < scripts.length; ++i) { if (scripts[i].firstChild) { eval.call({}, scripts[i].firstChild.nodeValue); } } el.style.display = -1 !== xhr.responseText.indexOf('sf-toolbarreset') ? 'block' : 'none'; if (el.style.display == 'none') { return; } that.initToolbar(newToken); /* Handle toolbar-info position */ var toolbarBlocks = [].slice.call(el.querySelectorAll('.sf-toolbar-block')); for (i = 0; i < toolbarBlocks.length; ++i) { toolbarBlocks[i].onmouseover = function () { var toolbarInfo = this.querySelectorAll('.sf-toolbar-info')[0]; var pageWidth = document.body.clientWidth; var elementWidth = toolbarInfo.offsetWidth; var leftValue = (elementWidth + this.offsetLeft) - pageWidth; var rightValue = (elementWidth + (pageWidth - this.offsetLeft)) - pageWidth; /* Reset right and left value, useful on window resize */ toolbarInfo.style.right = ''; toolbarInfo.style.left = ''; if (elementWidth > pageWidth) { toolbarInfo.style.left = 0; } else if (leftValue > 0 && rightValue > 0) { toolbarInfo.style.right = (rightValue * -1) + 'px'; } else if (leftValue < 0) { toolbarInfo.style.left = 0; } else { toolbarInfo.style.right = '0px'; } }; } renderAjaxRequests(); addEventListener(document.querySelector('.sf-toolbar-ajax-clear'), 'click', function() { requestStack = []; renderAjaxRequests(); successStreak = 4; document.querySelector('.sf-toolbar-ajax-request-list').innerHTML = ''; }); addEventListener(document.querySelector('.sf-toolbar-block-ajax'), 'mouseenter', function (event) { var elem = document.querySelector('.sf-toolbar-block-ajax .sf-toolbar-info'); elem.scrollTop = elem.scrollHeight; }); addEventListener(document.querySelector('.sf-toolbar-block-ajax > .sf-toolbar-icon'), 'click', function (event) { event.preventDefault(); toggleClass(this.parentNode, 'hover'); }); var dumpInfo = document.querySelector('.sf-toolbar-block-dump .sf-toolbar-info'); if (null !== dumpInfo) { addEventListener(dumpInfo, 'sfbeforedumpcollapse', function () { dumpInfo.style.minHeight = dumpInfo.getBoundingClientRect().height+'px'; }); addEventListener(dumpInfo, 'mouseleave', function () { dumpInfo.style.minHeight = ''; }); } }, function(xhr) { if (xhr.status !== 0 && !options.stop) { var sfwdt = that.getSfwdt(token); sfwdt.innerHTML = '\ <div class="sf-toolbarreset notranslate">\ <div class="sf-toolbar-icon"><svg width="26" height="28" xmlns="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" viewBox="0 0 26 28" enable-background="new 0 0 26 28" xml:space="preserve"><path fill="#FFFFFF" d="M13 0C5.8 0 0 5.8 0 13c0 7.2 5.8 13 13 13c7.2 0 13-5.8 13-13C26 5.8 20.2 0 13 0z M20 7.5 c-0.6 0-1-0.3-1-0.9c0-0.2 0-0.4 0.2-0.6c0.1-0.3 0.2-0.3 0.2-0.4c0-0.3-0.5-0.4-0.7-0.4c-2 0.1-2.5 2.7-2.9 4.8l-0.2 1.1 c1.1 0.2 1.9 0 2.4-0.3c0.6-0.4-0.2-0.8-0.1-1.3C18 9.2 18.4 9 18.7 8.9c0.5 0 0.8 0.5 0.8 1c0 0.8-1.1 2-3.3 1.9 c-0.3 0-0.5 0-0.7-0.1L15 14.1c-0.4 1.7-0.9 4.1-2.6 6.2c-1.5 1.8-3.1 2.1-3.8 2.1c-1.3 0-2.1-0.6-2.2-1.6c0-0.9 0.8-1.4 1.3-1.4 c0.7 0 1.2 0.5 1.2 1.1c0 0.5-0.2 0.6-0.4 0.7c-0.1 0.1-0.3 0.2-0.3 0.4c0 0.1 0.1 0.3 0.4 0.3c0.5 0 0.9-0.3 1.2-0.5 c1.3-1 1.7-2.9 2.4-6.2l0.1-0.8c0.2-1.1 0.5-2.3 0.8-3.5c-0.9-0.7-1.4-1.5-2.6-1.8c-0.8-0.2-1.3 0-1.7 0.4C8.4 10 8.6 10.7 9 11.1 l0.7 0.7c0.8 0.9 1.3 1.7 1.1 2.7c-0.3 1.6-2.1 2.8-4.3 2.1c-1.9-0.6-2.2-1.9-2-2.7c0.2-0.6 0.7-0.8 1.2-0.6 c0.5 0.2 0.7 0.8 0.6 1.3c0 0.1 0 0.1-0.1 0.3C6 15 5.9 15.2 5.9 15.3c-0.1 0.4 0.4 0.7 0.8 0.8c0.8 0.3 1.7-0.2 1.9-0.9 c0.2-0.6-0.2-1.1-0.4-1.2l-0.8-0.9c-0.4-0.4-1.2-1.5-0.8-2.8c0.2-0.5 0.5-1 0.9-1.4c1-0.7 2-0.8 3-0.6c1.3 0.4 1.9 1.2 2.8 1.9 c0.5-1.3 1.1-2.6 2-3.8c0.9-1 2-1.7 3.3-1.8C20 4.8 21 5.4 21 6.3C21 6.7 20.8 7.5 20 7.5z"/></svg></div>\ An error occurred while loading the web debug toolbar. <a href="https\u003A\/\/www.essensei.fr\/_profiler\/' + newToken + '">Open the web profiler.</a>\ </div>\ '; sfwdt.setAttribute('class', 'sf-toolbar sf-error-toolbar'); } }, options ); return this; }, toggle: function(selector, elOn, elOff) { var tmp = elOn.style.display, el = document.getElementById(selector); elOn.style.display = elOff.style.display; elOff.style.display = tmp; if (el) { el.style.display = 'none' === tmp ? 'none' : 'block'; } return this; }, }; })(); } Sfjs.loadToolbar('be4880');/*]]>*/</script>\n </body>\n </html>\n \n <!-- TEMPLATE END: templates/client/fe_page.html5 -->\n """ } -action: "delete" } |
| Envelope stamps when dispatching | No items |
| Envelope stamps after dispatch |
Symfony\Component\Messenger\Stamp\BusNameStamp {#6966 -busName: "messenger.bus.default" } Symfony\Component\Messenger\Stamp\SentStamp {#6996 -senderClass: "Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport" -senderAlias: "contao_prio_low" } Symfony\Component\Messenger\Stamp\TransportMessageIdStamp {#7003 -id: "318542" } |