{"id":17855,"date":"2026-10-21T19:37:23","date_gmt":"2026-10-21T19:37:23","guid":{"rendered":"https:\/\/www.rapidclouddevelopment.com\/?page_id=17855"},"modified":"2026-10-21T19:37:45","modified_gmt":"2026-10-21T19:37:45","slug":"rcd-et-consultingwerk","status":"publish","type":"page","link":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/","title":{"rendered":"RCD &#038; Consultingwerk"},"content":{"rendered":"\n<style>@import url('https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@500;600;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@500&display=swap');.rcd-page{overflow-x:hidden;background:#F6F7FB;color:#0E1424;font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.rcd-page *,.rcd-page *::before,.rcd-page *::after{box-sizing:border-box}.rcd-page img{max-width:100%}.rcd-page picture{display:block}.rcd-page picture>img{display:block;width:inherit;height:inherit;max-width:100%;max-height:inherit;object-fit:inherit;object-position:inherit;border-radius:inherit;aspect-ratio:inherit}.rcd-page details>summary{list-style:none}.rcd-page details>summary::-webkit-details-marker{display:none}.rcd-page details[open]{border-color:#FF6B2C!important}.rcd-page details .rcd-sign{transition:transform .2s,background .2s}.rcd-page details[open] .rcd-sign{background:#C2410C!important;color:#fff!important;transform:rotate(45deg)}.rcd-page a[href^=\"mailto:\"]{word-break:break-all}.rcd-page{--paper: #F6F7FB; --card: #FFFFFF; --line: #E3E7F0; --fg: #0E1424; --muted: #4A5468; --rcd: #FF6B2C; --rcd-strong: #C2410C; --cw: #0F8F86; --cw-soft: #2DD4BF; --ai: #7C5CFF; --tint-rcd: rgba(255,107,44,.09); --tint-cw: rgba(15,143,134,.09); --ink: #0A0E1A; --ink-2: #111729; --on-ink: #E7EAF3; --on-ink-muted: #9AA3B8; --f-display: \"Sora\",ui-sans-serif,system-ui,sans-serif; --f-body: \"Inter\",ui-sans-serif,system-ui,-apple-system,\"Segoe UI\",sans-serif; --f-mono: \"JetBrains Mono\",ui-monospace,Consolas,monospace;}.rcd-page *{box-sizing: border-box;}.rcd-page{background-color: var(--paper); color: var(--fg); font: 400 16px\/1.6 var(--f-body);}.rcd-page .wrap{max-width: 1120px; margin: 0px auto; padding-left: max(16px,env(safe-area-inset-left,0px)); padding-right: max(16px,env(safe-area-inset-right,0px));}.rcd-page h1,.rcd-page h2,.rcd-page h3{font-family: var(--f-display); text-wrap: balance; margin: 0px; letter-spacing: -0.02em;}.rcd-page p{margin: 0px;}.rcd-page .eyebrow{font: 500 12px\/1 var(--f-mono); letter-spacing: 0.14em; text-transform: uppercase; color: var(--rcd-strong);}.rcd-page section{padding-block: 88px;}.rcd-page .sec-head{display: flex; flex-direction: column; gap: 14px; max-width: 720px; margin-bottom: 44px;}.rcd-page .sec-head h2{font-size: clamp(28px, 4vw, 40px); line-height: 1.1;}.rcd-page .sec-head p{color: var(--muted); font-size: 18px;}.rcd-page a{color: inherit;}.rcd-page :focus-visible{outline: 2px solid var(--rcd); outline-offset: 3px; border-radius: 6px;}.rcd-page .hero{background-color: var(--ink); color: var(--on-ink); position: relative; overflow: hidden; background-image: radial-gradient(50% 70% at 12% 10%, rgba(255, 107, 44, 0.22), transparent 70%), radial-gradient(50% 70% at 92% 90%, rgba(45, 212, 191, 0.18), transparent 70%), linear-gradient(rgba(255, 255, 255, 0.043) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.043) 1px, transparent 1px); background-size: auto, auto, 40px 40px, 40px 40px;}.rcd-page .hero .wrap{padding-block: 72px 80px; display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 48px; align-items: center;}.rcd-page .hero .eyebrow{color: rgb(255, 138, 76);}.rcd-page .hero h1{font-size: clamp(38px, 6vw, 68px); line-height: 1.02; letter-spacing: -0.035em; margin-top: 18px;}.rcd-page .grad{background: linear-gradient(90deg, rgb(255, 107, 44), rgb(255, 177, 74) 45%, rgb(45, 212, 191)) text; color: transparent;}.rcd-page .hero .lede{color: var(--on-ink-muted); font-size: 19px; max-width: 560px; margin-top: 22px;}.rcd-page .chips{display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px;}.rcd-page .chip{display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.18); font: 500 13px var(--f-body); color: var(--on-ink);}.rcd-page .chip i{width: 8px; height: 8px; border-radius: 50%; display: block;}.rcd-page .hero-art{min-width: 0px;}.rcd-page .hero-art svg{width: 100%; height: auto; display: block;}.rcd-page .duo{display: grid; grid-template-columns: 1fr auto 1fr; gap: 24px; align-items: stretch;}.rcd-page .party{background-color: var(--card); border: 1px solid var(--line); border-radius: 24px; padding: 32px; display: flex; flex-direction: column; gap: 18px; min-width: 0px;}.rcd-page .party header{display: flex; align-items: center; gap: 14px;}.rcd-page .mark{width: 52px; height: 52px; border-radius: 14px; display: flex; align-items: center; justify-content: center; font: 700 17px var(--f-display); color: rgb(255, 255, 255); flex: 0 0 auto;}.rcd-page .party h3{font-size: 22px;}.rcd-page .party .role{font: 500 12px var(--f-mono); letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted);}.rcd-page .party p{color: var(--muted);}.rcd-page .party ul{list-style: none; margin: 0px; padding: 0px; display: flex; flex-direction: column; gap: 10px;}.rcd-page .party li{display: flex; gap: 10px; align-items: flex-start;}.rcd-page .party li svg{flex: 0 0 auto; margin-top: 4px;}.rcd-page .party .meta{margin-top: auto; padding-top: 16px; border-top: 1px solid var(--line); font: 500 13px var(--f-mono); color: var(--muted); display: flex; flex-wrap: wrap; gap: 6px 16px;}.rcd-page .join{display: flex; align-items: center; justify-content: center;}.rcd-page .join span{width: 56px; height: 56px; border-radius: 50%; background-color: var(--ink); color: rgb(255, 255, 255); display: flex; align-items: center; justify-content: center; font: 600 22px var(--f-display); box-shadow: 0 0 0 6px var(--paper),0 0 30px -4px rgba(255,107,44,.6);}.rcd-page .flow{background-color: var(--card); border: 1px solid var(--line); border-radius: 28px; padding: 28px; display: grid; grid-template-columns: minmax(0px, 1fr); gap: 24px;}.rcd-page .diagram{overflow-x: auto;}.rcd-page .diagram svg{min-width: 760px; width: 100%; height: auto; display: block;}.rcd-page .node rect.box{fill: var(--paper); stroke: var(--line); stroke-width: 1.5; transition: stroke 0.3s, fill 0.3s;}.rcd-page .node text{fill: var(--fg); font-family: var(--f-body);}.rcd-page .node .t{font: 600 15px var(--f-display);}.rcd-page .node .s{font: 400 12px var(--f-body); fill: var(--muted);}.rcd-page .node .k{font: 500 10px var(--f-mono); letter-spacing: 0.12em;}.rcd-page .node.on rect.box{stroke-width: 2.5;}.rcd-page .node.rcd.on rect.box{stroke: var(--rcd); fill: var(--tint-rcd);}.rcd-page .node.cw.on rect.box{stroke: var(--cw); fill: var(--tint-cw);}.rcd-page .node.both.on rect.box{stroke: url(\"#bridgeGrad\"); fill: var(--tint-rcd);}.rcd-page .wire{stroke: var(--line); stroke-width: 2; fill: none;}.rcd-page .wire.on{stroke: var(--rcd); stroke-dasharray: 6, 6; animation: 1s linear 0s infinite normal none running dash;}.rcd-page .wire.on.back{stroke: var(--cw); animation-direction: reverse;}@keyframes dash { \n  100% { stroke-dashoffset: -24; }\n}.rcd-page .zone{font: 500 11px var(--f-mono); letter-spacing: 0.14em; fill: var(--muted);}.rcd-page .steps{display: grid; grid-template-columns: repeat(5, minmax(0px, 1fr)); gap: 10px;}.rcd-page .step{color-scheme: unset; forced-color-adjust: unset; math-depth: unset; position: unset; position-anchor: unset; text-size-adjust: unset; appearance: unset; color: unset; font: unset; font-palette: unset; font-synthesis: unset; position-area: unset; text-orientation: unset; text-rendering: unset; text-spacing-trim: unset; -webkit-font-smoothing: unset; -webkit-locale: unset; -webkit-text-orientation: unset; -webkit-writing-mode: unset; writing-mode: unset; zoom: unset; accent-color: unset; place-content: unset; place-items: unset; place-self: unset; alignment-baseline: unset; anchor-name: unset; anchor-scope: unset; animation-composition: unset; animation: unset; animation-trigger: unset; app-region: unset; aspect-ratio: unset; backdrop-filter: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; baseline-shift: unset; baseline-source: unset; block-size: unset; border-block: unset; border-collapse: unset; border-end-end-radius: unset; border-end-start-radius: unset; border-inline: unset; border-shape: unset; border-start-end-radius: unset; border-start-start-radius: unset; inset: unset; box-decoration-break: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; buffered-rendering: unset; caption-side: unset; caret-animation: unset; caret-color: unset; caret-shape: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; color-rendering: unset; columns: unset; column-fill: unset; rule-break: unset; rule: unset; rule-inset: unset; rule-visibility-items: unset; column-span: unset; contain: unset; contain-intrinsic-block-size: unset; contain-intrinsic-size: unset; contain-intrinsic-inline-size: unset; container: unset; content: unset; content-visibility: unset; corner-shape: unset; corner-block-end-shape: unset; corner-block-start-shape: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cx: unset; cy: unset; d: unset; dominant-baseline: unset; dynamic-range-limit: unset; -electron-corner-smoothing: unset; empty-cells: unset; field-sizing: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-line-count: unset; flex-wrap: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphenate-character: unset; hyphenate-limit-chars: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; initial-letter: unset; inline-size: unset; inset-block: unset; inset-inline: unset; interactivity: unset; interest-delay: unset; interpolate-size: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-break: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask: unset; mask-type: unset; math-shift: unset; math-style: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; object-view-box: unset; offset: unset; opacity: unset; order: unset; orphans: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-block: unset; overflow-clip-margin: unset; overflow-inline: unset; overflow-wrap: unset; overflow: unset; overlay: unset; overscroll-behavior-block: unset; overscroll-behavior-inline: unset; overscroll-behavior: unset; padding-block: unset; padding-inline: unset; page: unset; page-margin-safety: unset; page-orientation: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position-try: unset; position-visibility: unset; print-color-adjust: unset; quotes: unset; r: unset; reading-flow: unset; reading-order: unset; resize: unset; rotate: unset; ruby-align: unset; ruby-overhang: unset; ruby-position: unset; rule-overlap: unset; rx: unset; ry: unset; scale: unset; scroll-behavior: unset; scroll-initial-target: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-marker-group: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-stop: unset; scroll-snap-type: unset; scroll-target-group: unset; scroll-timeline: unset; scrollbar-color: unset; scrollbar-gutter: unset; scrollbar-width: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; size: unset; speak: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; tab-size: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-autospace: unset; text-box: unset; text-combine-upright: unset; text-decoration: unset; text-decoration-skip-ink: unset; text-emphasis: unset; text-emphasis-position: unset; text-fit: unset; text-indent: unset; text-justify: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; text-underline-offset: unset; text-underline-position: unset; text-wrap: unset; timeline-scope: unset; timeline-trigger: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; translate: unset; trigger-scope: unset; user-select: unset; vector-effect: unset; vertical-align: unset; view-timeline: unset; view-transition-class: unset; view-transition-group: unset; view-transition-name: unset; view-transition-scope: unset; visibility: unset; border-spacing: unset; -webkit-box-align: unset; -webkit-box-decoration-break: unset; -webkit-box-direction: unset; -webkit-box-flex: unset; -webkit-box-ordinal-group: unset; -webkit-box-orient: unset; -webkit-box-pack: unset; -webkit-box-reflect: unset; -webkit-line-break: unset; -webkit-line-clamp: unset; -webkit-mask-box-image: unset; -webkit-rtl-ordering: unset; -webkit-ruby-position: unset; -webkit-tap-highlight-color: unset; -webkit-text-combine: unset; -webkit-text-decorations-in-effect: unset; -webkit-text-fill-color: unset; -webkit-text-security: unset; -webkit-text-stroke: unset; -webkit-user-drag: unset; white-space-collapse: unset; widows: unset; width: unset; will-change: unset; window-drag: unset; word-break: unset; word-spacing: unset; x: unset; y: unset; z-index: unset; cursor: pointer; border: 1px solid var(--line); border-radius: 16px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; min-height: 44px; transition: border-color 0.2s, background 0.2s;}.rcd-page .step:hover{border-color: var(--muted);}.rcd-page .step b{font: 500 11px var(--f-mono); letter-spacing: 0.1em; color: var(--muted);}.rcd-page .step span{font: 600 14px\/1.3 var(--f-display);}.rcd-page .step[aria-pressed=\"true\"]{border-color: var(--rcd); background-color: var(--tint-rcd);}.rcd-page .step[aria-pressed=\"true\"] b{color: var(--rcd-strong);}.rcd-page .step:focus-visible{outline: 2px solid var(--rcd); outline-offset: 2px;}.rcd-page .detail{display: grid; grid-template-columns: auto 1fr auto; gap: 20px; align-items: center; padding: 20px 22px; border-radius: 18px; background-color: var(--paper);}.rcd-page .detail .num{font: 700 40px\/1 var(--f-display); color: var(--rcd);}.rcd-page .detail h3{font-size: 19px;}.rcd-page .detail p{color: var(--muted); margin-top: 4px; max-width: 70ch;}.rcd-page .owner{font: 500 11px var(--f-mono); letter-spacing: 0.1em; text-transform: uppercase; padding: 6px 10px; border-radius: 999px; white-space: nowrap;}.rcd-page .owner.rcd{background-color: var(--tint-rcd); color: var(--rcd-strong);}.rcd-page .owner.cw{background-color: var(--tint-cw); color: var(--cw);}.rcd-page .owner.both{background: linear-gradient(90deg,var(--tint-rcd),var(--tint-cw)); color: var(--fg);}.rcd-page .ctrls{display: flex; gap: 10px; justify-content: flex-end;}.rcd-page .btn{color-scheme: unset; forced-color-adjust: unset; math-depth: unset; position: unset; position-anchor: unset; text-size-adjust: unset; appearance: unset; color: unset; font-palette: unset; font-synthesis: unset; position-area: unset; text-orientation: unset; text-rendering: unset; text-spacing-trim: unset; -webkit-font-smoothing: unset; -webkit-locale: unset; -webkit-text-orientation: unset; -webkit-writing-mode: unset; writing-mode: unset; zoom: unset; accent-color: unset; place-content: unset; place-self: unset; alignment-baseline: unset; anchor-name: unset; anchor-scope: unset; animation-composition: unset; animation: unset; animation-trigger: unset; app-region: unset; aspect-ratio: unset; backdrop-filter: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; baseline-shift: unset; baseline-source: unset; block-size: unset; border-block: unset; border-collapse: unset; border-end-end-radius: unset; border-end-start-radius: unset; border-inline: unset; border-shape: unset; border-start-end-radius: unset; border-start-start-radius: unset; inset: unset; box-decoration-break: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; buffered-rendering: unset; caption-side: unset; caret-animation: unset; caret-color: unset; caret-shape: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; color-rendering: unset; columns: unset; column-fill: unset; rule-break: unset; rule: unset; rule-inset: unset; rule-visibility-items: unset; column-span: unset; contain: unset; contain-intrinsic-block-size: unset; contain-intrinsic-size: unset; contain-intrinsic-inline-size: unset; container: unset; content: unset; content-visibility: unset; corner-shape: unset; corner-block-end-shape: unset; corner-block-start-shape: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cx: unset; cy: unset; d: unset; dominant-baseline: unset; dynamic-range-limit: unset; -electron-corner-smoothing: unset; empty-cells: unset; field-sizing: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; flex-line-count: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphenate-character: unset; hyphenate-limit-chars: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; initial-letter: unset; inline-size: unset; inset-block: unset; inset-inline: unset; interactivity: unset; interest-delay: unset; interpolate-size: unset; isolation: unset; justify-items: unset; letter-spacing: unset; lighting-color: unset; line-break: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask: unset; mask-type: unset; math-shift: unset; math-style: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; object-view-box: unset; offset: unset; opacity: unset; order: unset; orphans: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-block: unset; overflow-clip-margin: unset; overflow-inline: unset; overflow-wrap: unset; overflow: unset; overlay: unset; overscroll-behavior-block: unset; overscroll-behavior-inline: unset; overscroll-behavior: unset; padding-block: unset; padding-inline: unset; page: unset; page-margin-safety: unset; page-orientation: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position-try: unset; position-visibility: unset; print-color-adjust: unset; quotes: unset; r: unset; reading-flow: unset; reading-order: unset; resize: unset; rotate: unset; ruby-align: unset; ruby-overhang: unset; ruby-position: unset; rule-overlap: unset; rx: unset; ry: unset; scale: unset; scroll-behavior: unset; scroll-initial-target: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-marker-group: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-stop: unset; scroll-snap-type: unset; scroll-target-group: unset; scroll-timeline: unset; scrollbar-color: unset; scrollbar-gutter: unset; scrollbar-width: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; size: unset; speak: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; tab-size: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-autospace: unset; text-box: unset; text-combine-upright: unset; text-decoration: unset; text-decoration-skip-ink: unset; text-emphasis: unset; text-emphasis-position: unset; text-fit: unset; text-indent: unset; text-justify: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; text-underline-offset: unset; text-underline-position: unset; text-wrap: unset; timeline-scope: unset; timeline-trigger: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; translate: unset; trigger-scope: unset; user-select: unset; vector-effect: unset; vertical-align: unset; view-timeline: unset; view-transition-class: unset; view-transition-group: unset; view-transition-name: unset; view-transition-scope: unset; visibility: unset; border-spacing: unset; -webkit-box-align: unset; -webkit-box-decoration-break: unset; -webkit-box-direction: unset; -webkit-box-flex: unset; -webkit-box-ordinal-group: unset; -webkit-box-orient: unset; -webkit-box-pack: unset; -webkit-box-reflect: unset; -webkit-line-break: unset; -webkit-line-clamp: unset; -webkit-mask-box-image: unset; -webkit-rtl-ordering: unset; -webkit-ruby-position: unset; -webkit-tap-highlight-color: unset; -webkit-text-combine: unset; -webkit-text-decorations-in-effect: unset; -webkit-text-fill-color: unset; -webkit-text-security: unset; -webkit-text-stroke: unset; -webkit-user-drag: unset; white-space-collapse: unset; widows: unset; width: unset; will-change: unset; window-drag: unset; word-break: unset; word-spacing: unset; x: unset; y: unset; z-index: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0px 18px; border-radius: 12px; font: 600 14px var(--f-body); border: 1px solid var(--line);}.rcd-page .btn.primary{background-color: var(--rcd-strong); color: rgb(255, 255, 255); border-color: transparent;}.rcd-page .btn:focus-visible{outline: 2px solid var(--rcd); outline-offset: 2px;}.rcd-page .split{display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 0px; border: 1px solid var(--line); border-radius: 24px; overflow: hidden; background-color: var(--card);}.rcd-page .split > div{padding: 28px 30px; display: flex; flex-direction: column; gap: 16px; min-width: 0px;}.rcd-page .split > div + div{border-left: 1px solid var(--line);}.rcd-page .split h3{font-size: 18px; display: flex; align-items: center; gap: 10px;}.rcd-page .split h3 i{width: 10px; height: 10px; border-radius: 3px; display: block;}.rcd-page .split dl{margin: 0px; display: grid; grid-template-columns: minmax(0px, 1fr); gap: 12px;}.rcd-page .split dt{font: 600 15px var(--f-body);}.rcd-page .split dd{margin: 2px 0px 0px; color: var(--muted); font-size: 15px;}.rcd-page .contract{grid-column: 1 \/ -1; border-top: 1px solid var(--line); background-color: var(--paper); display: flex; flex-wrap: wrap; align-items: center; flex-direction: row !important; gap: 12px 24px !important;}.rcd-page .contract .eyebrow{color: var(--muted);}.rcd-page .contract span.pill{font: 500 13px var(--f-mono); padding: 6px 12px; border-radius: 10px; border: 1px solid var(--line); background-color: var(--card);}.rcd-page .gains{display: grid; grid-template-columns: repeat(3, minmax(0px, 1fr)); gap: 20px;}.rcd-page .gain{padding: 28px; border-radius: 22px; border: 1px solid var(--line); background-color: var(--card); display: flex; flex-direction: column; gap: 14px; min-width: 0px;}.rcd-page .gain .who{font: 500 12px var(--f-mono); letter-spacing: 0.12em; text-transform: uppercase;}.rcd-page .gain h3{font-size: 21px; line-height: 1.2;}.rcd-page .gain ul{margin: 0px; padding-left: 18px; color: var(--muted); display: flex; flex-direction: column; gap: 8px;}.rcd-page .compare{overflow-x: auto; border: 1px solid var(--line); border-radius: 22px; background-color: var(--card);}.rcd-page .compare table{width: 100%; border-collapse: collapse; min-width: 640px;}.rcd-page .compare th,.rcd-page .compare td{padding: 16px 20px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); font-size: 15px;}.rcd-page .compare tr:last-child td{border-bottom: 0px;}.rcd-page .compare thead th{font: 500 12px var(--f-mono); letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); background-color: var(--paper);}.rcd-page .compare thead th.with{color: var(--rcd-strong);}.rcd-page .compare td:first-child{font-weight: 600; width: 24%;}.rcd-page .compare td.without{color: var(--muted);}.rcd-page .compare td.with{background: linear-gradient(90deg,var(--tint-rcd),transparent);}.rcd-page .close{background-color: var(--ink); color: var(--on-ink); background-image: linear-gradient(rgba(255, 255, 255, 0.043) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.043) 1px, transparent 1px); background-size: 40px 40px;}.rcd-page .close .wrap{padding-block: 72px; display: grid; grid-template-columns: 1.2fr 1fr; gap: 40px; align-items: center;}.rcd-page .close h2{font-size: clamp(28px, 4vw, 42px); line-height: 1.1;}.rcd-page .close p{color: var(--on-ink-muted); margin-top: 14px; font-size: 17px;}.rcd-page .links{display: flex; flex-direction: column; gap: 12px;}.rcd-page .links a{display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 22px; border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.16); text-decoration: none; font: 600 16px var(--f-body); min-height: 44px; transition: border-color 0.2s, background 0.2s;}.rcd-page .links a:hover{background: rgba(255, 255, 255, 0.05);}.rcd-page .links a small{display: block; font: 500 12px var(--f-mono); color: var(--on-ink-muted); letter-spacing: 0.06em; margin-top: 2px;}.rcd-page .links a.r:hover{border-color: rgb(255, 138, 76);}.rcd-page .links a.c:hover{border-color: rgb(45, 212, 191);}.rcd-page footer{padding-block: 24px; font: 500 12px var(--f-mono); color: var(--muted);}@media (max-width: 900px){.rcd-page .hero .wrap,.rcd-page .close .wrap{grid-template-columns: 1fr;}.rcd-page .duo{grid-template-columns: 1fr;}.rcd-page .join span{transform: rotate(90deg);}.rcd-page .gains{grid-template-columns: 1fr;}.rcd-page .steps{grid-template-columns: repeat(5, minmax(150px, 1fr)); overflow-x: auto; padding-bottom: 4px;}}@media (max-width: 640px){.rcd-page section{padding-block: 60px;}.rcd-page .split{grid-template-columns: 1fr;}.rcd-page .split > div + div{border-left: 0px; border-top: 1px solid var(--line);}.rcd-page .detail{grid-template-columns: auto 1fr;}.rcd-page .detail .owner{grid-column: 1 \/ -1; justify-self: start;}.rcd-page .flow{padding: 18px;}.rcd-page .ctrls{justify-content: stretch;}.rcd-page .ctrls .btn{flex: 1 1 0%; justify-content: center;}}@media (prefers-reduced-motion: reduce){.rcd-page *{animation: auto ease 0s 1 normal none running none !important; transition: none !important;}}<\/style><div class=\"rcd-page\"><header class=\"hero\"> <div class=\"wrap\"> <div> <p class=\"eyebrow\">Partenariat \u00b7 Progress OpenEdge<\/p> <h1>RCD <span style=\"opacity:.5\">\u00d7<\/span> Consultingwerk<br><span class=\"grad\">une seule stack, du front-end au backend<\/span><\/h1> <p class=\"lede\">Consultingwerk a int\u00e9gr\u00e9 la prise en charge du framework RCD dans le backend de la SmartComponent Library. La logique m\u00e9tier reste dans les Business Entities de la SmartComponent Library. RCD y ajoute un front-end web, d\u00e9velopp\u00e9 par les m\u00eames d\u00e9veloppeurs OpenEdge.<\/p> <div class=\"chips\"> <span class=\"chip\"><i style=\"background:#FF6B2C\"><\/i>Front-end web RCD<\/span> <span class=\"chip\"><i style=\"background:#2DD4BF\"><\/i>Backend SmartComponent Library<\/span> <span class=\"chip\"><i style=\"background:#9AA3B8\"><\/i>PASOE \u00b7 ABL<\/span> <\/div> <\/div> <div class=\"hero-art\" aria-hidden=\"true\"> <svg viewBox=\"0 0 440 380\" fill=\"none\"> <defs> <linearGradient id=\"hg\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#FF6B2C\"><\/stop><stop offset=\".5\" stop-color=\"#FFB14A\"><\/stop><stop offset=\"1\" stop-color=\"#2DD4BF\"><\/stop><\/linearGradient> <\/defs> <g transform=\"translate(40 20)\"> <rect width=\"360\" height=\"110\" rx=\"18\" fill=\"#111729\" stroke=\"#FF6B2C\" stroke-opacity=\".7\"><\/rect> <rect x=\"16\" y=\"16\" width=\"328\" height=\"20\" rx=\"6\" fill=\"#FF6B2C\" fill-opacity=\".18\"><\/rect> <circle cx=\"28\" cy=\"26\" r=\"4\" fill=\"#FF6B2C\"><\/circle><rect x=\"40\" y=\"22\" width=\"60\" height=\"8\" rx=\"4\" fill=\"#FF8A4C\" fill-opacity=\".7\"><\/rect> <rect x=\"16\" y=\"46\" width=\"200\" height=\"8\" rx=\"4\" fill=\"#E7EAF3\" fill-opacity=\".25\"><\/rect> <rect x=\"16\" y=\"62\" width=\"200\" height=\"8\" rx=\"4\" fill=\"#E7EAF3\" fill-opacity=\".16\"><\/rect> <rect x=\"16\" y=\"78\" width=\"200\" height=\"8\" rx=\"4\" fill=\"#E7EAF3\" fill-opacity=\".16\"><\/rect> <rect x=\"232\" y=\"46\" width=\"112\" height=\"48\" rx=\"8\" fill=\"#FF6B2C\" fill-opacity=\".12\" stroke=\"#FF6B2C\" stroke-opacity=\".4\"><\/rect> <text x=\"288\" y=\"75\" fill=\"#FF8A4C\" font-family=\"JetBrains Mono,monospace\" font-size=\"11\" text-anchor=\"middle\">UI RCD<\/text> <\/g> <g> <path d=\"M150 130 V176 M220 130 V176 M290 130 V176\" stroke=\"url(#hg)\" stroke-width=\"2.5\" stroke-dasharray=\"5 6\"> <animate attributeName=\"stroke-dashoffset\" from=\"0\" to=\"-22\" dur=\"1.2s\" repeatCount=\"indefinite\"><\/animate> <\/path> <rect x=\"110\" y=\"168\" width=\"220\" height=\"40\" rx=\"20\" fill=\"#0A0E1A\" stroke=\"url(#hg)\" stroke-width=\"2\"><\/rect> <text x=\"220\" y=\"193\" fill=\"#E7EAF3\" font-family=\"Sora,sans-serif\" font-weight=\"600\" font-size=\"13\" text-anchor=\"middle\">prise en charge RCD int\u00e9gr\u00e9e<\/text> <path d=\"M150 208 V250 M220 208 V250 M290 208 V250\" stroke=\"url(#hg)\" stroke-width=\"2.5\" stroke-dasharray=\"5 6\"> <animate attributeName=\"stroke-dashoffset\" from=\"0\" to=\"22\" dur=\"1.2s\" repeatCount=\"indefinite\"><\/animate> <\/path> <\/g> <g transform=\"translate(40 250)\"> <rect width=\"360\" height=\"110\" rx=\"18\" fill=\"#111729\" stroke=\"#2DD4BF\" stroke-opacity=\".7\"><\/rect> <g fill=\"#2DD4BF\" fill-opacity=\".14\" stroke=\"#2DD4BF\" stroke-opacity=\".45\"> <rect x=\"16\" y=\"16\" width=\"100\" height=\"36\" rx=\"8\"><\/rect><rect x=\"130\" y=\"16\" width=\"100\" height=\"36\" rx=\"8\"><\/rect><rect x=\"244\" y=\"16\" width=\"100\" height=\"36\" rx=\"8\"><\/rect> <\/g> <g font-family=\"JetBrains Mono,monospace\" font-size=\"10\" fill=\"#5EEAD4\" text-anchor=\"middle\"> <text x=\"66\" y=\"38\">Entity<\/text><text x=\"180\" y=\"38\">Task<\/text><text x=\"294\" y=\"38\">Entity<\/text> <\/g> <rect x=\"16\" y=\"64\" width=\"328\" height=\"30\" rx=\"8\" fill=\"#E7EAF3\" fill-opacity=\".06\" stroke=\"#E7EAF3\" stroke-opacity=\".15\"><\/rect> <text x=\"180\" y=\"83\" fill=\"#9AA3B8\" font-family=\"JetBrains Mono,monospace\" font-size=\"11\" text-anchor=\"middle\">SmartComponent Library \u00b7 base de donn\u00e9es OpenEdge<\/text> <\/g> <\/svg> <\/div> <\/div> <\/header> <main> <section> <div class=\"wrap\"> <div class=\"sec-head\"> <p class=\"eyebrow\">Deux partenaires<\/p> <h2>Deux sp\u00e9cialistes OpenEdge, chacun avec un r\u00f4le bien d\u00e9fini<\/h2> <p>Les deux entreprises d\u00e9veloppent pour Progress OpenEdge et PASOE. Consultingwerk fournit l&rsquo;architecture backend. RCD fournit l&rsquo;interface web.<\/p> <\/div> <div class=\"duo\"> <article class=\"party\"> <header> <span class=\"mark\" style=\"background:#FF6B2C\">RCD<\/span> <div><h3>Rapid Cloud Development<\/h3><span class=\"role\">Le front-end web<\/span><\/div> <\/header> <p>Un framework de d\u00e9veloppement web con\u00e7u pour les d\u00e9veloppeurs OpenEdge. Les \u00e9crans sont d\u00e9finis de mani\u00e8re d\u00e9clarative et s&rsquo;ex\u00e9cutent dans le navigateur, tandis que la logique reste en ABL sur PASOE.<\/p> <ul> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#FF6B2C\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Des \u00e9crans web op\u00e9rationnels en quelques minutes, et non en plusieurs jours<\/li> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#FF6B2C\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Utilise les comp\u00e9tences 4GL et PASOE existantes, sans framework JavaScript \u00e0 apprendre<\/li> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#FF6B2C\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Grilles, formulaires, rubans, \u00e9crans parent-enfant et un assistant IA<\/li> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#FF6B2C\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Fonctionne sur vos propres serveurs, sous votre contr\u00f4le<\/li> <\/ul> <div class=\"meta\"><span>Wilrijk, Belgique<\/span><span>En production chez Softpak ERP et BEA ERP<\/span><\/div> <\/article> <div class=\"join\" aria-hidden=\"true\"><span>\u00d7<\/span><\/div> <article class=\"party\"> <header> <span class=\"mark\" style=\"background:#0F8F86\">CW<\/span> <div><h3>Consultingwerk<\/h3><span class=\"role\">Le framework backend<\/span><\/div> <\/header> <p>Sp\u00e9cialistes de la modernisation des applications OpenEdge. Leur SmartComponent Library est un framework full-stack qui structure le backend en Business Entities et Business Tasks.<\/p> <ul> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#0F8F86\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Les Business Entities regroupent l&rsquo;acc\u00e8s aux donn\u00e9es, la validation et la logique CRUD<\/li> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#0F8F86\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Services RESTful document\u00e9s avec OpenAPI<\/li> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#0F8F86\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Migration vers OpenEdge 12 et PASOE, CI\/CD pour OpenEdge<\/li> <li><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 8.5l3 3 7-7\" stroke=\"#0F8F86\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\"><\/path><\/svg>Modernisation par l&rsquo;IA et prise en charge des serveurs MCP<\/li> <\/ul> <div class=\"meta\"><span>Progress Service Delivery &amp; Technology Alliance Partner<\/span><\/div> <\/article> <\/div> <\/div> <\/section> <section style=\"padding-top:0\"> <div class=\"wrap\"> <div class=\"sec-head\"> <p class=\"eyebrow\">Comment tout s&rsquo;articule<\/p> <h2>Suivez une requ\u00eate du navigateur jusqu&rsquo;\u00e0 la base de donn\u00e9es<\/h2> <p>Choisissez une \u00e9tape pour voir quelle couche effectue le travail et qui la fournit.<\/p> <\/div> <div class=\"flow\"> <div class=\"diagram\"> <svg viewBox=\"0 0 980 250\" role=\"img\" aria-label=\"Flux de requ\u00eate : navigateur avec \u00e9cran RCD, endpoints RCD sur PASOE, prise en charge RCD int\u00e9gr\u00e9e dans la SmartComponent Library, Business Entities et Tasks, base de donn\u00e9es OpenEdge\"> <defs> <linearGradient id=\"bridgeGrad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#FF6B2C\"><\/stop><stop offset=\"1\" stop-color=\"#2DD4BF\"><\/stop><\/linearGradient> <\/defs> <text class=\"zone\" x=\"20\" y=\"28\">NAVIGATEUR<\/text> <text class=\"zone\" x=\"214\" y=\"28\">PASOE \u00b7 RCD<\/text> <text class=\"zone\" x=\"408\" y=\"28\">INT\u00c9GRATION<\/text> <text class=\"zone\" x=\"602\" y=\"28\">PASOE \u00b7 SMARTCOMPONENT LIBRARY<\/text> <text class=\"zone\" x=\"828\" y=\"28\">DONN\u00c9ES<\/text> <path class=\"wire\" id=\"w1\" d=\"M176 125 H208\"><\/path> <path class=\"wire\" id=\"w2\" d=\"M370 125 H402\"><\/path> <path class=\"wire\" id=\"w3\" d=\"M564 125 H596\"><\/path> <path class=\"wire\" id=\"w4\" d=\"M790 125 H822\"><\/path> <g class=\"node rcd\" id=\"n1\"><rect class=\"box\" x=\"20\" y=\"50\" width=\"156\" height=\"150\" rx=\"16\"><\/rect> <text class=\"k\" x=\"36\" y=\"80\" fill=\"#FF6B2C\">RCD<\/text> <text class=\"t\" x=\"36\" y=\"108\">\u00c9cran web<\/text> <text class=\"s\" x=\"36\" y=\"132\">Grille, formulaire, ruban<\/text> <text class=\"s\" x=\"36\" y=\"150\">g\u00e9n\u00e9r\u00e9 \u00e0 partir de sa<\/text> <text class=\"s\" x=\"36\" y=\"168\">d\u00e9finition d&rsquo;\u00e9cran<\/text><\/g> <g class=\"node rcd\" id=\"n2\"><rect class=\"box\" x=\"214\" y=\"50\" width=\"156\" height=\"150\" rx=\"16\"><\/rect> <text class=\"k\" x=\"230\" y=\"80\" fill=\"#FF6B2C\">RCD<\/text> <text class=\"t\" x=\"230\" y=\"108\">Endpoints RCD<\/text> <text class=\"s\" x=\"230\" y=\"132\">Lecture, enregistrement,<\/text> <text class=\"s\" x=\"230\" y=\"150\">suppression et actions<\/text> <text class=\"s\" x=\"230\" y=\"168\">en ABL<\/text><\/g> <g class=\"node both\" id=\"n3\"><rect class=\"box\" x=\"408\" y=\"50\" width=\"156\" height=\"150\" rx=\"16\"><\/rect> <text class=\"k\" x=\"424\" y=\"80\" fill=\"url(#bridgeGrad)\">RCD \u00d7 CW<\/text> <text class=\"t\" x=\"424\" y=\"108\">Prise en charge RCD<\/text> <text class=\"s\" x=\"424\" y=\"132\">Int\u00e9gr\u00e9e au backend<\/text> <text class=\"s\" x=\"424\" y=\"150\">de la SmartComponent<\/text> <text class=\"s\" x=\"424\" y=\"168\">Library<\/text><\/g> <g class=\"node cw\" id=\"n4\"><rect class=\"box\" x=\"602\" y=\"50\" width=\"188\" height=\"150\" rx=\"16\"><\/rect> <text class=\"k\" x=\"618\" y=\"80\" fill=\"#0F8F86\">CONSULTINGWERK<\/text> <text class=\"t\" x=\"618\" y=\"108\">Business Entities<\/text> <text class=\"s\" x=\"618\" y=\"132\">et Business Tasks :<\/text> <text class=\"s\" x=\"618\" y=\"150\">validation, r\u00e8gles,<\/text> <text class=\"s\" x=\"618\" y=\"168\">acc\u00e8s aux donn\u00e9es<\/text><\/g> <g class=\"node cw\" id=\"n5\"><rect class=\"box\" x=\"828\" y=\"50\" width=\"132\" height=\"150\" rx=\"16\"><\/rect> <text class=\"k\" x=\"844\" y=\"80\" fill=\"#0F8F86\">OPENEDGE<\/text> <text class=\"t\" x=\"844\" y=\"108\">Base de donn\u00e9es<\/text> <text class=\"s\" x=\"844\" y=\"132\">Votre sch\u00e9ma<\/text> <text class=\"s\" x=\"844\" y=\"150\">existant, inchang\u00e9<\/text><\/g> <text class=\"zone\" x=\"20\" y=\"232\" id=\"dirLabel\">\u2192 REQU\u00caTE<\/text> <\/svg> <\/div> <div class=\"steps\" role=\"group\" aria-label=\"\u00c9tapes de la requ\u00eate\"> <button class=\"step\" type=\"button\" id=\"s1\" data-i=\"0\"><b>\u00c9TAPE 1<\/b><span>Ouvrir un \u00e9cran<\/span><\/button> <button class=\"step\" type=\"button\" id=\"s2\" data-i=\"1\"><b>\u00c9TAPE 2<\/b><span>Demander des donn\u00e9es<\/span><\/button> <button class=\"step\" type=\"button\" id=\"s3\" data-i=\"2\"><b>\u00c9TAPE 3<\/b><span>Transmettre au backend<\/span><\/button> <button class=\"step\" type=\"button\" id=\"s4\" data-i=\"3\"><b>\u00c9TAPE 4<\/b><span>Appliquer la logique m\u00e9tier<\/span><\/button> <button class=\"step\" type=\"button\" id=\"s5\" data-i=\"4\"><b>\u00c9TAPE 5<\/b><span>Enregistrer et valider<\/span><\/button> <\/div> <div class=\"detail\" aria-live=\"polite\"> <span class=\"num\" id=\"dNum\">1<\/span> <div style=\"min-width:0\"><h3 id=\"dTitle\"><\/h3><p id=\"dText\"><\/p><\/div> <span class=\"owner\" id=\"dOwner\"><\/span> <\/div> <div class=\"ctrls\"> <button class=\"btn\" type=\"button\" id=\"prev\">\u2190 Pr\u00e9c\u00e9dent<\/button> <button class=\"btn primary\" type=\"button\" id=\"play\">Lancer le flux<\/button> <\/div> <\/div> <\/div> <\/section> <section style=\"padding-top:0\"> <div class=\"wrap\"> <div class=\"sec-head\"> <p class=\"eyebrow\">Qui fait quoi<\/p> <h2>Des responsabilit\u00e9s claires de chaque c\u00f4t\u00e9<\/h2> <p>Chaque framework continue de faire ce qu&rsquo;il fait le mieux. L&rsquo;int\u00e9gration leur permet de collaborer sans qu&rsquo;aucun des deux ne doive changer.<\/p> <\/div> <div class=\"split\"> <div> <h3><i style=\"background:#FF6B2C\"><\/i>RCD g\u00e8re<\/h3> <dl> <div><dt>\u00c9crans<\/dt><dd>Grilles, formulaires de d\u00e9tail, onglets et mises en page parent-enfant, d\u00e9finis par \u00e9cran.<\/dd><\/div> <div><dt>Interaction utilisateur<\/dt><dd>Actions du ruban, filtrage, tri, pagination, lookups et r\u00e8gles UI au niveau des champs.<\/dd><\/div> <div><dt>Le navigateur<\/dt><dd>Client web r\u00e9actif, ind\u00e9pendant des appareils, sans plugin ni installation sur le poste de travail.<\/dd><\/div> <\/dl> <\/div> <div> <h3><i style=\"background:#0F8F86\"><\/i>SmartComponent Library g\u00e8re<\/h3> <dl> <div><dt>Logique m\u00e9tier<\/dt><dd>Business Entities et Business Tasks, avec leurs validations et leurs r\u00e8gles.<\/dd><\/div> <div><dt>Acc\u00e8s aux donn\u00e9es<\/dt><dd>Lectures et \u00e9critures dans la base de donn\u00e9es OpenEdge via la couche d&rsquo;acc\u00e8s aux donn\u00e9es.<\/dd><\/div> <div><dt>Services<\/dt><dd>Les m\u00eames entit\u00e9s continuent de servir les clients REST, .NET et autres, en parall\u00e8le de RCD.<\/dd><\/div> <\/dl> <\/div> <div class=\"contract\"> <span class=\"eyebrow\">Socle commun<\/span> <span class=\"pill\">Progress OpenEdge<\/span><span class=\"pill\">PASOE<\/span><span class=\"pill\">ABL<\/span><span class=\"pill\">Pr\u00eat pour l&rsquo;IA<\/span> <\/div> <\/div> <\/div> <\/section> <section style=\"padding-top:0\"> <div class=\"wrap\"> <div class=\"sec-head\"> <p class=\"eyebrow\">Ce que vous y gagnez<\/p> <h2>Des avantages pour chaque acteur de la stack<\/h2> <\/div> <div class=\"gains\"> <article class=\"gain\"> <span class=\"who\" style=\"color:var(--cw)\">Utilisateurs de la SmartComponent Library<\/span> <h3>Un front-end web pour le backend dont vous disposez d\u00e9j\u00e0<\/h3> <ul> <li>Ajoutez des \u00e9crans web sur vos Business Entities existantes<\/li> <li>Votre \u00e9quipe ABL cr\u00e9e l&rsquo;interface sans \u00e9quipe JavaScript distincte<\/li> <li>La validation reste \u00e0 un seul endroit : le backend<\/li> <\/ul> <\/article> <article class=\"gain\"> <span class=\"who\" style=\"color:var(--rcd-strong)\">Utilisateurs de RCD<\/span> <h3>Une architecture backend \u00e9prouv\u00e9e sous vos \u00e9crans<\/h3> <ul> <li>Structurez la logique m\u00e9tier en Business Entities et Tasks<\/li> <li>Acc\u00e8s aux outils de Consultingwerk : REST, OAuth2, t\u00e9l\u00e9m\u00e9trie<\/li> <li>Une aide experte pour OpenEdge 12, PASOE et DevOps<\/li> <\/ul> <\/article> <article class=\"gain\"> <span class=\"who\" style=\"color:var(--ai)\">\u00c9diteurs de logiciels et clients finaux<\/span> <h3>Modernisez sans repartir de z\u00e9ro<\/h3> <ul> <li>Conservez la base de donn\u00e9es et la logique m\u00e9tier en lesquelles vous avez confiance<\/li> <li>Faites passer vos utilisateurs au navigateur pas \u00e0 pas, \u00e9cran par \u00e9cran<\/li> <li>Les deux partenaires s&rsquo;appuient sur Progress et investissent dans l&rsquo;IA<\/li> <\/ul> <\/article> <\/div> <\/div> <\/section> <section style=\"padding-top:0\"> <div class=\"wrap\"> <div class=\"sec-head\"> <p class=\"eyebrow\">Cr\u00e9er un \u00e9cran web<\/p> <h2>Ajouter un \u00e9cran web sur une Business Entity<\/h2> <\/div> <div class=\"compare\"> <table> <thead><tr><th scope=\"col\">Task<\/th><th scope=\"col\">Sans l&rsquo;int\u00e9gration<\/th><th scope=\"col\" class=\"with\">Avec RCD \u00d7 Consultingwerk<\/th><\/tr><\/thead> <tbody> <tr><td>Front-end<\/td><td class=\"without\">D\u00e9velopper et maintenir une application JavaScript distincte<\/td><td class=\"with\">D\u00e9finir l&rsquo;\u00e9cran dans RCD<\/td><\/tr> <tr><td>Connexion aux donn\u00e9es<\/td><td class=\"without\">\u00c9crire des adaptateurs de service et mapper chaque champ \u00e0 la main<\/td><td class=\"with\">La prise en charge RCD int\u00e9gr\u00e9e connecte l&rsquo;\u00e9cran \u00e0 la Business Entity<\/td><\/tr> <tr><td>Validation<\/td><td class=\"without\">Souvent dupliqu\u00e9e dans le front-end et le backend<\/td><td class=\"with\">Reste dans la Business Entity et s&rsquo;affiche dans le formulaire RCD<\/td><\/tr> <tr><td>Comp\u00e9tences requises<\/td><td class=\"without\">ABL plus un framework web, souvent deux \u00e9quipes<\/td><td class=\"with\">ABL et PASOE, une seule \u00e9quipe<\/td><\/tr> <tr><td>Environnement d&rsquo;ex\u00e9cution<\/td><td class=\"without\">Serveurs web et pipelines de build suppl\u00e9mentaires<\/td><td class=\"with\">PASOE sur vos propres serveurs<\/td><\/tr> <\/tbody> <\/table> <\/div> <\/div> <\/section> <\/main> <section class=\"close\"> <div class=\"wrap\"> <div> <h2>Pr\u00eat \u00e0 le voir sur votre propre application ?<\/h2> <p>Contactez RCD pour le front-end web, ou Consultingwerk pour la SmartComponent Library. Les deux \u00e9quipes connaissent le fonctionnement de l&rsquo;int\u00e9gration.<\/p> <\/div> <div class=\"links\"> <a class=\"r\" href=\"https:\/\/www.rapidclouddevelopment.com\/fr\/\" target=\"_blank\" rel=\"noopener\"><span>Rapid Cloud Development<small>rapidclouddevelopment.com<\/small><\/span><span aria-hidden=\"true\">\u2197<\/span><\/a> <a class=\"c\" href=\"https:\/\/www.consultingwerk.com\/\" target=\"_blank\" rel=\"noopener\"><span>Consultingwerk<small>consultingwerk.com<\/small><\/span><span aria-hidden=\"true\">\u2197<\/span><\/a> <\/div> <\/div> <\/section> <footer><div class=\"wrap\">RCD et Consultingwerk sont des soci\u00e9t\u00e9s distinctes. SmartComponent Library est un produit de Consultingwerk.<\/div><\/footer> <script>\n(function(){\n  var steps=[\n    {t:\"L'utilisateur ouvre un \u00e9cran\",d:\"RCD g\u00e9n\u00e8re l'\u00e9cran web \u00e0 partir de sa d\u00e9finition d'\u00e9cran : la grille, le formulaire de d\u00e9tail et les actions du ruban. Aucun JavaScript personnalis\u00e9 n'est n\u00e9cessaire.\",o:\"rcd\",ol:\"RCD\",n:[1],w:[],back:false},\n    {t:\"L'\u00e9cran demande des donn\u00e9es\",d:\"Le navigateur appelle les endpoints RCD sur PASOE avec le filtre, l'ordre de tri et la page que l'utilisateur souhaite voir.\",o:\"rcd\",ol:\"RCD\",n:[1,2],w:[1],back:false},\n    {t:\"La requ\u00eate est transmise au backend\",d:\"La prise en charge RCD int\u00e9gr\u00e9e \u00e0 la SmartComponent Library prend le relais. Elle transforme la requ\u00eate RCD en un appel \u00e0 la Business Entity appropri\u00e9e.\",o:\"both\",ol:\"RCD \u00d7 Consultingwerk\",n:[2,3],w:[2],back:false},\n    {t:\"La Business Entity fait le travail\",d:\"La Business Entity lit les donn\u00e9es via sa couche d'acc\u00e8s aux donn\u00e9es et applique les r\u00e8gles m\u00e9tier. Les enregistrements reviennent ensuite vers la grille RCD.\",o:\"cw\",ol:\"Consultingwerk\",n:[3,4,5],w:[3,4],back:false},\n    {t:\"Enregistrement, avec validation par le backend\",d:\"Lorsque l'utilisateur enregistre, les modifications suivent le m\u00eame chemin. La Business Entity les valide, et les \u00e9ventuels messages s'affichent sur les champs du formulaire RCD.\",o:\"both\",ol:\"RCD \u00d7 Consultingwerk\",n:[1,2,3,4,5],w:[1,2,3,4],back:true}\n  ];\n  var cur=0,timer=null;\n  var btns=[].slice.call(document.querySelectorAll('.step'));\n  function show(i){\n    cur=i;var s=steps[i];\n    for(var k=1;k<=5;k++){document.getElementById('n'+k).classList.toggle('on',s.n.indexOf(k)>-1)}\n    for(var j=1;j<=4;j++){var w=document.getElementById('w'+j);w.classList.toggle('on',s.w.indexOf(j)>-1);w.classList.toggle('back',s.back)}\n    document.getElementById('dirLabel').textContent=s.back?'\u2190 RESPONSE & VALIDATION':'\u2192 REQU\u00caTE';\n    btns.forEach(function(b,bi){b.setAttribute('aria-pressed',bi===i?'true':'false')});\n    document.getElementById('dNum').textContent=i+1;\n    document.getElementById('dTitle').textContent=s.t;\n    document.getElementById('dText').textContent=s.d;\n    var o=document.getElementById('dOwner');o.className='owner '+s.o;o.textContent=s.ol;\n  }\n  function stop(){if(timer){clearInterval(timer);timer=null;document.getElementById('play').textContent='Lancer le flux'}}\n  btns.forEach(function(b){b.addEventListener('click',function(){stop();show(+b.dataset.i)})});\n  document.getElementById('prev').addEventListener('click',function(){stop();show((cur+steps.length-1)%steps.length)});\n  document.getElementById('play').addEventListener('click',function(){\n    if(timer){stop();return}\n    this.textContent='Pause';show(0);\n    timer=setInterval(function(){if(cur>=steps.length-1){stop();return}show(cur+1)},2800);\n  });\n  show(0);\n})();\n<\/script> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Partenariat \u00b7 Progress OpenEdge RCD \u00d7 Consultingwerkune seule stack, du front-end au backend Consultingwerk a int\u00e9gr\u00e9 la prise en charge du framework RCD dans le backend de la SmartComponent Library. La logique m\u00e9tier reste dans les Business Entities de la SmartComponent Library. RCD y ajoute un front-end web, d\u00e9velopp\u00e9 par les m\u00eames d\u00e9veloppeurs OpenEdge. Front-end [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-17855","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RCD &amp; Consultingwerk - Rapid Cloud Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RCD &amp; Consultingwerk - Rapid Cloud Development\" \/>\n<meta property=\"og:description\" content=\"Partenariat \u00b7 Progress OpenEdge RCD \u00d7 Consultingwerkune seule stack, du front-end au backend Consultingwerk a int\u00e9gr\u00e9 la prise en charge du framework RCD dans le backend de la SmartComponent Library. La logique m\u00e9tier reste dans les Business Entities de la SmartComponent Library. RCD y ajoute un front-end web, d\u00e9velopp\u00e9 par les m\u00eames d\u00e9veloppeurs OpenEdge. Front-end [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/\" \/>\n<meta property=\"og:site_name\" content=\"Rapid Cloud Development\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-21T19:37:45+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/\",\"url\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/\",\"name\":\"RCD & Consultingwerk - Rapid Cloud Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/#website\"},\"datePublished\":\"2026-10-21T19:37:23+00:00\",\"dateModified\":\"2026-10-21T19:37:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/home\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RCD &#038; Consultingwerk\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/#website\",\"url\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/\",\"name\":\"Rapid Cloud Development\",\"description\":\"The first OpenEdge web development framework for small and medium-sized companies\",\"publisher\":{\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/#organization\",\"name\":\"Rapid Cloud Development\",\"url\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.rapidclouddevelopment.com\/wp-content\/uploads\/2025\/09\/logo500x500-black.png\",\"contentUrl\":\"https:\/\/www.rapidclouddevelopment.com\/wp-content\/uploads\/2025\/09\/logo500x500-black.png\",\"width\":501,\"height\":500,\"caption\":\"Rapid Cloud Development\"},\"image\":{\"@id\":\"https:\/\/www.rapidclouddevelopment.com\/fr\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RCD & Consultingwerk - Rapid Cloud Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/","og_locale":"fr_FR","og_type":"article","og_title":"RCD & Consultingwerk - Rapid Cloud Development","og_description":"Partenariat \u00b7 Progress OpenEdge RCD \u00d7 Consultingwerkune seule stack, du front-end au backend Consultingwerk a int\u00e9gr\u00e9 la prise en charge du framework RCD dans le backend de la SmartComponent Library. La logique m\u00e9tier reste dans les Business Entities de la SmartComponent Library. RCD y ajoute un front-end web, d\u00e9velopp\u00e9 par les m\u00eames d\u00e9veloppeurs OpenEdge. Front-end [&hellip;]","og_url":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/","og_site_name":"Rapid Cloud Development","article_modified_time":"2026-10-21T19:37:45+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/","url":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/","name":"RCD & Consultingwerk - Rapid Cloud Development","isPartOf":{"@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/#website"},"datePublished":"2026-10-21T19:37:23+00:00","dateModified":"2026-10-21T19:37:45+00:00","breadcrumb":{"@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/rcd-et-consultingwerk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.rapidclouddevelopment.com\/fr\/home\/"},{"@type":"ListItem","position":2,"name":"RCD &#038; Consultingwerk"}]},{"@type":"WebSite","@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/#website","url":"https:\/\/www.rapidclouddevelopment.com\/fr\/","name":"Rapid Cloud Development","description":"The first OpenEdge web development framework for small and medium-sized companies","publisher":{"@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.rapidclouddevelopment.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/#organization","name":"Rapid Cloud Development","url":"https:\/\/www.rapidclouddevelopment.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.rapidclouddevelopment.com\/wp-content\/uploads\/2025\/09\/logo500x500-black.png","contentUrl":"https:\/\/www.rapidclouddevelopment.com\/wp-content\/uploads\/2025\/09\/logo500x500-black.png","width":501,"height":500,"caption":"Rapid Cloud Development"},"image":{"@id":"https:\/\/www.rapidclouddevelopment.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/pages\/17855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/comments?post=17855"}],"version-history":[{"count":1,"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/pages\/17855\/revisions"}],"predecessor-version":[{"id":17857,"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/pages\/17855\/revisions\/17857"}],"wp:attachment":[{"href":"https:\/\/www.rapidclouddevelopment.com\/fr\/wp-json\/wp\/v2\/media?parent=17855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}