Wiki source code of Management Review Pack
Last modified by Lee Pedley on 2026/09/21 21:59
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{velocity}} | ||
| 2 | #set ($settingsDoc = $xwiki.getDocument('ISMS.Settings')) | ||
| 3 | #set ($settings = $settingsDoc.getObject('ISMS.Code.SettingsClass')) | ||
| 4 | #set ($riskLowMax = 4) | ||
| 5 | #set ($riskMediumMax = 9) | ||
| 6 | #set ($riskHighMax = 14) | ||
| 7 | #set ($riskAppetite = 15) | ||
| 8 | #set ($reviewHorizon = 30) | ||
| 9 | #set ($evidenceHorizon = 30) | ||
| 10 | #set ($documentHorizon = 30) | ||
| 11 | #if ($settings) | ||
| 12 | #if ($settings.getProperty('riskLowMax').getValue()) #set ($riskLowMax = $settings.getProperty('riskLowMax').getValue()) #end | ||
| 13 | #if ($settings.getProperty('riskMediumMax').getValue()) #set ($riskMediumMax = $settings.getProperty('riskMediumMax').getValue()) #end | ||
| 14 | #if ($settings.getProperty('riskHighMax').getValue()) #set ($riskHighMax = $settings.getProperty('riskHighMax').getValue()) #end | ||
| 15 | #if ($settings.getProperty('riskAppetiteThreshold').getValue()) #set ($riskAppetite = $settings.getProperty('riskAppetiteThreshold').getValue()) #end | ||
| 16 | #if ($settings.getProperty('reviewHorizonDays').getValue()) #set ($reviewHorizon = $settings.getProperty('reviewHorizonDays').getValue()) #end | ||
| 17 | #if ($settings.getProperty('evidenceHorizonDays').getValue()) #set ($evidenceHorizon = $settings.getProperty('evidenceHorizonDays').getValue()) #end | ||
| 18 | #if ($settings.getProperty('documentHorizonDays').getValue()) #set ($documentHorizon = $settings.getProperty('documentHorizonDays').getValue()) #end | ||
| 19 | #end | ||
| 20 | #set($riskDocs=$services.query.xwql("from doc.object('Risks.Code.RisksClass') as obj").setLimit(2000).execute()) | ||
| 21 | #set($auditDocs=$services.query.xwql("from doc.object('Audits.Code.AuditsClass') as obj").setLimit(2000).execute()) | ||
| 22 | #set($findingDocs=$services.query.xwql("from doc.object('Findings.Code.FindingsClass') as obj").setLimit(2000).execute()) | ||
| 23 | #set($actionDocs=$services.query.xwql("from doc.object('Corrective Actions.Code.Corrective ActionsClass') as obj").setLimit(2000).execute()) | ||
| 24 | #set($treatmentDocs=$services.query.xwql("from doc.object('Risk Treatments.Code.Risk TreatmentsClass') as obj").setLimit(2000).execute()) | ||
| 25 | #set($openRisks=0)#set($above=0)#foreach($r in $riskDocs)#set($d=$xwiki.getDocument($r))#set($o=$d.getObject('Risks.Code.RisksClass'))#if($o && $o.getProperty('status').getValue()!='Closed')#set($openRisks=$openRisks+1)#if($o.getProperty('residualScore').getValue() && $o.getProperty('residualScore').getValue() >= $riskAppetite)#set($above=$above+1)#end#end#end | ||
| 26 | #set($openFindings=0)#foreach($r in $findingDocs)#set($d=$xwiki.getDocument($r))#set($o=$d.getObject('Findings.Code.FindingsClass'))#if($o && $o.getProperty('status').getValue()!='Closed')#set($openFindings=$openFindings+1)#end#end | ||
| 27 | #set($openActions=0)#foreach($r in $actionDocs)#set($d=$xwiki.getDocument($r))#set($o=$d.getObject('Corrective Actions.Code.Corrective ActionsClass'))#if($o && $o.getProperty('status').getValue()!='Verified' && $o.getProperty('status').getValue()!='Cancelled')#set($openActions=$openActions+1)#end#end | ||
| 28 | #set($openTreatments=0)#foreach($r in $treatmentDocs)#set($d=$xwiki.getDocument($r))#set($o=$d.getObject('Risk Treatments.Code.Risk TreatmentsClass'))#if($o && $o.getProperty('status').getValue()!='Complete' && $o.getProperty('status').getValue()!='Cancelled')#set($openTreatments=$openTreatments+1)#end#end | ||
| 29 | {{html wiki="true" clean="false"}} | ||
| 30 | <style>.mr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:15px 0}.mr-card{border:1px solid #d9dfe5;border-radius:7px;padding:12px}.mr-card strong{font-size:1.6em}.mr-section{margin:24px 0}@media print{.noprint{display:none!important}}</style> | ||
| 31 | <div class="box infomessage"><strong>Management review snapshot</strong><br/>Use this as an agenda/evidence aid. Record the meeting, decisions, actions and approvals in your controlled document/record process.</div><p class="noprint"><button class="btn btn-default" onclick="window.print();return false">Print / Save as PDF</button> <a class="btn btn-default" href="$xwiki.getURL('ISMS.Dashboard','view')">Dashboard</a></p> | ||
| 32 | <div class="mr-grid"><div class="mr-card"><strong>$openRisks</strong><br/>Open risks</div><div class="mr-card"><strong>$above</strong><br/>Residual risks >= appetite threshold</div><div class="mr-card"><strong>$openTreatments</strong><br/>Open treatments</div><div class="mr-card"><strong>$auditDocs.size()</strong><br/>Audits recorded</div><div class="mr-card"><strong>$openFindings</strong><br/>Open findings</div><div class="mr-card"><strong>$openActions</strong><br/>Open corrective actions</div></div> | ||
| 33 | <div class="mr-section"><h2>Review inputs</h2><ul><li>Status of actions from previous management reviews.</li><li>Changes in internal/external issues, interested parties and information-security requirements.</li><li>Performance and trends: nonconformities/corrective actions, monitoring/measurement, audit results and objectives.</li><li>Feedback from interested parties.</li><li>Risk assessment results and status of risk treatment plans.</li><li>Opportunities for continual improvement.</li></ul></div> | ||
| 34 | <div class="mr-section"><h2>Useful evidence links</h2><p><a href="$xwiki.getURL('ISMS.RiskReport','view')">Risk Report</a> | <a href="$xwiki.getURL('ISMS.SoAReport','view')">Statement of Applicability Report</a> | <a href="$xwiki.getURL('ISMS.DataQuality','view')">Data Quality</a> | <a href="$xwiki.getURL('Audits.WebHome','view')">Audits</a> | <a href="$xwiki.getURL('Corrective Actions.WebHome','view')">Corrective Actions</a></p></div> | ||
| 35 | <div class="mr-section"><h2>Decisions and outputs</h2><p>Capture decisions related to continual improvement opportunities and changes needed to the ISMS, including resources, owners and target dates. Store the approved minutes as a controlled record/evidence item.</p></div> | ||
| 36 | {{/html}} | ||
| 37 | {{/velocity}} |