{"id":22717,"date":"2026-06-01T09:30:00","date_gmt":"2026-06-01T07:30:00","guid":{"rendered":"https:\/\/visionsoft.tech\/replanifier-production-erp\/"},"modified":"2026-07-07T21:40:30","modified_gmt":"2026-07-07T19:40:30","slug":"replanifier-production-erp","status":"publish","type":"post","link":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/","title":{"rendered":"Reschedule production when the ERP doesn\u2019t do it"},"content":{"rendered":"\n<style>\n.vstuto{\n  --navy:#232048;--blue-night:#394170;--cyan:#2a5fff;\n  --grey-light:#E6EBF2;--grey-mid:#CCD6E0;--red-accent:#D6544C;\n  --white:#FFFFFF;--code-bg:#1a1830;--maxw:760px;\n  font-family:'Roboto',-apple-system,sans-serif;font-weight:400;\n  color:#2b2a3d;background:transparent;line-height:1.7;\n  -webkit-font-smoothing:antialiased;text-align:left;\n}\n.vstuto *{box-sizing:border-box;margin:0;padding:0;}\n.vstuto h1,.vstuto h2,.vstuto h3{font-family:'Roboto',sans-serif;font-weight:600;line-height:1.25;}\n.vstuto a{color:#2a5fff;}\n.vstuto .vst-wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px;}\n \n\/* En-t\u00eate *\/\n.vstuto .vst-head{border-bottom:1px solid var(--grey-mid);padding:6px 0 22px;margin-bottom:30px;}\n.vstuto .vst-kicker{font-size:.74rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);}\n.vstuto .vst-head h1{font-size:2rem;color:var(--navy);margin:10px 0 12px;}\n.vstuto .vst-head .vst-sub{font-size:1.1rem;color:var(--blue-night);font-family:'Roboto Slab',serif;}\n.vstuto .vst-byline{font-size:.82rem;color:#7b8196;margin-top:14px;}\n.vstuto .vst-byline b{color:var(--blue-night);font-weight:500;}\n \n.vstuto article p{margin:0 0 18px;font-size:1.05rem;}\n.vstuto article h2{font-size:1.4rem;color:var(--navy);margin:38px 0 12px;}\n.vstuto article h2 .vst-n{color:var(--cyan);margin-right:8px;}\n.vstuto .vst-em{color:var(--navy);font-weight:600;}\n.vstuto strong{color:var(--navy);}\n \n\/* Note *\/\n.vstuto .vst-note{background:#fff;border-left:3px solid var(--cyan);border-radius:6px;\n  padding:14px 18px;margin:22px 0;font-size:.98rem;color:var(--blue-night);}\n.vstuto .vst-note b{color:var(--navy);}\n \n\/* Flow *\/\n.vstuto .vst-flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 22px;font-size:.86rem;}\n.vstuto .vst-node{background:#fff;border:1px solid var(--grey-mid);border-bottom:2px solid var(--cyan);\n  border-radius:5px;padding:6px 12px;color:var(--navy);font-weight:500;}\n.vstuto .vst-arrow{color:var(--cyan);font-weight:600;}\n \n\/* Table *\/\n.vstuto .vst-tblwrap{overflow-x:auto;margin:18px 0;border:1px solid var(--grey-mid);border-radius:6px;}\n.vstuto table{width:100%;border-collapse:collapse;background:#fff;font-size:.88rem;}\n.vstuto th{background:var(--navy);color:#fff;text-align:left;padding:9px 14px;font-weight:600;font-size:.82rem;}\n.vstuto td{padding:9px 14px;border-top:1px solid var(--grey-mid);vertical-align:top;color:#2b2a3d;}\n.vstuto td code{font-family:'JetBrains Mono',monospace;font-size:.78rem;color:var(--blue-night);background:var(--grey-light);padding:1px 5px;border-radius:4px;}\n \n\/* Code *\/\n.vstuto .vst-codeblock{margin:18px 0;}\n.vstuto .vst-label{display:flex;justify-content:space-between;align-items:center;background:#13111f;\n  color:var(--grey-mid);font-size:.72rem;font-weight:500;padding:7px 14px;border-radius:7px 7px 0 0;}\n.vstuto .vst-label .vst-tag{color:var(--cyan);text-transform:uppercase;letter-spacing:.1em;}\n.vstuto .vst-copy{background:rgba(42,95,255,.15);color:var(--cyan);border:1px solid rgba(42,95,255,.35);\n  border-radius:5px;padding:3px 11px;font-size:.7rem;font-weight:500;cursor:pointer;font-family:'Roboto',sans-serif;}\n.vstuto .vst-copy:hover{background:rgba(42,95,255,.28);}\n.vstuto pre{background:var(--code-bg);color:#dfe6f0;border-radius:0 0 7px 7px;padding:16px;overflow-x:auto;\n  font-family:'JetBrains Mono',monospace;font-size:.8rem;line-height:1.65;}\n.vstuto .c-kw{color:#2a5fff;}.vstuto .c-fn{color:#7ee3ff;}.vstuto .c-str{color:#9ad7a0;}\n.vstuto .c-num{color:#e0a96d;}.vstuto .c-com{color:#6b7394;font-style:italic;}.vstuto .c-var{color:#cfd6e6;}\n \n\/* Liste *\/\n.vstuto .vst-list{list-style:none;margin:10px 0 18px;}\n.vstuto .vst-list li{position:relative;padding-left:22px;margin-bottom:10px;font-size:1.02rem;}\n.vstuto .vst-list li::before{content:\"\\25B8\";position:absolute;left:0;color:var(--cyan);font-weight:600;}\n \n\/* ACCORDEON *\/\n.vstuto .vst-accordion{margin:10px 0 22px;border:1px solid var(--grey-mid);border-radius:8px;overflow:hidden;}\n.vstuto .vst-acc-trigger{width:100%;background:#f5f7fa;border:none;cursor:pointer;padding:13px 18px;\n  display:flex;align-items:center;justify-content:space-between;\n  font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:500;color:var(--blue-night);text-align:left;}\n.vstuto .vst-acc-trigger:hover{background:#edf0f5;}\n.vstuto .vst-acc-icon{font-size:1rem;color:var(--cyan);transition:transform .25s;line-height:1;display:inline-block;}\n.vstuto .vst-acc-trigger.open .vst-acc-icon{transform:rotate(90deg);}\n.vstuto .vst-acc-body{max-height:0;overflow:hidden;transition:max-height .35s ease;}\n.vstuto .vst-acc-body.open{max-height:900px;}\n.vstuto .vst-acc-body .vst-codeblock{margin:0;}\n.vstuto .vst-acc-body pre{border-radius:0;}\n.vstuto .vst-acc-body .vst-label{border-radius:0;}\n \n\/* ENCART PROMPT *\/\n.vstuto .vst-prompt-card{background:linear-gradient(180deg,#232048 0%,#2e2c57 100%);\n  border:1px solid rgba(42,95,255,.2);border-radius:10px;padding:22px 24px;margin:18px 0;color:#fff;}\n.vstuto .vst-prompt-title{font-size:.72rem;font-weight:600;letter-spacing:.12em;\n  text-transform:uppercase;color:var(--cyan);margin-bottom:14px;display:flex;align-items:center;gap:8px;}\n.vstuto .vst-prompt-title::before{content:\"\";display:inline-block;width:6px;height:6px;\n  background:var(--cyan);border-radius:50%;}\n.vstuto .vst-prompt-items{display:flex;flex-direction:column;gap:10px;}\n.vstuto .vst-prompt-item{display:flex;align-items:flex-start;gap:12px;}\n.vstuto .vst-prompt-pill{flex:none;background:rgba(42,95,255,.15);color:var(--cyan);\n  border:1px solid rgba(42,95,255,.3);border-radius:4px;padding:3px 10px;font-size:.74rem;font-weight:600;\n  white-space:nowrap;}\n.vstuto .vst-prompt-item p{font-size:.88rem;color:#c8d0e0;margin:0;line-height:1.5;}\n \n\/* STEPS VISUELS *\/\n.vstuto .vst-steps{margin:18px 0 22px;display:flex;flex-direction:column;gap:0;}\n.vstuto .vst-step{display:flex;align-items:flex-start;gap:16px;padding:14px 0;\n  border-bottom:1px solid var(--grey-mid);}\n.vstuto .vst-step:last-child{border-bottom:none;}\n.vstuto .vst-step-num{flex:none;width:32px;height:32px;border-radius:50%;background:var(--navy);\n  color:var(--cyan);font-size:.82rem;font-weight:700;display:flex;align-items:center;justify-content:center;}\n.vstuto .vst-step-body{flex:1;}\n.vstuto .vst-step-body strong{display:block;color:var(--navy);font-size:.95rem;margin-bottom:3px;}\n.vstuto .vst-step-body span{font-size:.88rem;color:#5a6070;}\n \n\/* MINI-GANTT *\/\n.vstuto .vsg{margin:0 0 8px;padding:20px 22px;\n  background:linear-gradient(180deg,#232048 0%,#2e2c57 100%);\n  border:1px solid rgba(42,95,255,.18);border-radius:10px;color:#fff;}\n.vstuto .vsg-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}\n.vstuto .vsg-head .vsg-h{font-size:.98rem;font-weight:600;color:#fff;}\n.vstuto .vsg-head .vsg-h small{display:block;font-weight:400;font-size:.74rem;color:var(--grey-mid);margin-top:2px;}\n.vstuto .vsg-phase{font-size:.74rem;font-weight:500;color:var(--cyan);\n  background:rgba(42,95,255,.12);border:1px solid rgba(42,95,255,.35);\n  border-radius:20px;padding:5px 13px;white-space:nowrap;transition:color .3s,background .3s,border-color .3s;}\n.vstuto .vsg.vsg-done .vsg-phase{color:#8fe39a;background:rgba(143,227,154,.12);border-color:rgba(143,227,154,.4);}\n.vstuto .vsg-legend{display:flex;flex-wrap:wrap;gap:14px;margin:13px 0 16px;font-size:.73rem;color:var(--grey-mid);}\n.vstuto .vsg-legend span{display:inline-flex;align-items:center;gap:6px;}\n.vstuto .vsg-dot{width:14px;height:10px;border-radius:3px;display:inline-block;}\n.vstuto .vsg-dot.ok{background:var(--cyan);}\n.vstuto .vsg-dot.late{background:var(--red-accent);}\n.vstuto .vsg-dot.brk{background:repeating-linear-gradient(45deg,rgba(214,84,76,.55) 0 5px,transparent 5px 10px);border:1px solid rgba(214,84,76,.6);}\n.vstuto .vsg-board{display:flex;}\n.vstuto .vsg-labels{flex:none;width:100px;}\n.vstuto .vsg-corner{height:28px;}\n.vstuto .vsg-lab{height:44px;display:flex;align-items:center;font-size:.8rem;font-weight:500;color:var(--grey-mid);transition:color .3s;}\n.vstuto .vsg.vsg-alea-on .vsg-lab[data-row=\"1\"]{color:var(--red-accent);font-weight:600;}\n.vstuto .vsg-lab[data-row=\"1\"] .vsg-warn{opacity:0;margin-left:5px;transition:opacity .3s;}\n.vstuto .vsg.vsg-alea-on .vsg-lab[data-row=\"1\"] .vsg-warn{opacity:1;}\n.vstuto .vsg-plot{flex:1;min-width:0;position:relative;}\n.vstuto .vsg-days{display:flex;height:28px;}\n.vstuto .vsg-days span{flex:1;text-align:center;font-size:.7rem;color:var(--grey-mid);\n  border-left:1px solid rgba(255,255,255,.06);line-height:28px;}\n.vstuto .vsg-days span:first-child{border-left:none;}\n.vstuto .vsg-rows{position:relative;height:132px;}\n.vstuto .vsg-rowbg{position:absolute;left:0;right:0;height:38px;top:calc(var(--row) * 44px);\n  background:rgba(255,255,255,.035);border-radius:6px;}\n.vstuto .vsg-rows::before{content:\"\";position:absolute;inset:0;pointer-events:none;border-radius:6px;\n  background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(100%\/6 - 1px),rgba(255,255,255,.06) calc(100%\/6 - 1px),rgba(255,255,255,.06) calc(100%\/6));}\n.vstuto .vsg-break{position:absolute;top:calc(var(--row) * 44px);height:38px;\n  left:calc(2\/6*100%);width:calc(2\/6*100%);border-radius:6px;\n  background:repeating-linear-gradient(45deg,rgba(214,84,76,.32) 0 7px,transparent 7px 14px);\n  border:1px dashed rgba(214,84,76,.6);opacity:0;transition:opacity .5s;z-index:1;}\n.vstuto .vsg.vsg-alea-on .vsg-break{opacity:1;}\n.vstuto .vsg-bar{position:absolute;height:34px;top:calc(var(--row)*44px + 2px);\n  left:calc(var(--start)\/6*100% + 2px);width:calc(var(--len)\/6*100% - 4px);\n  background:var(--cyan);color:var(--navy);border-radius:5px;\n  display:flex;align-items:center;gap:6px;padding:0 10px;\n  font-size:.75rem;font-weight:600;white-space:nowrap;overflow:hidden;z-index:2;\n  box-shadow:0 2px 8px rgba(0,0,0,.25);\n  transition:left .9s cubic-bezier(.45,0,.25,1),width .9s cubic-bezier(.45,0,.25,1),background .5s,color .5s;}\n.vstuto .vsg-tag{font-size:.6rem;font-weight:600;background:rgba(0,0,0,.18);border-radius:3px;padding:1px 5px;display:none;}\n.vstuto .vsg.vsg-after .vsg-bar[data-bar=\"102\"]{--start:4;background:var(--red-accent);color:#fff;}\n.vstuto .vsg.vsg-after .vsg-bar[data-bar=\"102\"] .vsg-tag{display:inline;}\n.vstuto .vsg-alea{margin-top:14px;display:flex;align-items:center;gap:9px;font-size:.82rem;\n  background:rgba(214,84,76,.12);border:1px solid rgba(214,84,76,.4);border-radius:7px;color:#f3b4b0;\n  padding:0 14px;max-height:0;opacity:0;overflow:hidden;transition:max-height .4s,opacity .4s,padding .4s;}\n.vstuto .vsg.vsg-alea-on .vsg-alea{max-height:70px;opacity:1;padding:10px 14px;}\n.vstuto .vsg.vsg-after .vsg-alea{background:rgba(143,227,154,.1);border-color:rgba(143,227,154,.4);color:#bfe9c5;}\n.vstuto .vsg-cap{font-size:.78rem;color:#7b8196;margin:0 0 24px;font-style:italic;}\n \n.vstuto .vst-end{font-size:.92rem;color:#7b8196;border-top:1px solid var(--grey-mid);margin-top:36px;padding-top:18px;}\n.vstuto .vst-end a{font-weight:500;}\n \n@media(max-width:600px){\n  .vstuto .vsg-labels{width:78px;}\n  .vstuto .vst-head h1{font-size:1.6rem;}\n  .vstuto .vst-bar{font-size:.66rem;padding:0 6px;}\n}\n<\/style>\n\n\n\n<section><div><header><p><span style=\"background: 0px 0px #ffffff; font-size: 0.74rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: #2a5fff; font-family: Roboto, -apple-system, sans-serif;\">Field report<\/span><\/p><p style=\"margin: 0px; background: 0px 0px #ffffff; font-size: 1.1rem; font-family: 'Roboto Slab', serif;\">How we built a production scheduler in no-code with Vision, with just enough JavaScript where it actually matters.<\/p><p style=\"margin: 14px 0px 0px; background: 0px 0px #ffffff; font-size: 0.82rem; color: #7b8196; font-family: Roboto, -apple-system, sans-serif;\">Industrial no-code<\/p><p style=\"margin: 14px 0px 0px; background: 0px 0px #ffffff; font-size: 0.82rem; color: #7b8196; font-family: Roboto, -apple-system, sans-serif;\">\u00a0<\/p><article><article style=\"margin: 0px; padding: 0px; color: #2b2a3d; font-family: Roboto, -apple-system, sans-serif;\">An industrial client asked us a straightforward question: their ERP generates a production order schedule, but as soon as a machine breaks down or a component is missing, it becomes inaccurate &#8211; and their ERP can neither recalculate it nor run simulations for different supply scenarios. We built the tool. Here is how, and what we learned from it<\/article><article style=\"margin: 0px; padding: 0px; color: #2b2a3d; font-family: Roboto, -apple-system, sans-serif;\"><\/article><article style=\"margin: 0px; padding: 0px; color: #2b2a3d; font-family: Roboto, -apple-system, sans-serif;\"><\/article><article style=\"margin: 0px; padding: 0px; color: #2b2a3d; font-family: Roboto, -apple-system, sans-serif;\">.<\/article><article style=\"margin: 0px; padding: 0px; color: #2b2a3d; font-family: Roboto, -apple-system, sans-serif;\"><div style=\"margin: 0px 0px 8px; padding: 20px 22px; background-image: linear-gradient(#232048 0%, #2e2c57 100%); background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.18); border-radius: 10px; color: #ffffff;\"><div style=\"display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;\"><div style=\"font-size: 0.98rem; font-weight: 600;\">Live rescheduling<small style=\"margin: 2px 0px 0px; font-size: 0.74rem; display: block; font-weight: 400; color: #ccd6e0;\">3 workstations \u00b7 6-day horizon \u00b7 one breakdown<\/small><\/div><p><span style=\"padding: 5px 13px; background: rgba(42, 95, 255, 0.12); border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.35); font-size: 0.74rem; color: #2a5fff; border-radius: 20px; white-space: nowrap; transition: color 0.3s, background 0.3s, border-color 0.3s;\" data-phase=\"\">1 \u00b7 Initial schedule<\/span><\/p><\/div><div style=\"margin: 13px 0px 16px; display: flex; flex-wrap: wrap; gap: 14px; font-size: 0.73rem; color: #ccd6e0;\"><i style=\"background: none 0% 0% \/ auto repeat scroll padding-box border-box #2a5fff; width: 14px; height: 10px; border-radius: 3px; display: inline-block;\"><\/i>Scheduled PO<i style=\"background: none 0% 0% \/ auto repeat scroll padding-box border-box #d6544c; width: 14px; height: 10px; border-radius: 3px; display: inline-block;\"><\/i>Delayed PO \/ behind schedule<i style=\"background-image: repeating-linear-gradient(45deg, rgba(214, 84, 76, 0.55) 0px, rgba(214, 84, 76, 0.55) 5px, transparent 5px, transparent 10px); background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-width: 1px; border-style: solid; border-color: rgba(214, 84, 76, 0.6); width: 14px; height: 10px; border-radius: 3px; display: inline-block;\"><\/i>Workstation unavailable<\/div><div style=\"display: flex;\"><div style=\"flex: 0 0 auto; width: 100px;\"><div style=\"height: 28px;\">\u00a0<\/div><div style=\"height: 44px; display: flex; align-items: center; font-size: 0.8rem; color: #ccd6e0; transition: color 0.3s;\" data-row=\"0\">CNC Lathe<\/div><div style=\"height: 44px; display: flex; align-items: center; font-size: 0.8rem; color: #ccd6e0; transition: color 0.3s;\" data-row=\"1\">Milling machine<span style=\"margin: 0px 0px 0px 5px; opacity: 0; transition: opacity 0.3s;\"><img decoding=\"async\" style=\"height: 1em !important;\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/26a0.svg\" alt=\"\u26a0\" \/><\/span><\/div><div style=\"height: 44px; display: flex; align-items: center; font-size: 0.8rem; color: #ccd6e0; transition: color 0.3s;\" data-row=\"2\">Assembly<\/div><\/div><div style=\"flex: 1 1 0%; min-width: 0px; position: relative;\"><div style=\"display: flex; height: 28px;\">D1D2D3D4D5D6<\/div><div style=\"position: relative; height: 132px;\"><div style=\"background: rgba(255, 255, 255, 0.035); position: absolute; left: 0px; right: 0px; height: 38px; top: 0px; border-radius: 6px; --row: 0;\">\u00a0<\/div><div style=\"background: rgba(255, 255, 255, 0.035); position: absolute; left: 0px; right: 0px; height: 38px; top: 44px; border-radius: 6px; --row: 1;\">\u00a0<\/div><div style=\"background: rgba(255, 255, 255, 0.035); position: absolute; left: 0px; right: 0px; height: 38px; top: 88px; border-radius: 6px; --row: 2;\">\u00a0<\/div><div style=\"background-image: repeating-linear-gradient(45deg, rgba(214, 84, 76, 0.32) 0px, rgba(214, 84, 76, 0.32) 7px, transparent 7px, transparent 14px); background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-width: 1px; border-style: dashed; border-color: rgba(214, 84, 76, 0.6); position: absolute; top: 44px; height: 38px; left: 191.328px; width: 191.328px; border-radius: 6px; opacity: 0; transition: opacity 0.5s; z-index: 1; --row: 1;\">\u00a0<\/div><div style=\"padding: 0px 10px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #2a5fff; position: absolute; height: 34px; top: 2px; left: calc(0% + 2px); width: calc(50% - 4px); color: #232048; border-radius: 5px; display: flex; align-items: center; gap: 6px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; overflow: hidden; z-index: 2; box-shadow: rgba(0, 0, 0, 0.25) 0px 2px 8px; transition: left 0.9s cubic-bezier(0.45, 0, 0.25, 1), width 0.9s cubic-bezier(0.45, 0, 0.25, 1), background 0.5s, color 0.5s; --row: 0; --start: 0; --len: 3;\" data-bar=\"101\">PO-101<\/div><div style=\"padding: 0px 10px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #2a5fff; position: absolute; height: 34px; top: 46px; left: calc(33.3333% + 2px); width: calc(33.3333% - 4px); color: #232048; border-radius: 5px; display: flex; align-items: center; gap: 6px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; overflow: hidden; z-index: 2; box-shadow: rgba(0, 0, 0, 0.25) 0px 2px 8px; transition: left 0.9s cubic-bezier(0.45, 0, 0.25, 1), width 0.9s cubic-bezier(0.45, 0, 0.25, 1), background 0.5s, color 0.5s; --row: 1; --start: 2; --len: 2;\" data-bar=\"102\">PO-102<\/div><div style=\"padding: 0px 10px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #2a5fff; position: absolute; height: 34px; top: 90px; left: calc(16.6667% + 2px); width: calc(50% - 4px); color: #232048; border-radius: 5px; display: flex; align-items: center; gap: 6px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; overflow: hidden; z-index: 2; box-shadow: rgba(0, 0, 0, 0.25) 0px 2px 8px; transition: left 0.9s cubic-bezier(0.45, 0, 0.25, 1), width 0.9s cubic-bezier(0.45, 0, 0.25, 1), background 0.5s, color 0.5s; --row: 2; --start: 1; --len: 3;\" data-bar=\"103\">PO-103<\/div><\/div><\/div><\/div><div style=\"margin: 14px 0px 0px; padding: 0px 14px; background: rgba(214, 84, 76, 0.12); border-width: 1px; border-style: solid; border-color: rgba(214, 84, 76, 0.4); display: flex; align-items: center; gap: 9px; font-size: 0.82rem; border-radius: 7px; color: #f3b4b0; max-height: 0px; opacity: 0; overflow: hidden; transition: max-height 0.4s, opacity 0.4s, padding 0.4s;\" data-alea=\"\"><span style=\"font-weight: bolder;\"><img decoding=\"async\" style=\"height: 1em !important;\" role=\"img\" draggable=\"false\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/26a0.svg\" alt=\"\u26a0\" \/>\u00a0Breakdown:<\/span>the Milling machine is unavailable on D3-D4. PO-102 is pushed back after restart.<\/div><\/div><p style=\"margin: 0px 0px 24px; font-size: 0.78rem; color: #7b8196; font-style: italic;\">The Milling machine breaks down; PO-102 slides to D5-D6 on the same workstation, flagged as delayed. The supervisor validates the proposal.<\/p><h2 style=\"margin: 38px 0px 12px; font-family: Roboto, sans-serif; font-weight: 600; color: #232048; font-size: 1.4rem; line-height: 1.25;\"><span style=\"margin: 0px 8px 0px 0px; color: #2a5fff;\">1.<\/span>The problem<\/h2><p>The ERP does its job well: it converts orders into <span style=\"color: #232048; font-weight: 600;\">production orders<\/span> through requirements calculation. But this calculation runs at infinite capacity, on a fixed horizon. It assumes machines are always running and materials are available. The schedule is accurate on Monday morning; after the first disruption, it becomes fiction. And disruptions happen every day: a component shortage, a supplier delay, a machine breakdown, an absence, a customer emergency, a rejected batch. Each time, the supervisor reopens Excel, makes phone calls, moves labels on a wall planner &#8211; with no visibility on the cascading effects.<\/p><div style=\"margin: 22px 0px; padding: 14px 18px; background: #ffffff; border-width: 0px 0px 0px 3px; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor #2a5fff; border-radius: 6px; font-size: 0.98rem; color: #394170;\"><span style=\"font-weight: bolder; color: #232048;\">The real need:<\/span> start from the ERP schedule, continuously check real material availability and capacity, and re-propose a schedule within seconds when a disruption occurs &#8211; with a quantified impact on delivery dates.<\/div><h2 style=\"margin: 38px 0px 12px; font-family: Roboto, sans-serif; font-weight: 600; color: #232048; font-size: 1.4rem; line-height: 1.25;\"><span style=\"margin: 0px 8px 0px 0px; color: #2a5fff;\">2.<\/span>Screens and workflows, in no-code<\/h2><p>With Vision, we do not design mockups: we describe the need, the platform generates the application, and we refine it in no-code. We always start with the <span style=\"color: #232048; font-weight: 600;\">data model<\/span> &#8211; it structures everything else.<\/p><div style=\"margin: 18px 0px; border-image: none 100% \/ 1 \/ 0 stretch; overflow-x: auto; border-radius: 6px; border: 1px solid #ccd6e0;\"><table style=\"background: #ffffff; font-size: 0.88rem; width: 718px;\"><thead><tr><th style=\"padding: 9px 14px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #232048; color: #ffffff; font-size: 0.82rem;\">Entity<\/th><th style=\"padding: 9px 14px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #232048; color: #ffffff; font-size: 0.82rem;\">Main fields<\/th><\/tr><\/thead><tbody><tr><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\"><code style=\"padding: 1px 5px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #e6ebf2; color: #394170; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; border-radius: 4px;\">Production Order<\/code><\/td><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\">item, quantity, due_date, priority, status, workstation, planned start \/ end<\/td><\/tr><tr><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\"><code style=\"padding: 1px 5px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #e6ebf2; color: #394170; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; border-radius: 4px;\">Item<\/code> \/ <code style=\"padding: 1px 5px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #e6ebf2; color: #394170; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; border-radius: 4px;\">Bill of Materials<\/code><\/td><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\">reference, type ; + component (linked to Item), quantity_per<\/td><\/tr><tr><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\"><code style=\"padding: 1px 5px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #e6ebf2; color: #394170; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; border-radius: 4px;\">Stock<\/code><\/td><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\">item, available_quantity, reserved_quantity<\/td><\/tr><tr><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\"><code style=\"padding: 1px 5px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #e6ebf2; color: #394170; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; border-radius: 4px;\">Workstation<\/code><\/td><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\">name, daily_capacity (h), calendar, status<\/td><\/tr><tr><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\"><code style=\"padding: 1px 5px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #e6ebf2; color: #394170; font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; border-radius: 4px;\">Disruption<\/code><\/td><td style=\"vertical-align: top; padding: 9px 14px; border-width: 1px 1px 0px 0px; border-style: solid solid none none; border-color: #ccd6e0 #282828 currentcolor currentcolor;\">type, related PO \/ workstation \/ item, impact, date<\/td><\/tr><\/tbody><\/table><\/div><p>On the screen side, we generated the essentials: the Gantt by workstation (above), the filterable PO list, the PO detail view, the load table, the disruption declaration form, and the delays dashboard. The lifecycle of a PO is described as a sequence of states:<\/p><div style=\"margin: 14px 0px 22px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 0.86rem;\"><span style=\"padding: 6px 12px; background: #ffffff; border-width: 1px 1px 2px; border-style: solid; border-color: #ccd6e0 #ccd6e0 #2a5fff; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 5px; color: #232048;\">Scheduled<\/span><span style=\"color: #2a5fff; font-weight: 600;\">\u2192<\/span><span style=\"padding: 6px 12px; background: #ffffff; border-width: 1px 1px 2px; border-style: solid; border-color: #ccd6e0 #ccd6e0 #2a5fff; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 5px; color: #232048;\">Ready to launch<\/span><span style=\"color: #2a5fff; font-weight: 600;\">\u2192<\/span><span style=\"padding: 6px 12px; background: #ffffff; border-width: 1px 1px 2px; border-style: solid; border-color: #ccd6e0 #ccd6e0 #2a5fff; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 5px; color: #232048;\">Launched<\/span><span style=\"color: #2a5fff; font-weight: 600;\">\u2192<\/span><span style=\"padding: 6px 12px; background: #ffffff; border-width: 1px 1px 2px; border-style: solid; border-color: #ccd6e0 #ccd6e0 #2a5fff; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 5px; color: #232048;\">In progress<\/span><span style=\"color: #2a5fff; font-weight: 600;\">\u2192<\/span><span style=\"padding: 6px 12px; background: #ffffff; border-width: 1px 1px 2px; border-style: solid; border-color: #ccd6e0 #ccd6e0 #2a5fff; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 5px; color: #232048;\">Completed<\/span><\/div><p>The transition to \u201cReady to launch\u201d is not manual: a rule checks that all components are in stock. And declaring a disruption triggers rescheduling, which the supervisor then validates. All of this is described in Vision in just a few lines:<\/p><div style=\"margin: 18px 0px; padding: 22px 24px; background-image: linear-gradient(#232048 0%, #2e2c57 100%); background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.2); border-radius: 10px; color: #ffffff;\"><div style=\"margin: 0px 0px 14px; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: #2a5fff; display: flex; align-items: center; gap: 8px;\">What we described to Vision (Vibe-code)<\/div><div style=\"display: flex; flex-direction: column; gap: 10px;\"><div style=\"display: flex; align-items: flex-start; gap: 12px;\"><span style=\"padding: 3px 10px; background: rgba(42, 95, 255, 0.15); border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.3); flex: 0 0 auto; color: #2a5fff; border-radius: 4px; font-size: 0.74rem; font-weight: 600; white-space: nowrap;\">Data<\/span>POs, Items and Bills of Materials, Stock, Workstations, Disruptions &#8211; with their relationships and business fields<\/div><div style=\"display: flex; align-items: flex-start; gap: 12px;\"><span style=\"padding: 3px 10px; background: rgba(42, 95, 255, 0.15); border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.3); flex: 0 0 auto; color: #2a5fff; border-radius: 4px; font-size: 0.74rem; font-weight: 600; white-space: nowrap;\">Goal<\/span>Reschedule POs based on available materials and real workstation capacity, and re-sequence on each declared disruption<\/div><div style=\"display: flex; align-items: flex-start; gap: 12px;\"><span style=\"padding: 3px 10px; background: rgba(42, 95, 255, 0.15); border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.3); flex: 0 0 auto; color: #2a5fff; border-radius: 4px; font-size: 0.74rem; font-weight: 600; white-space: nowrap;\">Screens<\/span>Gantt by workstation \u00b7 PO list \u00b7 PO detail \u00b7 load table \u00b7 disruption declaration \u00b7 delays dashboard<\/div><div style=\"display: flex; align-items: flex-start; gap: 12px;\"><span style=\"padding: 3px 10px; background: rgba(42, 95, 255, 0.15); border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.3); flex: 0 0 auto; color: #2a5fff; border-radius: 4px; font-size: 0.74rem; font-weight: 600; white-space: nowrap;\">Rules<\/span>Statuses: Scheduled \u2192 Ready to launch (if components OK) \u2192 Launched \u2192 Completed \u00b7 disruption = rescheduling to validate<\/div><\/div><\/div><div style=\"margin: 10px 0px 22px; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 8px; overflow: hidden; border: 1px solid #ccd6e0;\"><p><button style=\"margin: 0px; padding: 13px 18px; width: 718px; background: #f5f7fa; cursor: pointer; display: flex; align-items: center; justify-content: space-between; font-family: Roboto, sans-serif; font-size: 0.88rem; font-weight: 500; color: #394170; text-align: left; border: medium none currentcolor;\" type=\"button\">See the full prompt sent to Vision<span style=\"font-size: 1rem; color: #2a5fff; transition: transform 0.25s; line-height: 1; display: inline-block;\">\u25ba<\/span><\/button><\/p><div style=\"max-height: 0px; overflow: hidden; transition: max-height 0.35s;\"><div><div style=\"padding: 7px 14px; background: #13111f; display: flex; justify-content: space-between; align-items: center; color: #ccd6e0; font-size: 0.72rem; border-radius: 0px;\">\u00a0<\/div><pre style=\"margin: 0px; padding: 16px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #1a1830; color: #dfe6f0; font-family: 'JetBrains Mono', monospace; font-size: 0.8rem; border-radius: 0px; overflow-x: auto; line-height: 1.65;\"><code><\/code><\/pre><\/div><\/div><\/div><h2 style=\"margin: 38px 0px 12px; font-family: Roboto, sans-serif; font-weight: 600; color: #232048; font-size: 1.4rem; line-height: 1.25;\"><span style=\"margin: 0px 8px 0px 0px; color: #2a5fff;\">3.<\/span>The brain: a little JavaScript<\/h2><p>No-code handles the screens, the data, and the workflows. But scheduling at finite capacity with material constraints is a real optimisation problem &#8211; it cannot be configured through a menu. We wrote it in JavaScript, in a block called by the \u201cDeclare a disruption\u201d workflow. No overengineering: a <span style=\"color: #232048; font-weight: 600;\">list heuristic<\/span> in 4 steps, simple enough to explain to the supervisor.<\/p><div style=\"margin: 18px 0px 22px; display: flex; flex-direction: column; gap: 0px;\"><div style=\"padding: 14px 0px; border-width: 0px 0px 1px; border-style: none none solid; border-color: currentcolor currentcolor #ccd6e0; display: flex; align-items: flex-start; gap: 16px;\"><div style=\"background: none 0% 0% \/ auto repeat scroll padding-box border-box #232048; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; color: #2a5fff; font-size: 0.82rem; font-weight: bold; display: flex; align-items: center; justify-content: center;\">1<\/div><div style=\"flex: 1 1 0%;\"><span style=\"margin: 0px 0px 3px; font-weight: bolder; color: #232048; display: block; font-size: 0.95rem;\">Sort POs by priority<\/span>Customer emergencies first, then earliest due date, then smallest slack.<\/div><\/div><div style=\"padding: 14px 0px; border-width: 0px 0px 1px; border-style: none none solid; border-color: currentcolor currentcolor #ccd6e0; display: flex; align-items: flex-start; gap: 16px;\"><div style=\"background: none 0% 0% \/ auto repeat scroll padding-box border-box #232048; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; color: #2a5fff; font-size: 0.82rem; font-weight: bold; display: flex; align-items: center; justify-content: center;\">2<\/div><div style=\"flex: 1 1 0%;\"><span style=\"margin: 0px 0px 3px; font-weight: bolder; color: #232048; display: block; font-size: 0.95rem;\">Check material availability<\/span>For each PO, compare the bill of materials against available stock before scheduling.<\/div><\/div><div style=\"padding: 14px 0px; border-width: 0px 0px 1px; border-style: none none solid; border-color: currentcolor currentcolor #ccd6e0; display: flex; align-items: flex-start; gap: 16px;\"><div style=\"background: none 0% 0% \/ auto repeat scroll padding-box border-box #232048; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; color: #2a5fff; font-size: 0.82rem; font-weight: bold; display: flex; align-items: center; justify-content: center;\">3<\/div><div style=\"flex: 1 1 0%;\"><span style=\"margin: 0px 0px 3px; font-weight: bolder; color: #232048; display: block; font-size: 0.95rem;\">Place on the first available slot<\/span>Skipping non-working days and workstations under maintenance. Least-loaded workstation takes priority.<\/div><\/div><div style=\"padding: 14px 0px; border-width: 0px 0px medium; display: flex; align-items: flex-start; gap: 16px;\"><div style=\"background: none 0% 0% \/ auto repeat scroll padding-box border-box #232048; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; color: #2a5fff; font-size: 0.82rem; font-weight: bold; display: flex; align-items: center; justify-content: center;\">4<\/div><div style=\"flex: 1 1 0%;\"><span style=\"margin: 0px 0px 3px; font-weight: bolder; color: #232048; display: block; font-size: 0.95rem;\">Flag delays and raise alerts<\/span>Any PO whose end date exceeds its due date is flagged, with the quantified gap on the affected orders.<\/div><\/div><\/div><div style=\"margin: 10px 0px 22px; border-image: none 100% \/ 1 \/ 0 stretch; border-radius: 8px; overflow: hidden; border: 1px solid #ccd6e0;\"><p><button style=\"margin: 0px; padding: 13px 18px; width: 718px; background: #f5f7fa; cursor: pointer; display: flex; align-items: center; justify-content: space-between; font-family: Roboto, sans-serif; font-size: 0.88rem; font-weight: 500; color: #394170; text-align: left; border: medium none currentcolor;\" type=\"button\">Code &#8211; the sorting function (EDD)<span style=\"font-size: 1rem; color: #2a5fff; transition: transform 0.25s; line-height: 1; display: inline-block;\">\u25ba<\/span><\/button><\/p><div style=\"max-height: 0px; overflow: hidden; transition: max-height 0.35s;\"><div><div style=\"padding: 7px 14px; background: #13111f; display: flex; justify-content: space-between; align-items: center; color: #ccd6e0; font-size: 0.72rem; border-radius: 0px;\">\u00a0<\/div><pre style=\"margin: 0px; padding: 16px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #1a1830; color: #dfe6f0; font-family: 'JetBrains Mono', monospace; font-size: 0.8rem; border-radius: 0px; overflow-x: auto; line-height: 1.65;\"><code><\/code><\/pre><\/div><\/div><\/div><p>The core of the matter for the supervisor: when a disruption occurs, we apply its effect, re-run the engine, and present the <span style=\"color: #232048; font-weight: 600;\">quantified gap<\/span> between the old and new schedule. The decision remains human.<\/p><div style=\"margin: 18px 0px;\"><div style=\"padding: 7px 14px; background: #13111f; display: flex; justify-content: space-between; align-items: center; color: #ccd6e0; font-size: 0.72rem; border-radius: 7px 7px 0px 0px;\"><span style=\"color: #2a5fff; text-transform: uppercase; letter-spacing: 0.1em;\">JavaScript &#8211; disruption response<\/span><button style=\"margin: 0px; padding: 3px 11px; background: rgba(42, 95, 255, 0.15); color: #2a5fff; border-width: 1px; border-style: solid; border-color: rgba(42, 95, 255, 0.35); border-radius: 5px; font-size: 0.7rem; font-weight: 500; cursor: pointer; font-family: Roboto, sans-serif;\" type=\"button\">Copy<\/button><\/div><pre style=\"margin: 0px; padding: 16px; background: none 0% 0% \/ auto repeat scroll padding-box border-box #1a1830; color: #dfe6f0; font-family: 'JetBrains Mono', monospace; font-size: 0.8rem; border-radius: 0px 0px 7px 7px; overflow-x: auto; line-height: 1.65;\"><code><span style=\"color: #2a5fff;\">const<\/span> <span style=\"color: #7ee3ff;\">rescheduleOnDisruption<\/span> = (disruption, state) =&gt; {\n  <span style=\"color: #2a5fff;\">const<\/span> before = state.schedule;\n  <span style=\"color: #2a5fff;\">switch<\/span> (disruption.type) {                      <span style=\"color: #6b7394; font-style: italic;\">\/\/ 1) apply the disruption<\/span>\n    <span style=\"color: #2a5fff;\">case<\/span> <span style=\"color: #9ad7a0;\">\"breakdown\"<\/span>: state.<span style=\"color: #7ee3ff;\">closeStation<\/span>(disruption.station, disruption.duration); <span style=\"color: #2a5fff;\">break<\/span>;\n    <span style=\"color: #2a5fff;\">case<\/span> <span style=\"color: #9ad7a0;\">\"delay\"<\/span>:     state.<span style=\"color: #7ee3ff;\">pushReceipt<\/span>(disruption.item, disruption.days);        <span style=\"color: #2a5fff;\">break<\/span>;\n    <span style=\"color: #2a5fff;\">case<\/span> <span style=\"color: #9ad7a0;\">\"reject\"<\/span>:    state.<span style=\"color: #7ee3ff;\">reInjectPO<\/span>(disruption.po, disruption.quantity);       <span style=\"color: #2a5fff;\">break<\/span>;\n    <span style=\"color: #2a5fff;\">case<\/span> <span style=\"color: #9ad7a0;\">\"emergency\"<\/span>: state.<span style=\"color: #7ee3ff;\">forcePriority<\/span>(disruption.po, <span style=\"color: #9ad7a0;\">\"urgent\"<\/span>);             <span style=\"color: #2a5fff;\">break<\/span>;\n  }\n  <span style=\"color: #2a5fff;\">const<\/span> after  = <span style=\"color: #7ee3ff;\">schedule<\/span>(state, disruption.date);  <span style=\"color: #6b7394; font-style: italic;\">\/\/ 2) re-run the engine<\/span>\n  <span style=\"color: #2a5fff;\">const<\/span> impact = after.pos                           <span style=\"color: #6b7394; font-style: italic;\">\/\/ 3) quantify the gap<\/span>\n    .<span style=\"color: #7ee3ff;\">map<\/span>(o =&gt; ({ po: o.ref, previousEnd: before[o.ref]?.end,\n                newEnd: o.end, delayed: o.end &gt; o.dueDate }))\n    .<span style=\"color: #7ee3ff;\">filter<\/span>(d =&gt; d.previousEnd !== d.newEnd);\n  <span style=\"color: #2a5fff;\">return<\/span> { schedule: after, impact, pendingValidation: <span style=\"color: #2a5fff;\">true<\/span> };\n};<\/code><\/pre><\/div><p>The supervisor then sees a clear proposal &#8211; \u201c3 POs shifted, 1 new delay on order X\u201d &#8211; which they can validate, adjust, or reject.<\/p><h2 style=\"margin: 38px 0px 12px; font-family: Roboto, sans-serif; font-weight: 600; color: #232048; font-size: 1.4rem; line-height: 1.25;\"><span style=\"margin: 0px 8px 0px 0px; color: #2a5fff;\">4.<\/span>Key takeaways<\/h2><ul style=\"margin: 10px 0px 18px; list-style: none;\"><li style=\"margin: 0px 0px 10px; padding: 0px 0px 0px 22px; position: relative; font-size: 1.02rem;\">The right split: <span style=\"color: #232048; font-weight: 600;\">no-code for the application<\/span> (90% of time saved), <span style=\"color: #232048; font-weight: 600;\">JavaScript for the business logic<\/span> (the scheduling algorithm).<\/li><li style=\"margin: 0px 0px 10px; padding: 0px 0px 0px 22px; position: relative; font-size: 1.02rem;\">A simple, explainable heuristic beats a perfect optimisation that nobody understands: the supervisor must be able to follow the decision.<\/li><li style=\"margin: 0px 0px 10px; padding: 0px 0px 0px 22px; position: relative; font-size: 1.02rem;\">The ERP remains the source of requirements and master data; we add on top of it the reactive rescheduling layer it lacks.<\/li><li style=\"margin: 0px 0px 10px; padding: 0px 0px 0px 22px; position: relative; font-size: 1.02rem;\">From scoping to a usable V1: a matter of days, not an 18-month project &#8211; and business teams can evolve the app themselves afterwards.<\/li><\/ul><p style=\"margin: 36px 0px 18px; padding: 18px 0px 0px; border-width: 1px 0px 0px; border-style: solid none none; border-color: #ccd6e0 currentcolor currentcolor; font-size: 0.92rem; color: #7b8196;\">A scheduling, planning, or shop floor tracking challenge on your side? Let\u2019s talk, and we can share the full algorithm code on request &#8211; <a style=\"color: #2a5fff;\" href=\"https:\/\/visionsoft.tech\/\">visionsoft.tech<\/a>.<\/p><\/article><\/article><article><\/article><\/header><article><\/article><\/div><\/section>\n\n\n\n<script>\n(function(){\n  var root = (document.currentScript && document.currentScript.parentNode.querySelector('.vstuto'))\n             || document.querySelector('.vstuto');\n  if(!root) return;\n \n  \/* Copier *\/\n  root.addEventListener('click', function(e){\n    var btn = e.target.closest ? e.target.closest('.vst-copy') : null;\n    if(!btn) return;\n    var pre = btn.closest('.vst-codeblock').querySelector('pre');\n    var done = function(){ var o=btn.textContent; btn.textContent='Copie \u2713'; setTimeout(function(){ btn.textContent=o; },1500); };\n    if(navigator.clipboard && navigator.clipboard.writeText){\n      navigator.clipboard.writeText(pre.innerText).then(done, function(){ btn.textContent='Ctrl+C'; });\n    } else { btn.textContent='Ctrl+C'; }\n  });\n \n  \/* Accordeons *\/\n  root.querySelectorAll('.vst-acc-trigger').forEach(function(btn){\n    btn.addEventListener('click', function(){\n      var body = btn.nextElementSibling;\n      var isOpen = body.classList.contains('open');\n      body.classList.toggle('open', !isOpen);\n      btn.classList.toggle('open', !isOpen);\n    });\n  });\n \n  \/* Gantt anime *\/\n  var gantt = root.querySelector('.vsg');\n  if(gantt){\n    var phaseEl = gantt.querySelector('[data-phase]');\n    var phases = [\n      { t:2800, label:'1 - Planning initial',                alea:false, after:false, done:false },\n      { t:2400, label:'2 - Panne Fraiseuse (J3-J4)',         alea:true,  after:false, done:false },\n      { t:2800, label:'3 - Replanification : OF-102 decale', alea:true,  after:true,  done:false },\n      { t:3200, label:'4 - Planning valide - retard signale',alea:true,  after:true,  done:true  }\n    ];\n    var i = 0;\n    (function tick(){\n      var p = phases[i];\n      if(phaseEl) phaseEl.textContent = p.label;\n      gantt.classList.toggle('vsg-alea-on', p.alea);\n      gantt.classList.toggle('vsg-after',   p.after);\n      gantt.classList.toggle('vsg-done',    p.done);\n      i = (i+1) % phases.length;\n      setTimeout(tick, p.t);\n    })();\n  }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Your ERP generates a schedule on Monday, but it becomes obsolete the moment the first disruption occurs. Discover how to build a responsive, no-code production scheduler using Vision\u2014featuring finite capacity scheduling and real-time disruption management.<\/p>\n","protected":false},"author":9,"featured_media":22332,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1,93],"tags":[],"class_list":["post-22717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-non-classifiee","category-use-cases"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Badr Chentouf\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visionsoft\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Reschedule production when the ERP doesn\u2019t do it\" \/>\n\t\t<meta property=\"og:description\" content=\"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/04\/cropped-logo-visionsoft-gradient.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/04\/cropped-logo-visionsoft-gradient.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t\t<meta property=\"og:image:height\" content=\"198\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-06-01T07:30:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-07T19:40:30+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#blogposting\",\"name\":\"Reschedule production when the ERP doesn\\u2019t do it\",\"headline\":\"Reschedule production when the ERP doesn\\u2019t do it\",\"author\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/replanification-production-erp.jpg\",\"width\":1200,\"height\":630},\"datePublished\":\"2026-06-01T09:30:00+02:00\",\"dateModified\":\"2026-07-07T21:40:30+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#webpage\"},\"articleSection\":\"Non classifi\\u00e9(e), Use cases, Facultatif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#listItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/category\\\/non-classifiee\\\/#listItem\",\"name\":\"Non classifi\\u00e9(e)\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/category\\\/non-classifiee\\\/#listItem\",\"position\":2,\"name\":\"Non classifi\\u00e9(e)\",\"item\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/category\\\/non-classifiee\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#listItem\",\"name\":\"Reschedule production when the ERP doesn\\u2019t do it\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#listItem\",\"name\":\"Accueil\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#listItem\",\"position\":3,\"name\":\"Reschedule production when the ERP doesn\\u2019t do it\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/category\\\/non-classifiee\\\/#listItem\",\"name\":\"Non classifi\\u00e9(e)\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#organization\",\"name\":\"Visionsoft\",\"description\":\"Plateforme No-Code & IA pour l'Industrie | Vibe-codez vos apps\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/\",\"email\":\"contact@visionsoft.tech\",\"telephone\":\"+33559015960\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"value\":20},\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-visionsoft-gradient.webp\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#organizationLogo\",\"width\":512,\"height\":198},\"image\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/@nocodevision\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/visionsoft-nocode\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#author\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/\",\"name\":\"Badr Chentouf\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b7636cccd7f3a75626073baac641a4902cafba26cf007a29e92aa6b1950bc9fb?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Badr Chentouf\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#webpage\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/\",\"name\":\"Reschedule production when the ERP doesn\\u2019t do it\",\"description\":\"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/replanification-production-erp.jpg\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#mainImage\",\"width\":1200,\"height\":630},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/replanifier-production-erp\\\/#mainImage\"},\"datePublished\":\"2026-06-01T09:30:00+02:00\",\"dateModified\":\"2026-07-07T21:40:30+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/\",\"name\":\"Visionsoft\",\"alternateName\":\"Vision\",\"description\":\"Plateforme No-Code & IA pour l'Industrie | Vibe-codez vos apps\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/visionsoft.tech\\\/en\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>Reschedule production when the ERP doesn\u2019t do it<\/title>\n\n","aioseo_head_json":{"title":"Reschedule production when the ERP doesn\u2019t do it","description":"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.","canonical_url":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#blogposting","name":"Reschedule production when the ERP doesn\u2019t do it","headline":"Reschedule production when the ERP doesn\u2019t do it","author":{"@id":"https:\/\/visionsoft.tech\/en\/#author"},"publisher":{"@id":"https:\/\/visionsoft.tech\/en\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/05\/replanification-production-erp.jpg","width":1200,"height":630},"datePublished":"2026-06-01T09:30:00+02:00","dateModified":"2026-07-07T21:40:30+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#webpage"},"isPartOf":{"@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#webpage"},"articleSection":"Non classifi\u00e9(e), Use cases, Facultatif"},{"@type":"BreadcrumbList","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/#listItem","position":1,"name":"Accueil","item":"https:\/\/visionsoft.tech\/en\/","nextItem":{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/category\/non-classifiee\/#listItem","name":"Non classifi\u00e9(e)"}},{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/category\/non-classifiee\/#listItem","position":2,"name":"Non classifi\u00e9(e)","item":"https:\/\/visionsoft.tech\/en\/category\/non-classifiee\/","nextItem":{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#listItem","name":"Reschedule production when the ERP doesn\u2019t do it"},"previousItem":{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/#listItem","name":"Accueil"}},{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#listItem","position":3,"name":"Reschedule production when the ERP doesn\u2019t do it","previousItem":{"@type":"ListItem","@id":"https:\/\/visionsoft.tech\/en\/category\/non-classifiee\/#listItem","name":"Non classifi\u00e9(e)"}}]},{"@type":"Organization","@id":"https:\/\/visionsoft.tech\/en\/#organization","name":"Visionsoft","description":"Plateforme No-Code & IA pour l'Industrie | Vibe-codez vos apps","url":"https:\/\/visionsoft.tech\/en\/","email":"contact@visionsoft.tech","telephone":"+33559015960","numberOfEmployees":{"@type":"QuantitativeValue","value":20},"logo":{"@type":"ImageObject","url":"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/04\/logo-visionsoft-gradient.webp","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#organizationLogo","width":512,"height":198},"image":{"@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#organizationLogo"},"sameAs":["https:\/\/www.youtube.com\/@nocodevision","https:\/\/www.linkedin.com\/company\/visionsoft-nocode\/"]},{"@type":"Person","@id":"https:\/\/visionsoft.tech\/en\/#author","url":"https:\/\/visionsoft.tech\/en\/","name":"Badr Chentouf","image":{"@type":"ImageObject","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/b7636cccd7f3a75626073baac641a4902cafba26cf007a29e92aa6b1950bc9fb?s=96&d=mm&r=g","width":96,"height":96,"caption":"Badr Chentouf"}},{"@type":"WebPage","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#webpage","url":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/","name":"Reschedule production when the ERP doesn\u2019t do it","description":"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/visionsoft.tech\/en\/#website"},"breadcrumb":{"@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#breadcrumblist"},"author":{"@id":"https:\/\/visionsoft.tech\/en\/#author"},"creator":{"@id":"https:\/\/visionsoft.tech\/en\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/05\/replanification-production-erp.jpg","@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#mainImage","width":1200,"height":630},"primaryImageOfPage":{"@id":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/#mainImage"},"datePublished":"2026-06-01T09:30:00+02:00","dateModified":"2026-07-07T21:40:30+02:00"},{"@type":"WebSite","@id":"https:\/\/visionsoft.tech\/en\/#website","url":"https:\/\/visionsoft.tech\/en\/","name":"Visionsoft","alternateName":"Vision","description":"Plateforme No-Code & IA pour l'Industrie | Vibe-codez vos apps","inLanguage":"en-US","publisher":{"@id":"https:\/\/visionsoft.tech\/en\/#organization"}}]},"og:locale":"en_US","og:site_name":"Visionsoft","og:type":"article","og:title":"Reschedule production when the ERP doesn\u2019t do it","og:description":"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.","og:url":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/","og:image":"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/04\/cropped-logo-visionsoft-gradient.png","og:image:secure_url":"https:\/\/visionsoft.tech\/wp-content\/uploads\/2026\/04\/cropped-logo-visionsoft-gradient.png","og:image:width":512,"og:image:height":198,"article:published_time":"2026-06-01T07:30:00+00:00","article:modified_time":"2026-07-07T19:40:30+00:00"},"aioseo_meta_data":{"post_id":"22717","title":"#post_title","description":"Your ERP schedule breaks at the first disruption. See how Vision builds a responsive no-code production scheduler with finite-capacity planning.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"seo_analyzer_scan_date":"2026-07-07 20:49:37","breadcrumb_settings":null,"limit_modified_date":false,"open_ai":null,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-06-01 17:58:23","updated":"2026-07-07 20:49:37"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/visionsoft.tech\/en\/\" title=\"Accueil\">Accueil<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/visionsoft.tech\/en\/category\/non-classifiee\/\" title=\"Non classifi\u00e9(e)\">Non classifi\u00e9(e)<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\tReschedule production when the ERP doesn\u2019t do it\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Accueil","link":"https:\/\/visionsoft.tech\/en\/"},{"label":"Non classifi\u00e9(e)","link":"https:\/\/visionsoft.tech\/en\/category\/non-classifiee\/"},{"label":"Reschedule production when the ERP doesn\u2019t do it","link":"https:\/\/visionsoft.tech\/en\/replanifier-production-erp\/"}],"_links":{"self":[{"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/posts\/22717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/comments?post=22717"}],"version-history":[{"count":11,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/posts\/22717\/revisions"}],"predecessor-version":[{"id":23994,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/posts\/22717\/revisions\/23994"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/media\/22332"}],"wp:attachment":[{"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/media?parent=22717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/categories?post=22717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visionsoft.tech\/en\/wp-json\/wp\/v2\/tags?post=22717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}