Wiki source code of ISMS Data Quality
Last modified by Lee Pedley on 2026/09/21 21:59
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | {{velocity}} |
| 2 | #set($issues=[]) | ||
| 3 | #set($riskDocs=$services.query.xwql("from doc.object('Risks.Code.RisksClass') as obj").setLimit(2000).execute()) | ||
| 4 | #foreach($ref in $riskDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Risks.Code.RisksClass'))#if($o)#if(!$o.getProperty('owner').getValue())#set($x=$issues.add(['Risk',$ref,$d.displayTitle,'Missing owner']))#end#if(!$o.getProperty('likelihood').getValue() || !$o.getProperty('impact').getValue())#set($x=$issues.add(['Risk',$ref,$d.displayTitle,'Inherent assessment incomplete']))#end#if(!$o.getProperty('treatmentDecision').getValue())#set($x=$issues.add(['Risk',$ref,$d.displayTitle,'Treatment decision missing']))#end#end#end | ||
| 5 | #set($controlDocs=$services.query.xwql("from doc.object('Controls and SoA.Code.Controls and SoAClass') as obj").setLimit(2000).execute()) | ||
| 6 | #foreach($ref in $controlDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Controls and SoA.Code.Controls and SoAClass'))#if($o)#if(!$o.getProperty('controlReference').getValue())#set($x=$issues.add(['Control',$ref,$d.displayTitle,'Control reference missing']))#end#if(!$o.getProperty('applicable').getValue())#set($x=$issues.add(['Control',$ref,$d.displayTitle,'Applicability not decided']))#end#if($o.getProperty('applicable').getValue()=='No' && !$o.getProperty('applicabilityJustification').getValue())#set($x=$issues.add(['Control',$ref,$d.displayTitle,'Not-applicable justification missing']))#end#if(!$o.getProperty('implementationStatus').getValue())#set($x=$issues.add(['Control',$ref,$d.displayTitle,'Implementation status missing']))#end#end#end | ||
| 7 | #set($treatmentDocs=$services.query.xwql("from doc.object('Risk Treatments.Code.Risk TreatmentsClass') as obj").setLimit(2000).execute()) | ||
| 8 | #foreach($ref in $treatmentDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Risk Treatments.Code.Risk TreatmentsClass'))#if($o)#if(!$o.getProperty('relatedRisk').getValue())#set($x=$issues.add(['Treatment',$ref,$d.displayTitle,'Related risk missing']))#end#if(!$o.getProperty('owner').getValue())#set($x=$issues.add(['Treatment',$ref,$d.displayTitle,'Owner missing']))#end#end#end | ||
| 9 | #set($evidenceDocs=$services.query.xwql("from doc.object('Evidence.Code.EvidenceClass') as obj").setLimit(2000).execute()) | ||
| 10 | #foreach($ref in $evidenceDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Evidence.Code.EvidenceClass'))#if($o)#if(!$o.getProperty('owner').getValue())#set($x=$issues.add(['Evidence',$ref,$d.displayTitle,'Owner missing']))#end#if(!$o.getProperty('relatedControls').getValue() && !$o.getProperty('relatedRisks').getValue())#set($x=$issues.add(['Evidence',$ref,$d.displayTitle,'Not linked to a control or risk']))#end#end#end | ||
| 11 | #set($auditDocs=$services.query.xwql("from doc.object('Audits.Code.AuditsClass') as obj").setLimit(2000).execute()) | ||
| 12 | #foreach($ref in $auditDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Audits.Code.AuditsClass'))#if($o)#if(!$o.getProperty('leadAuditor').getValue())#set($x=$issues.add(['Audit',$ref,$d.displayTitle,'Lead auditor missing']))#end#if(!$o.getProperty('scope').getValue())#set($x=$issues.add(['Audit',$ref,$d.displayTitle,'Scope missing']))#end#end#end | ||
| 13 | #set($findingDocs=$services.query.xwql("from doc.object('Findings.Code.FindingsClass') as obj").setLimit(2000).execute()) | ||
| 14 | #foreach($ref in $findingDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Findings.Code.FindingsClass'))#if($o)#if(!$o.getProperty('relatedAudit').getValue())#set($x=$issues.add(['Finding',$ref,$d.displayTitle,'Related audit missing']))#end#if(!$o.getProperty('owner').getValue())#set($x=$issues.add(['Finding',$ref,$d.displayTitle,'Owner missing']))#end#end#end | ||
| 15 | #set($actionDocs=$services.query.xwql("from doc.object('Corrective Actions.Code.Corrective ActionsClass') as obj").setLimit(2000).execute()) | ||
| 16 | #foreach($ref in $actionDocs)#set($d=$xwiki.getDocument($ref))#set($o=$d.getObject('Corrective Actions.Code.Corrective ActionsClass'))#if($o)#if(!$o.getProperty('relatedFinding').getValue())#set($x=$issues.add(['Corrective Action',$ref,$d.displayTitle,'Related finding missing']))#end#if(!$o.getProperty('owner').getValue())#set($x=$issues.add(['Corrective Action',$ref,$d.displayTitle,'Owner missing']))#end#end#end | ||
| 17 | {{html wiki="true" clean="false"}} | ||
| 18 | <style>.dq-table{border-collapse:collapse;width:100%}.dq-table th,.dq-table td{border-bottom:1px solid #dfe4e8;padding:8px;text-align:left}</style> | ||
| 19 | <div class="box infomessage"><strong>Data quality check</strong><br/>This page checks practical completeness of core ISMS records. It is a management aid, not a certification assessment.</div> | ||
| 20 | #if($issues.isEmpty())<div class="box successmessage">No configured data-quality issues were detected.</div>#else<p><strong>$issues.size()</strong> issue(s) detected.</p><table class="dq-table"><thead><tr><th>Register</th><th>Record</th><th>Issue</th></tr></thead><tbody>#foreach($i in $issues)<tr><td>$escapetool.xml($i.get(0))</td><td><a href="$xwiki.getURL($i.get(1),'view')">$escapetool.xml($i.get(2))</a></td><td>$escapetool.xml($i.get(3))</td></tr>#end</tbody></table>#end | ||
| 21 | {{/html}} | ||
| 22 | {{/velocity}} |