{% extends "base.html" %} {% import '_ui.html' as ui %} {% block title %}Technician to-do - PXE Manager{% endblock %} {# Technician to-do: the CMMC playbook steps the server cannot do itself. Five lists; the ServiceNow tick list is the first. One failed wipe can be in three of them (tick, destroy, cloud). COD recorded, Mark uploaded and Resolved are compliance records: each asks to confirm, is audited, and can be undone from the same list for 24 hours. #} {% block extra_head %} {% endblock %} {% macro undo_form(kind, key, label) %}
{% endmacro %} {% macro attest(kind, key, label, confirm_text) %}
{% endmacro %} {% block content %} {% call ui.head('Technician to-do', 'Operate', 'The steps the server cannot do for you (' ~ site ~ '). One failed wipe can appear in up to three lists.') %} {{ ui.chip(total ~ ' open', 'neutral' if total else 'ok') }} {% endcall %}
{# ---- 1. ServiceNow ---- #}

ServiceNow ticks

Tick each asset's Onsite Bin Management RITM (ENT-045 / ENT-159).
{% for d in (7, 30, 90, 366) %}{{ 'Year' if d == 366 else d ~ ' days' }}{% endfor %} Show ticked
{% for it in sn_items %}
{{ it.when.strftime('%d %b') }} {{ it.serial or '-' }} {{ it.model or it.file }} {{ ui.chip('Tick: Blancco Wipe failed', 'fail') if it.failed else ui.chip('Tick: Wiped', 'ok') }}
{% if it.failed %}
{{ it.note }}
Tick "Blancco Wipe failed" and paste this note into the RITM. The drive is also under Drives to destroy.
{% else %}
Open the RITM for {{ it.serial }}, tick "Wiped", then press Done.
{% endif %}
{% if it.serial %}{% endif %} Open report {% if it.cloud == 'failed' %}{{ ui.chip('Not in Blancco cloud', 'err') }}{% endif %}
{% if it.done %} Ticked {{ it.done | local_dt }}
{% else %}
{% endif %}
{% else %}
Nothing to tick in the last {{ days }} days.
{% endfor %} {# ---- 2. Drives to destroy ---- #}

Drives to destroy

Failed wipes in the last 12 months without a recorded Certificate of Destruction (ENT-158 / ENT-159).
{% for it in todo.failed %}
{{ it.when.strftime('%d %b') }} {{ it.serial or '-' }} {{ it.model or it.file }} {{ ui.chip('Drive to destroy', 'fail') }}
{{ it.note }}
Remove the drive, destroy it per site procedure, record the Certificate of Destruction on the RITM, then mark it. Open report
{{ attest('destroyed', it.key, 'COD recorded', 'Record that the drive in ' ~ (it.serial or it.file) ~ ' was destroyed and its Certificate of Destruction is on the RITM? This is logged in the audit log.') }}
{% else %}
No failed wipe waiting for destruction.
{% endfor %} {% for r in recent.destroyed %}
Marked{{ r.label }}COD recorded {{ r.ts | local_dt }}
{{ undo_form('destroyed', r.key, 'COD recorded for ' ~ r.label) }}
{% endfor %} {# ---- 3. Evidence packs ---- #}

Evidence packs to upload

Built on the 1st of each month. Upload to the site's ENT-056 / ENT-158 folders in Box, then mark.
{% for p in todo.evidence %}
{{ p.month | month_label }}{{ p.file }}
Download {{ attest('evidence_uploaded', p.month, 'Mark uploaded', 'Record that ' ~ p.file ~ ' is uploaded to Box? This is logged in the audit log.') }}
{% else %}
No pack waiting. The next one is built on the 1st.
{% endfor %} {% for r in recent.evidence_uploaded %}
{{ r.key | month_label }}Evidence packUploaded {{ r.ts | local_dt }}
{{ undo_form('evidence_uploaded', r.key, 'evidence pack ' ~ r.key ~ ' uploaded') }}
{% endfor %} {# ---- 4. Not in the cloud ---- #}

Not in Blancco cloud

Blancco reported the upload failed. Upload the XML in the Blancco Management Portal, then mark (ENT-056).
{% for it in todo.not_in_cloud %}
{{ it.when.strftime('%d %b') }}{{ it.serial or '-' }}{{ it.model or it.file }}{{ ui.chip('Upload failed', 'err') }}
Download XML {{ attest('cloud_resolved', it.key, 'Resolved', 'Record that the report for ' ~ (it.serial or it.file) ~ ' is uploaded to the Blancco Management Portal? This is logged in the audit log.') }}
{% else %}
Every report with a known upload status reached the cloud.
{% endfor %} {% for r in recent.cloud_resolved %}
Marked{{ r.label }}Resolved {{ r.ts | local_dt }}
{{ undo_form('cloud_resolved', r.key, 'cloud upload for ' ~ r.label) }}
{% endfor %} {# ---- 5. Hardware gaps ---- #}

Hardware gaps

Models WinPE has seen here without a Win11 driver pack or a BIOS entry. Hardware coverage shows every model.
{% for r in hardware %} {% set what = [] %} {% if r.missing %}{% set _ = what.append('Driver pack: ' ~ (r.missing | join(', '))) %}{% endif %} {% if r.bios.status in ('none', 'file-missing') %}{% set _ = what.append('BIOS: ' ~ ('no manifest entry' if r.bios.status == 'none' else r.bios.file ~ ' not on server')) %}{% endif %}
{{ r.last_seen | short_date }} {{ r.model }} {% if r.missing %}{{ ui.chip('No driver pack' if r.missing | length > 1 else 'No pack: ' ~ (r.missing[0] | replace('gea-', '')), 'err') }}{% endif %} {% if r.bios.status == 'none' %}{{ ui.chip('No BIOS entry', 'warn') }}{% elif r.bios.status == 'file-missing' %}{{ ui.chip('BIOS file missing', 'err') }}{% endif %}
Model (WMI)
{{ r.model }}
System SKU
{{ r.skus | join(', ') or '-' }}
BIOS seen
{{ r.last_bios_version or '-' }}
Missing
{{ what | join('; ') }}
Serials
{{ r.serials | join(', ') or '-' }}
Find Dell pack {% call ui.more(r.model) %}
{% endcall %}
{% else %}
Every model seen has a Win11 driver pack and a BIOS entry.
{% endfor %}
What the attestation buttons record

COD recorded, Mark uploaded and Resolved are compliance records (CMMC ENT-045, ENT-056, ENT-158, ENT-159). Each asks you to confirm, is written to the audit log with your IP and the time, and can be undone from this page for 24 hours.

{% endblock %}