{"id":19217,"date":"2026-07-05T16:54:56","date_gmt":"2026-07-05T14:54:56","guid":{"rendered":"https:\/\/www.grip-facility.com\/contract-management-scan\/"},"modified":"2026-07-05T17:11:47","modified_gmt":"2026-07-05T15:11:47","slug":"contract-management-scan","status":"publish","type":"page","link":"https:\/\/www.grip-facility.com\/en\/contract-management-scan\/","title":{"rendered":"Contract Management Scan | GRIP"},"content":{"rendered":"\n<div id=\"cm-scan-root\" style=\"font-family:'Poppins',sans-serif;background:#F1F5F9;min-height:60vh;padding:40px 0;\">\n<style>\n:root{--gb:#006BFF;--go:#FF4B2A;--gr:#E0341B;--gd:#0F172A;--gg:#475569;--gl:#F1F5F9;--gn:#10B981;--ga:#F59E0B;--bd:#E2E8F0}\n#cm-scan-root,#cm-scan-root *{box-sizing:border-box;line-height:1.6}\n.cms-container{max-width:880px;margin:0 auto;padding:0 20px}\n.cms-card{background:#fff;border-radius:12px;padding:28px 32px;margin-bottom:24px;box-shadow:0 2px 8px rgba(15,23,42,0.06)}\n.cms-header{background:linear-gradient(135deg,var(--gb) 0%,#0050cc 100%);color:#fff}\n.cms-header h1{font-size:clamp(1.5rem,3vw,2rem);font-weight:700;margin-bottom:8px}\n.cms-header p{font-size:15px;opacity:.95}\n.cms-brand{font-size:12px;opacity:.85;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px;font-weight:600}\n.cms-h2{font-size:18px;font-weight:700;color:var(--gd);margin-bottom:16px}\n.cms-field{margin-bottom:14px}\n.cms-field label{display:block;font-size:12px;font-weight:700;color:var(--gd);margin-bottom:5px;text-transform:uppercase;letter-spacing:.5px}\n.cms-field input,.cms-field select{width:100%;padding:11px 14px;border:1px solid var(--bd);border-radius:8px;font-family:inherit;font-size:14px;color:var(--gd);background:#fff;transition:border-color .15s}\n.cms-field input:focus,.cms-field select:focus{outline:none;border-color:var(--gb);box-shadow:0 0 0 3px rgba(0,107,255,.1)}\n.cms-fields-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n@media(max-width:560px){.cms-fields-row{grid-template-columns:1fr}}\n.cms-pillar{margin-bottom:28px;padding-top:8px;border-top:1px solid var(--bd)}\n.cms-pillar:first-of-type{border-top:0;padding-top:0}\n.cms-ph{display:flex;align-items:center;gap:12px;margin-bottom:4px;margin-top:12px}\n.cms-pnum{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--gb);color:#fff;font-weight:700;font-size:14px;flex-shrink:0}\n.cms-ptitle{font-size:16px;font-weight:700;color:var(--gd)}\n.cms-pmeta{font-size:13px;color:var(--gg);margin-bottom:14px;margin-left:46px}\n.cms-q{padding:14px 0;border-bottom:1px dashed var(--bd)}\n.cms-q:last-child{border-bottom:0}\n.cms-qtext{font-size:14px;font-weight:500;color:var(--gd);margin-bottom:9px}\n.cms-opts{display:flex;gap:8px;flex-wrap:wrap}\n.cms-opts label{flex:1;min-width:80px;padding:9px 12px;border:1px solid var(--bd);border-radius:8px;text-align:center;cursor:pointer;font-size:13px;font-weight:500;color:var(--gg);background:#fff;transition:all .15s;user-select:none}\n.cms-opts label:hover{border-color:var(--gb);color:var(--gb)}\n.cms-opts label.sel{background:var(--gb);color:#fff;border-color:var(--gb)}\n.cms-acts{display:flex;gap:12px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}\n.cms-btn{padding:11px 22px;border-radius:8px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;border:0;transition:transform .1s,box-shadow .15s}\n.cms-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,23,42,.12)}\n.cms-btn-primary{background:var(--gb);color:#fff}\n.cms-btn-secondary{background:#fff;color:var(--gb);border:1px solid var(--gb)}\n.cms-btn-orange{background:var(--go);color:#fff}\n.cms-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}\n#cms-results{display:none}\n.cms-score-hero{text-align:center;padding:28px 0}\n.cms-score-num{font-size:64px;font-weight:700;line-height:1}\n.cms-score-lbl{font-size:13px;color:var(--gg);text-transform:uppercase;letter-spacing:1px;margin-top:6px}\n.cms-verdict{font-size:20px;font-weight:700;margin-top:10px}\n.cms-v-low{color:var(--gr)}\n.cms-v-mid{color:var(--ga)}\n.cms-v-high{color:var(--gn)}\n.cms-pscores{display:flex;flex-direction:column;gap:10px;margin-top:20px}\n.cms-prow{display:flex;align-items:center;gap:14px;padding:10px 14px;background:var(--gl);border-radius:8px}\n.cms-prow-lbl{flex:1;font-weight:500;font-size:13px}\n.cms-prow-bar{flex:2;height:10px;background:var(--bd);border-radius:5px;overflow:hidden}\n.cms-prow-fill{height:100%;background:var(--gb);transition:width .6s ease}\n.cms-prow-val{font-weight:700;min-width:46px;text-align:right;font-size:13px}\n.cms-recs{margin-top:20px;padding:18px 20px;background:var(--gl);border-radius:8px;border-left:4px solid var(--go)}\n.cms-recs h3{margin-top:0;color:var(--go);font-size:15px;margin-bottom:10px}\n.cms-recs ul{list-style:none;padding-left:0;margin:0}\n.cms-recs li{padding:5px 0 5px 18px;position:relative;font-size:14px;color:var(--gd)}\n.cms-recs li::before{content:\"\\2192\";position:absolute;left:0;color:var(--go);font-weight:700}\n.cms-cta{background:linear-gradient(135deg,var(--gd) 0%,#1e293b 100%);color:#fff;padding:28px;border-radius:12px;margin-top:20px;text-align:center}\n.cms-cta h2{color:#fff;margin-bottom:10px;font-size:18px}\n.cms-cta p{color:rgba(255,255,255,.85);margin-bottom:16px;font-size:14px}\n.cms-lead-block{margin-top:20px;padding:20px;background:#F8FAFC;border-radius:10px;border:1px solid var(--bd)}\n.cms-lead-block h3{font-size:14px;font-weight:700;color:var(--gd);margin-bottom:8px}\n.cms-lead-block p{font-size:13px;color:var(--gg);margin-bottom:12px}\n.cms-lead-row{display:flex;gap:10px;align-items:flex-start}\n.cms-lead-row input{flex:1;padding:10px 14px;border:1px solid var(--bd);border-radius:8px;font-family:inherit;font-size:14px}\n.cms-lead-row input:focus{outline:none;border-color:var(--gb)}\n.cms-lead-status{font-size:13px;margin-top:8px;font-weight:500}\n.cms-back-link{text-align:center;margin-top:12px;font-size:13px;color:var(--gg)}\n.cms-back-link a{color:var(--gb);text-decoration:underline}\n<\/style>\n\n<div class=\"cms-container\">\n\n  <header class=\"cms-card cms-header\">\n    <div class=\"cms-brand\">GRIP &middot; Contract Management Scan<\/div>\n    <h1>How advanced is your organization in contract management?<\/h1>\n    <p>Take the contract management scan: five pillars, sixteen questions in five minutes. Discover the risks and improvement opportunities for your organization. Based on recognized procurement and contract management methodologies.<\/p>\n  <\/header>\n\n  <section class=\"cms-card\" id=\"cms-intro-card\">\n    <h2 class=\"cms-h2\">Instant insight for you<\/h2>\n    <ul style=\"list-style:none;padding:0;margin:0 0 12px 0;\">\n      <li style=\"padding:7px 0 7px 24px;position:relative;color:var(--gg);font-size:14px;\"><span style=\"position:absolute;left:0;color:var(--gb);font-weight:700;\">&#10003;<\/span>Concrete improvement actions linked to the 9 approach steps for setting up professional contract management<\/li>\n      <li style=\"padding:7px 0 7px 24px;position:relative;color:var(--gg);font-size:14px;\"><span style=\"position:absolute;left:0;color:var(--gb);font-weight:700;\">&#10003;<\/span>A total score with a breakdown per pillar<\/li>\n      <li style=\"padding:7px 0 7px 24px;position:relative;color:var(--gg);font-size:14px;\"><span style=\"position:absolute;left:0;color:var(--gb);font-weight:700;\">&#10003;<\/span>You receive the result directly by email<\/li>\n    <\/ul>\n    <p style=\"font-size:12px;color:var(--gg);margin:0;\">This scan is a high-level exploration. Not legal or compliance advice.<\/p>\n  <\/section>\n\n  <section class=\"cms-card\" id=\"cms-questions\">\n    <h2 class=\"cms-h2\">Your organization <span style=\"font-size:13px;font-weight:400;color:var(--gg);\">(optional)<\/span><\/h2>\n    <div class=\"cms-fields-row\">\n      <div class=\"cms-field\">\n        <label for=\"cms-org\">Organization<\/label>\n        <input id=\"cms-org\" type=\"text\" placeholder=\"e.g. Sample Healthcare Group\">\n      <\/div>\n      <div class=\"cms-field\">\n        <label for=\"cms-sector\">Sector<\/label>\n        <select id=\"cms-sector\">\n          <option value=\"\">&#8212; select &#8212;<\/option>\n          <option value=\"Healthcare\">Healthcare<\/option>\n          <option value=\"Education\">Education<\/option>\n          <option value=\"Government\">Government<\/option>\n          <option value=\"Real Estate\">Real Estate<\/option>\n          <option value=\"Other\">Other<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n    <div class=\"cms-field\" style=\"max-width:50%\">\n      <label for=\"cms-size\">Size<\/label>\n      <select id=\"cms-size\">\n        <option value=\"\">&#8212; select &#8212;<\/option>\n        <option value=\"Small (&lt;50 employees)\">Small (&lt;50 employees)<\/option>\n        <option value=\"Medium (50-249)\">Medium (50-249)<\/option>\n        <option value=\"Large (250+)\">Large (250+)<\/option>\n      <\/select>\n    <\/div>\n\n    <div id=\"cms-pillars\"><\/div>\n\n    <div class=\"cms-acts\">\n      <button class=\"cms-btn cms-btn-secondary\" onclick=\"cmsReset()\">Clear<\/button>\n      <button class=\"cms-btn cms-btn-primary\" id=\"cms-submit-btn\" onclick=\"cmsShowResults()\">View result<\/button>\n    <\/div>\n  <\/section>\n\n  <section class=\"cms-card\" id=\"cms-results\">\n    <h2 class=\"cms-h2\">Your result<\/h2>\n    <div class=\"cms-score-hero\">\n      <div class=\"cms-score-num\" id=\"cms-score-num\" style=\"color:var(--gb);\">0%<\/div>\n      <div class=\"cms-score-lbl\">Contract management maturity<\/div>\n      <div class=\"cms-verdict\" id=\"cms-verdict\">&#8212;<\/div>\n    <\/div>\n\n    <h3 style=\"font-size:15px;font-weight:700;color:var(--gb);margin:20px 0 4px 0;\">Scores per pillar<\/h3>\n    <div class=\"cms-pscores\" id=\"cms-pscores\"><\/div>\n\n    <div class=\"cms-recs\" id=\"cms-recs\">\n      <h3>Recommended steps<\/h3>\n      <ul id=\"cms-rec-list\"><\/ul>\n    <\/div>\n\n    <div class=\"cms-lead-block\" id=\"cms-lead-block\">\n      <h3>Receive the result by email<\/h3>\n      <p>Enter your email address and we will send you an overview of your score and the recommended steps.<\/p>\n      <div class=\"cms-lead-row\">\n        <input type=\"email\" id=\"cms-email\" placeholder=\"you@email.com\">\n        <button class=\"cms-btn cms-btn-primary\" onclick=\"cmsSubmitLead()\">Send<\/button>\n      <\/div>\n      <div aria-hidden=\"true\" style=\"position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;\"><label>Website<input type=\"text\" id=\"cms-website\" tabindex=\"-1\" autocomplete=\"off\"><\/label><\/div>\n      <label style=\"display:flex;gap:8px;align-items:flex-start;margin-top:12px;font-size:12px;color:var(--gg);font-weight:400;text-transform:none;letter-spacing:normal;cursor:pointer;\">\n        <input type=\"checkbox\" id=\"cms-consent\" style=\"width:auto;margin-top:2px;flex-shrink:0;\">\n        <span>Yes, send me my scan result by email. GRIP may contact me about this. See the <a href=\"\/en\/terms\/privacy-statement\/\" target=\"_blank\" rel=\"noopener\" style=\"color:var(--gb);text-decoration:underline;\">privacy statement<\/a>.<\/span>\n      <\/label>\n      <div class=\"cms-lead-status\" id=\"cms-lead-status\" style=\"display:none;\"><\/div>\n    <\/div>\n\n    <div class=\"cms-cta\" id=\"cms-cta-block\">\n      <h2>Ready to take the next step?<\/h2>\n      <p>Talk through your result in a no-obligation exploration session. We will look together at where you stand today and which step delivers the most impact first.<\/p>\n      <a class=\"cms-btn cms-btn-primary\" href=\"\/en\/schedule-demo\/\" style=\"text-decoration:none;\">Schedule an exploration session<\/a>\n      &nbsp;\n      <a class=\"cms-btn cms-btn-secondary\" href=\"\/en\/get-in-touch\/\" style=\"text-decoration:none;margin-top:8px;display:inline-block;background:rgba(255,255,255,0.15);color:#fff;border-color:rgba(255,255,255,.4);\">Get in touch<\/a>\n    <\/div>\n\n    <div class=\"cms-back-link\">\n      <a href=\"\/en\/approach\/\">&#8592; Back to our approach<\/a>\n    <\/div>\n\n    <div class=\"cms-acts\" style=\"margin-top:16px;\">\n      <button class=\"cms-btn cms-btn-secondary\" onclick=\"cmsReset()\">Start over<\/button>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n<script>\nvar CMS_PILLARS = [\n  {\n    id: 'administratie',\n    title: 'Contract administration',\n    meta: 'Pillar 1 \u00b7 Central overview and alerts',\n    questions: [\n      'Are all contracts stored in one central, searchable place (not scattered across mailboxes and spreadsheets)?',\n      'Are you automatically alerted about upcoming expiry dates, notice periods and indexation moments?',\n      'Are contract classifications (value, risk, term) documented and up to date?'\n    ]\n  },\n  {\n    id: 'organisatie',\n    title: 'Organization and ownership',\n    meta: 'Pillar 2 \u00b7 Foundation',\n    questions: [\n      'Does every contract in your organization have a named contract owner responsible for its full lifecycle?',\n      'Are the roles and responsibilities around contract management documented in writing and known to those involved?',\n      'Is contract management a standing agenda item at board or management meetings?'\n    ]\n  },\n  {\n    id: 'prestaties',\n    title: 'Performance management',\n    meta: 'Pillar 3 \u00b7 Measuring and adjusting',\n    questions: [\n      'Do you periodically measure whether suppliers meet the agreements in the contract (KPIs, SLAs)?',\n      'Do you structurally discuss supplier performance in periodic meetings based on measurable data?',\n      'Are the contractual performance indicators defined concretely and measurably before the contract is signed?'\n    ]\n  },\n  {\n    id: 'leveranciers',\n    title: 'Supplier management',\n    meta: 'Pillar 4 \u00b7 Portfolio and risk management',\n    questions: [\n      'Do you have an up-to-date overview of all suppliers with their contract status, risk classification and associated contract value?',\n      'Do you carry out a periodic supplier evaluation and record the outcomes in the file?',\n      'For critical suppliers, have you contractually defined what should happen in case of non-conformity or termination?'\n    ]\n  },\n  {\n    id: 'relaties',\n    title: 'Relationship management',\n    meta: 'Pillar 5 \u00b7 Collaboration and continuity',\n    questions: [\n      'Is there a fixed point of contact at the supplier and internally for every strategic contract?',\n      'Are changes to contracts (scope, price, term) formally recorded, and are both parties aware of the current version?',\n      'Is there a handover protocol so that contract knowledge is retained when staff change?',\n      'Do you have an up-to-date overview of all actions and obligations arising from contracts, with an owner and deadline?'\n    ]\n  }\n];\n\nvar CMS_ANSWERS = [\n  {value:'yes',label:'Yes',score:2},\n  {value:'partial',label:'Partially',score:1},\n  {value:'no',label:'No',score:0},\n  {value:'unknown',label:'Not sure',score:0}\n];\n\nvar CMS_STATE = {};\n\nvar CMS_RECS = {\n  organisatie: {\n    steps: ['Step 05: Contract ownership and organization', 'Step 01: Exploration session'],\n    text: 'Establish ownership and roles. Every contract needs an owner responsible for its full lifecycle.'\n  },\n  administratie: {\n    steps: ['Step 02: Collect contract data', 'Step 03: Quickscan and administration in order'],\n    text: 'Bring all contracts together in one central place and set up automatic alerts for expiry dates and notice periods.'\n  },\n  prestaties: {\n    steps: ['Step 08: Software implementation and performance management', 'Step 04: Risk inventory'],\n    text: 'Set KPIs and measure them periodically. Discuss supplier performance based on data, not on gut feeling.'\n  },\n  leveranciers: {\n    steps: ['Step 04: Risk inventory and contract classification', 'Step 03: Quickscan'],\n    text: 'Build a supplier register with risk classification. This way you know which suppliers need active management.'\n  },\n  relaties: {\n    steps: ['Step 05: Ownership', 'Step 09: Adoption and embedding'],\n    text: 'Ensure fixed points of contact and a handover protocol. Contract knowledge should not live only in people\u2019s heads.'\n  }\n};\n\nfunction cmsRenderPillars() {\n  var root = document.getElementById('cms-pillars');\n  root.innerHTML = '';\n  CMS_PILLARS.forEach(function(pillar, pi) {\n    var div = document.createElement('div');\n    div.className = 'cms-pillar';\n    var html = '<div class=\"cms-ph\"><span class=\"cms-pnum\">' + (pi+1) + '<\/span><span class=\"cms-ptitle\">' + pillar.title + '<\/span><\/div>';\n    html += '<div class=\"cms-pmeta\">' + pillar.meta + '<\/div>';\n    pillar.questions.forEach(function(q, qi) {\n      var qid = pillar.id + '-q' + qi;\n      html += '<div class=\"cms-q\"><div class=\"cms-qtext\">' + (qi+1) + '. ' + q + '<\/div><div class=\"cms-opts\" data-qid=\"' + qid + '\">';\n      CMS_ANSWERS.forEach(function(a) {\n        html += '<label data-value=\"' + a.value + '\" onclick=\"cmsSelect(\\x27' + qid + '\\x27,\\x27' + a.value + '\\x27,this)\">' + a.label + '<\/label>';\n      });\n      html += '<\/div><\/div>';\n    });\n    div.innerHTML = html;\n    root.appendChild(div);\n  });\n}\n\nfunction cmsSelect(qid, value, el) {\n  CMS_STATE[qid] = value;\n  var group = el.parentElement;\n  group.querySelectorAll('label').forEach(function(l){l.classList.remove('sel');});\n  el.classList.add('sel');\n  cmsUpdateBtn();\n}\n\nfunction cmsUpdateBtn() {\n  var total = CMS_PILLARS.reduce(function(s,p){return s+p.questions.length;},0);\n  var answered = Object.keys(CMS_STATE).length;\n  var btn = document.getElementById('cms-submit-btn');\n  btn.textContent = answered < total ? ('View result (' + answered + '\/' + total + ')') : 'View result';\n}\n\nfunction cmsCompute() {\n  var pillarScores = {};\n  var totalPts = 0, maxPts = 0;\n  CMS_PILLARS.forEach(function(pillar) {\n    var pts = 0, maxP = pillar.questions.length * 2;\n    pillar.questions.forEach(function(q,qi) {\n      var val = CMS_STATE[pillar.id+'-q'+qi];\n      var ans = CMS_ANSWERS.find(function(a){return a.value===val;});\n      if (ans) pts += ans.score;\n    });\n    pillarScores[pillar.id] = {title:pillar.title,points:pts,max:maxP,percent:Math.round((pts\/maxP)*100)};\n    totalPts += pts; maxPts += maxP;\n  });\n  return {pillars:pillarScores, totalPercent:Math.round((totalPts\/maxPts)*100)};\n}\n\nfunction cmsComputeRecommendations() {\n  var scores = cmsCompute();\n  var sorted = Object.entries(scores.pillars).sort(function(a,b){return a[1].percent - b[1].percent;});\n  var recs = [];\n  sorted.forEach(function(entry) {\n    if (recs.length >= 3) return;\n    var id = entry[0], p = entry[1];\n    if (p.percent < 80) {\n      var rec = CMS_RECS[id];\n      if (rec) { recs.push({title:p.title, text:rec.text, steps:rec.steps}); }\n    }\n  });\n  return recs;\n}\n\nfunction cmsShowResults() {\n  var total = CMS_PILLARS.reduce(function(s,p){return s+p.questions.length;},0);\n  if (Object.keys(CMS_STATE).length < total) {\n    var firstMissing = null;\n    CMS_PILLARS.forEach(function(pillar) {\n      pillar.questions.forEach(function(q, qi) {\n        var qid = pillar.id + '-q' + qi;\n        if (!firstMissing) {\n          if (!CMS_STATE[qid]) { firstMissing = qid; }\n        }\n      });\n    });\n    if (firstMissing) {\n      var grp = document.querySelector('.cms-opts[data-qid=\"' + firstMissing + '\"]');\n      var qEl = grp ? grp.closest('.cms-q') : null;\n      if (qEl) {\n        qEl.style.transition = 'background .3s';\n        qEl.style.background = '#FEF3C7';\n        qEl.scrollIntoView({behavior:'smooth', block:'center'});\n        setTimeout(function(){ qEl.style.background = ''; }, 1800);\n      }\n    }\n    return;\n  }\n  var scores = cmsCompute();\n  var pct = scores.totalPercent;\n\n  \/\/ Score number color\n  var numEl = document.getElementById('cms-score-num');\n  numEl.textContent = pct + '%';\n  numEl.style.color = pct < 40 ? '#E0341B' : (pct < 70 ? '#F59E0B' : '#10B981');\n\n  var verdictEl = document.getElementById('cms-verdict');\n  if (pct < 40) {\n    verdictEl.textContent = 'Ad hoc: the basics are not yet in place';\n    verdictEl.className = 'cms-verdict cms-v-low';\n  } else if (pct < 70) {\n    verdictEl.textContent = 'Structured: a solid foundation, targeted improvement possible';\n    verdictEl.className = 'cms-verdict cms-v-mid';\n  } else {\n    verdictEl.textContent = 'Optimized: professional contract management';\n    verdictEl.className = 'cms-verdict cms-v-high';\n  }\n\n  \/\/ Per-pillar bars\n  var proot = document.getElementById('cms-pscores');\n  proot.innerHTML = '';\n  Object.values(scores.pillars).forEach(function(p) {\n    var barColor = p.percent < 40 ? '#E0341B' : (p.percent < 70 ? '#F59E0B' : '#10B981');\n    var row = document.createElement('div');\n    row.className = 'cms-prow';\n    row.innerHTML = '<div class=\"cms-prow-lbl\">' + p.title + '<\/div>' +\n      '<div class=\"cms-prow-bar\"><div class=\"cms-prow-fill\" style=\"width:' + p.percent + '%;background:' + barColor + ';\"><\/div><\/div>' +\n      '<div class=\"cms-prow-val\" style=\"color:' + barColor + ';\">' + p.percent + '%<\/div>';\n    proot.appendChild(row);\n  });\n\n  \/\/ Recommendations\n  var recs = cmsComputeRecommendations();\n  var recList = document.getElementById('cms-rec-list');\n  recList.innerHTML = '';\n  recs.forEach(function(rec) {\n    var li = document.createElement('li');\n    li.innerHTML = '<strong>' + rec.title + ':<\/strong> ' + rec.text + ' <a href=\"\/en\/approach\/\" style=\"color:#006BFF;font-size:12px;text-decoration:underline;\">(' + rec.steps.join(', ') + ')<\/a>';\n    recList.appendChild(li);\n  });\n  if (recs.length === 0) {\n    recList.innerHTML = '<li>You are in good shape. Now focus on demonstrability and internal audits to safeguard this level.<\/li>';\n  }\n\n  document.getElementById('cms-results').style.display = 'block';\n  document.getElementById('cms-results').scrollIntoView({behavior:'smooth'});\n}\n\nfunction cmsSubmitLead() {\n  var email = document.getElementById('cms-email').value.trim();\n  var statusEl = document.getElementById('cms-lead-status');\n  if (!email || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n    statusEl.textContent = 'Enter a valid email address.';\n    statusEl.style.color = '#E0341B';\n    statusEl.style.display = 'block';\n    return;\n  }\n  if (!document.getElementById('cms-consent').checked) {\n    statusEl.textContent = 'Please confirm we may email you the result.';\n    statusEl.style.color = '#E0341B';\n    statusEl.style.display = 'block';\n    return;\n  }\n  var scores = cmsCompute();\n  var pct = scores.totalPercent;\n  var verdictLabel = pct < 40 ? 'Ad hoc' : (pct < 70 ? 'Structured' : 'Optimized');\n  var pillarsArr = Object.entries(scores.pillars).map(function(e){\n    return {id:e[0],title:e[1].title,percent:e[1].percent};\n  });\n\n  var btn = document.querySelector('#cms-lead-block button');\n  btn.disabled = true;\n  btn.textContent = 'Sending...';\n  statusEl.style.display = 'none';\n\n  fetch('\/wp-json\/grip\/v1\/cm-scan', {\n    method: 'POST',\n    headers: {'Content-Type': 'application\/json'},\n    body: JSON.stringify({\n      email: email,\n      org: document.getElementById('cms-org').value,\n      sector: document.getElementById('cms-sector').value,\n      size: document.getElementById('cms-size').value,\n      score: pct,\n      verdict: verdictLabel,\n      pillars: pillarsArr,\n      recommendations: cmsComputeRecommendations(),\n      consent: true,\n      website: document.getElementById('cms-website').value,\n      lang: 'en'\n    })\n  })\n  .then(function(r){return r.json();})\n  .then(function(data){\n    if (data.ok) {\n      statusEl.textContent = 'Thank you! You will receive the result at ' + email;\n      statusEl.style.color = '#10B981';\n    } else {\n      statusEl.textContent = 'Something went wrong. Please try again or email us at info@grip-facility.com.';\n      statusEl.style.color = '#E0341B';\n    }\n    statusEl.style.display = 'block';\n    btn.disabled = false;\n    btn.textContent = 'Send';\n  })\n  .catch(function(){\n    statusEl.textContent = 'Could not connect. Please try again.';\n    statusEl.style.color = '#E0341B';\n    statusEl.style.display = 'block';\n    btn.disabled = false;\n    btn.textContent = 'Send';\n  });\n}\n\nfunction cmsReset() {\n  CMS_STATE = {};\n  document.querySelectorAll('.cms-opts label').forEach(function(l){l.classList.remove('sel');});\n  document.getElementById('cms-results').style.display = 'none';\n  document.getElementById('cms-email').value = '';\n  document.getElementById('cms-lead-status').style.display = 'none';\n  document.getElementById('cms-org').value = '';\n  document.getElementById('cms-sector').value = '';\n  document.getElementById('cms-size').value = '';\n  var consentEl = document.getElementById('cms-consent'); if (consentEl) consentEl.checked = false;\n  var hpEl = document.getElementById('cms-website'); if (hpEl) hpEl.value = '';\n  cmsUpdateBtn();\n  window.scrollTo({top:0,behavior:'smooth'});\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  cmsRenderPillars();\n  cmsUpdateBtn();\n});\n<\/script>\n<\/div>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>GRIP &middot; Contract Management Scan How advanced is your organization in contract management? Take the contract management scan: five pillars, sixteen questions in five minutes. Discover the risks and improvement opportunities for your organization. Based on recognized procurement and contract management methodologies. Instant insight for you &#10003;Concrete improvement actions linked to the 9 approach steps [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-19217","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.grip-facility.com\/en\/wp-json\/wp\/v2\/pages\/19217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.grip-facility.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.grip-facility.com\/en\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/www.grip-facility.com\/en\/wp-json\/wp\/v2\/comments?post=19217"}],"version-history":[{"count":0,"href":"https:\/\/www.grip-facility.com\/en\/wp-json\/wp\/v2\/pages\/19217\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.grip-facility.com\/en\/wp-json\/wp\/v2\/media?parent=19217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}