You have a Confluence space full of SOPs. Three hundred pages, give or take. Someone wrote them for an audit two years ago. The person who wrote them left the company. The tools referenced in the procedures have been replaced. The escalation contacts are wrong. The phone numbers go to a desk that no longer exists.
At 2:47 AM, an analyst gets an alert that looks like ransomware pre-staging on a file server. They open the wiki. They search for "ransomware." They find a 38-page document titled "Ransomware Response Plan v2.1 DRAFT." It was last modified eighteen months ago by someone named "Offboarded User." The first three pages are scope definitions. The fourth page references a tool the team decommissioned in Q3.
The analyst closes the wiki and does what every analyst does when the procedure is useless: they improvise. Maybe they improvise well. Maybe they do not. Either way, the SOP did not help. It existed only as an artifact -- proof that a document was created, not proof that a process works.
This is the default state of SOPs in most security organizations. They are written to satisfy an external requirement, not to help the person doing the work. And the gap between those two purposes is where operational failures live.
Closing that gap requires more than better writing. It requires changing who writes procedures, how they get tested, and what happens when they break.
Why Most SOPs Fail
The Wiki Graveyard
Every security team I have worked with in the past twenty years has a documentation graveyard. The platform varies -- Confluence, SharePoint, Notion, a shared drive, a GitHub repo nobody clones. The pattern does not vary. Someone created a space. Pages were added during a compliance push or after a bad incident. The initial burst of energy produced fifty to a hundred documents. Then the energy stopped. The documents stayed.
New pages got added without updating old ones. Nobody deleted anything because deletion feels like losing work. Search results return six documents for "phishing" and you have to read all six to figure out which one is current. Three of them contradict each other on the escalation path. The newest one is fourteen months old.
The wiki graveyard is not a documentation problem. It is an ownership problem. No single person is responsible for any given procedure being correct right now. When ownership is diffuse, maintenance does not happen. And unmaintained documentation is worse than no documentation, because it gives the illusion of preparation.
Written by the Wrong People
The second failure mode is authorship. Most SOPs are written by managers, compliance analysts, or consultants -- people whose job is producing documents, not executing the procedures those documents describe. The person writing the procedure has different incentives than the person who will use it.
A compliance analyst needs a document that maps to a control framework. An operations manager needs a document that covers every edge case. A consultant needs a document that demonstrates thoroughness to justify the engagement.
The analyst who will use the procedure at 3 AM needs a short, clear sequence of steps: what to do right now, what to check, when to escalate, and who to call. They need the minimum viable procedure, not the comprehensive reference.
When the author and the user have different needs, the document serves the author. Always. This is why you end up with 40-page ransomware response plans that nobody reads.
The Perfect Document Trap
Some teams recognize the wiki graveyard problem and respond by investing heavily in documentation quality. They hire a technical writer. They build templates. They spend months crafting a comprehensive procedure with flowcharts, screenshots, and appendices.
Six months later, the tool in the screenshots has been upgraded. The flowchart references a team that was reorganized. The appendix with contact information is out of date. And nobody wants to touch the document because it took so long to create that editing it feels like defacing a monument.
A rough, correct procedure tested last month is more valuable than a beautiful, comprehensive procedure tested last year. Documentation quality matters, but currency matters more.
Compliance-Driven vs Operationally-Driven
Compliance requirements and operational needs pull in opposite directions. An auditor wants to see that a procedure exists, that it was approved, that it covers certain control objectives, and that there is evidence of review. An analyst wants to know what to type into the console when something is on fire.
These are not the same document. Trying to make them the same document is how you get procedures that satisfy the auditor at the expense of the operator. The auditor checks the box. The analyst ignores the document.
The fix: maintain two layers. The compliance layer is the control mapping, the approval record, the review evidence. The operational layer is the procedure itself -- the one-page checklist the analyst actually uses. Link them. Let the compliance layer reference the operational procedure. But do not let compliance requirements dictate the format of the operational document.
The Shelf Life Problem
SOPs decay. Every procedure depends on assumptions: the tools are configured this way, the network looks like this, this team owns this system, this person answers this phone number. Those assumptions change constantly.
A procedure that has not been tested in 90 days is suspect. A procedure that has not been tested in six months is unreliable. A procedure that has not been tested in a year is fiction.
Most organizations do not track when a procedure was last tested. They track when it was last reviewed -- meaning someone opened the document, skimmed it, and clicked "approved." That is not testing. Testing means someone attempted to execute the procedure, either in a tabletop exercise or during a real event, and verified that the steps produce the expected outcome.
The Structure That Works
The One-Page Rule
If a procedure does not fit on one page, it is not one procedure. It is multiple procedures jammed together. Split it.
This is not an arbitrary constraint. It reflects how people actually use procedures under pressure. When an analyst is working an incident, they do not have time to read a ten-page document. They need to glance at a page, find where they are in the sequence, and see the next step. If they have to scroll, search, or flip pages to find their place, the procedure has failed its primary design requirement.
One page means roughly 15 to 25 steps, depending on complexity. If your procedure has more steps than that, you are describing a process, not a procedure. Break the process into discrete procedures and link them: "When you reach step 12, if the answer is yes, proceed to SOP-IR-007: Network Isolation."
Required Fields
Every procedure needs six fields in its header, visible before the first step:
Trigger condition. What event or observation causes this procedure to be executed? Be specific. Not "suspected malware" but "EDR alert with severity High or Critical on any endpoint, or user report of unexpected encryption of files."
Scope. What does this procedure cover and -- just as importantly -- what does it not cover? Scope prevents analysts from using the wrong procedure for a situation that looks similar but is not.
Steps. The numbered sequence of actions. Each step is one action. Not "investigate the alert and determine scope" -- that is five steps compressed into one.
Escalation criteria. Specific, measurable conditions under which the analyst stops following this procedure and escalates. Not "when it seems serious" but "when more than 5 endpoints show the same indicator" or "when any domain admin account is involved."
Owner. One person. A name, not a team. This person is responsible for the procedure being correct and current. If they leave, ownership transfers explicitly on their last day, not six months later when someone notices.
Last tested date. Not last reviewed. Last tested. The date someone actually executed this procedure, either in a drill or during a real event, and confirmed the steps work.
Decision Trees vs Linear Checklists
Not every procedure is a straight sequence. Some procedures require branching logic: if you see X, do A; if you see Y, do B. The question is when to use a linear checklist and when to use a decision tree.
Use a linear checklist when the steps are always the same regardless of what you find. Initial triage is often linear: collect this data, check this system, document this information. The sequence does not change based on results.
Use a decision tree when the next action depends on what the previous step revealed. Containment decisions are often branching: if the affected system is a server, do this; if it is a workstation, do that. If the user is a privileged account, escalate; if not, proceed with standard isolation.
The danger with decision trees is complexity. If your tree has more than three levels of branching, it is too complex for a single procedure. Split it. The top-level procedure handles the first branch, then hands off to a sub-procedure for each path.
The Full Example: Suspected Ransomware Detection
Below is a complete, usable procedure -- not a summary or an outline. Monospace, numbered, with explicit decision points and escalation criteria in visually distinct blocks. Replace the placeholders with your own tools, contacts, and thresholds.
SOP-IR-003: Suspected Ransomware Detection and Initial Response
Trigger Condition
Execute this procedure when ANY of the following occur:
- EDR alert: "Ransomware Behavior Detected" (severity High or Critical)
- EDR alert: "Mass File Encryption" or "Bulk File Rename" on any endpoint
- User report: files inaccessible, unexpected file extensions, ransom note visible
- SIEM correlation: more than 3 endpoints with file encryption indicators within 60 minutes
Scope
This procedure covers initial detection and triage through the first containment decision. It does NOT cover full containment (see SOP-IR-004), recovery (see SOP-IR-009), or ransom negotiation (see Playbook PB-RANSOM-001 -- Legal must authorize).
Steps
- Record the alert time (UTC), source system hostname, source IP, and logged-on user in the incident ticket. If no ticket exists, create one now. Do not proceed without a ticket number.
- Open the EDR console. Search for the affected hostname. Confirm the alert is not a known false positive by checking the FP whitelist at [wiki link / shared location]. If it matches a known FP, document and close. Stop here.
- In the EDR console, pull the process tree for the alerting process. Screenshot or export it. Save to the incident ticket.
- Check the file activity timeline for the affected host. Look for: mass file renames, new file extensions (.encrypted, .locked, .crypt, or any uniform new extension), ransom note files (README.txt, DECRYPT_INSTRUCTIONS.html, or similar dropped in multiple directories).
- Check the SIEM for authentication events from the affected user account across all systems in the past 24 hours. List every system that account has touched. These are your scope candidates.
- In the EDR console, search for the same indicators (process name, hash, file extension pattern) across ALL managed endpoints. Record the count of additional hosts showing the same activity.
- Isolate the confirmed affected host using the EDR network isolation feature. Verify isolation by confirming the host no longer responds to ping from a non-management network. Record the isolation time in the ticket.
- Disable the affected user account in Active Directory. If you do not have AD access, call the on-call sysadmin at [phone number] and request immediate account disable. Record the disable time in the ticket.
- Collect a volatile data snapshot before the host is powered off or reimaged:
-- Memory dump (if tooling supports remote acquisition)
-- Running process list
-- Network connections (netstat or equivalent)
-- Logged-on sessions
Save all artifacts to the forensic evidence share at [UNC path / S3 bucket / evidence repo] under the incident ticket number. - Check network logs (firewall, proxy, DNS) for the affected host. Look for: C2 callbacks (unusual outbound connections, beaconing patterns), data exfiltration (large outbound transfers in the past 48 hours), connections to known-bad infrastructure (check against threat intel feeds).
- Post an initial status update in the incident Slack/Teams channel using this format:
[TIMESTAMP UTC] [TICKET#] Ransomware -- Initial Triage
Confirmed: [number] host(s) with encryption activity
Isolated: [Yes/No] | User disabled: [Yes/No]
Exfil indicators: [Yes/No/Under investigation]
Next: [specific next action and ETA] - Hand off to the Incident Commander for full containment per SOP-IR-004. Remain available for questions. Your triage notes are now the foundation of the investigation.
-- YES: Continue to step 5.
-- NO but suspicious: Set a 30-minute timer. Re-check EDR telemetry. If still no confirmation after 30 minutes, document findings and close as "Investigated -- No Confirmation." Stop here.
-- Call the Incident Commander on-call: [phone number]
-- Declare a P1 incident in the ticket system
-- Do NOT wait to finish this procedure. Escalate immediately.
-- Continue executing steps below while waiting for the IC.
-- YES: Update the incident ticket to "Ransomware + Exfiltration." Notify Legal immediately at [phone/email]. This changes notification obligations.
-- NO / UNKNOWN: Continue. Exfiltration assessment will continue during full investigation.
Contacts
- SOC Manager: [Name] -- [phone] -- [email]
- Incident Commander on-call: [rotation schedule link] -- [phone]
- On-call Sysadmin: [phone]
- Legal/Privacy: [Name] -- [phone] -- [email]
- CISO (for P1 only): [Name] -- [phone]
That procedure does not explain what ransomware is. It does not describe prevention. Those belong elsewhere. It answers one question: what does the analyst do right now, step by step, when this trigger fires?
It also contains what most SOPs omit: explicit decision points with measurable criteria, escalation triggers with specific thresholds (not "when appropriate"), contact information with phone numbers (not "contact the relevant stakeholder"), and a required output format for the status update.
Writing Under Fire
The Write-As-You-Go Method
The best SOPs come out of real events, not conference rooms. The actions the team takes during an incident, the decisions they make, the things they check -- that is the procedure. The problem is that nobody writes it down while it is happening.
The write-as-you-go method changes this. During an incident, one person -- the scribe -- has a single job: document every action, every decision, and every result as it happens. Not after. Not from memory. In real time.
The scribe does not execute technical actions. They do not investigate. They watch, listen, and write. On a short-staffed team, dedicating one person to documentation feels expensive. It pays for itself within 48 hours, because those notes become the raw material for a reusable procedure.
The Scribe Role
The scribe needs three things: access to the communication channel where decisions are being made (the war room, the Slack channel, the bridge call), a shared document that others can see in real time, and the discipline to capture what is happening without filtering.
The scribe records:
- Timestamps for every action and decision (UTC, always)
- Who did what -- name, not just "the team"
- What commands were run and what the output was
- What decisions were made and why -- the reasoning, not just the choice
- What did not work and what was tried next
- What questions came up that nobody could answer immediately
The scribe does not edit, organize, or beautify during the incident. Raw notes are fine. Timestamps and accuracy matter. Formatting does not.
Converting Incident Notes to a Reusable Procedure
Within 48 hours of the incident closing, someone -- ideally the scribe or the lead analyst -- takes the raw notes and converts them into a structured procedure. Not a week later. Not at the next quarterly review. Within 48 hours, while the memory is fresh and the frustrations are still sharp enough to motivate good writing.
The conversion process has four steps: strip the incident-specific details (hostnames, usernames, timestamps), identify the repeatable sequence of actions, mark the decision points where different incidents would branch differently, and add the required header fields (trigger, scope, owner, escalation criteria).
The left side below is raw incident notes. The right side is the cleaned procedure that came out of them.
03:12 -- Alert from CrowdStrike on WS-FIN-044. "Suspicious process - possible ransomware." User: jsmith. Called Dave, he said check if it's that same FP from last week with the backup software.
03:15 -- Checked FP list. Not on it. This is different -- process is conhost.exe spawning powershell with encoded command.
03:18 -- Pulled process tree. Looks like phishing payload. Word doc -> cmd -> powershell -> conhost. Took screenshot.
03:22 -- Checked SIEM for jsmith logins. Hit on VPN at 01:45 and file server FS-02 at 02:30. Crap.
03:25 -- Checked FS-02 in CrowdStrike. No alerts yet but see same powershell pattern in telemetry. Not alerted because threshold. Double crap.
03:27 -- Isolated WS-FIN-044 via CS. Trying to isolate FS-02 but need sysadmin approval for servers. Called Marcus (on-call). No answer.
03:31 -- Marcus called back. Approved isolation. Isolated FS-02.
03:33 -- Disabled jsmith in AD.
03:35 -- Paged Sarah (IC). Declared P1. Five more endpoints now showing same encoded PS command.
1. Record alert details: time, hostname, user, alert name. Create ticket.
2. Check alert against known FP whitelist. If match: document and close.
3. Pull process tree from EDR. Screenshot and attach to ticket.
4. DECISION: Confirmed malicious process chain? If NO, monitor 30 min. If YES, continue.
5. Query SIEM for all authentication events for the affected user account, past 24h. List all systems accessed.
6. For each system the user accessed: check EDR for same indicators. Record findings.
7. ESCALATION: If any additional hosts show indicators, page Incident Commander immediately. Do not wait.
8. Isolate confirmed affected endpoints via EDR. For servers: call on-call sysadmin for approval first.
9. Disable the affected user account in AD.
10. Post status update in incident channel with confirmed count, isolation status, and next action.
The raw notes contain the actual sequence the team followed, including the delays (Marcus not answering), the judgment calls (recognizing it was not a known FP), and the emotional reactions ("Double crap"). The cleaned procedure strips all of that and preserves only the repeatable actions and decision logic.
Notice step 8 in the cleaned version: "For servers: call on-call sysadmin for approval first." That step exists because during the real incident, the analyst could not isolate the server without approval and had to wait four minutes for a callback. That delay is now baked into the procedure as a known gate, so the next analyst knows to expect it and can start the call earlier in the sequence.
This is how good SOPs get written. Not in a planning meeting. In the wreckage of a real event, by the people who lived through it.
The 80% Rule
An 80% correct procedure, available now, beats a 100% correct procedure that does not exist yet.
Experienced operators resist this. They know the edge cases. They know the exceptions. They know that step 7 only works if the system is running version 4.2 or later, and half the fleet is still on 3.8. So they delay writing the procedure until they can account for every variation.
Meanwhile, the junior analyst working the night shift has nothing.
Write the 80% procedure. Ship it. Put a note at the top: "This procedure covers [systems running v4.2+]. For older systems, escalate to [name]." That note takes ten seconds to write and it turns an incomplete procedure into a usable one. The analyst knows what to do for most cases and knows exactly what to do when they hit a case the procedure does not cover: escalate.
Get the procedure into the hands of the people who need it. Improve it next month.
Testing and Maintenance
Tabletop Testing
A tabletop exercise is the lowest-cost, highest-value test you can run on an SOP. Gather the team that would execute the procedure. Present a scenario that matches the trigger condition. Walk through the procedure step by step, out loud, with the document on screen.
You will find gaps in the first five minutes. The gaps are always the same types:
- Ambiguous steps. "Investigate the alert" -- what does that mean, specifically? Which tool? What query? What am I looking for?
- Missing access. Step 4 says to check the firewall logs. Does the analyst have access to the firewall? At 3 AM? Without a VPN token that expired last month?
- Outdated references. The procedure says to use Tool X. The team switched to Tool Y six months ago.
- Missing decision criteria. "Escalate if the situation warrants it." What situation? What threshold? Who decides?
- Wrong contacts. The phone number goes to someone who left. The email goes to a distribution list that was decommissioned.
Run tabletops quarterly at minimum. Run them monthly if the team is growing or the environment is changing fast. Each tabletop should produce a specific list of changes to the SOP, assigned to the owner, with a deadline.
Live Fire Testing
The real test is execution during a real incident. When an analyst uses an SOP during a live event, that is the definitive test of whether the procedure works.
The key discipline here is noting deviations. Every time someone deviates from the written procedure during a live incident, that deviation needs to be recorded. Not punished -- recorded. Deviations are data. They tell you one of two things: either the procedure is wrong and needs to be updated, or the analyst needs training on why the step exists.
Either way, you need the deviation captured to know which.
The Deviation Log
Maintain a simple log -- a spreadsheet is fine -- that tracks every deviation from every SOP during live use. Four columns:
- SOP ID and step number. Which procedure and which specific step was deviated from.
- What the analyst did instead. The actual action taken.
- Why. The analyst's reasoning. Was the step wrong? Was it unclear? Was there a faster way? Did the situation not match the trigger condition?
- Resolution. Did the deviation produce a better outcome? Should the SOP be updated? Or should the step be reinforced in training?
Review the deviation log monthly. If the same step gets deviated from repeatedly, the step is wrong. Change it. If different steps get deviated from for the same reason ("I did not have access to that tool"), you have a systemic access management problem, not a documentation problem.
Quarterly Review Cycle
Every SOP gets reviewed by its owner once per quarter. Not by a committee. Not by a manager. By the owner -- the person whose name is in the header. The review consists of three questions:
Has this procedure been used or tested since the last review? If yes, incorporate any deviation log findings. If no, schedule a tabletop before the next quarter.
Are all tools, contacts, and access paths still current? Verify, do not assume. Call the phone numbers. Log into the tools. Check that the escalation path still resolves to real people.
Has anything changed in the environment that affects this procedure? New tools, reorganized teams, decommissioned systems, changed network architecture.
The owner signs off on the review with a date. That date becomes the new "last reviewed" timestamp. But remember -- reviewed is not tested. Track both dates separately.
Version Control: Treat SOPs Like Code
If you have a team that already uses git, put your SOPs in a repository. Every change is a commit. Every significant update goes through a pull request with review by at least one person who executes the procedure. The commit history is your changelog.
This is not overhead. It is insurance. When something goes wrong and someone asks "what did the procedure say when Analyst X followed it on Tuesday?" you can answer that question precisely, with a timestamp. You can diff the current version against the version that was in effect during an incident. You can revert a bad change.
If git is not realistic for your team, use whatever versioning your wiki platform provides. The minimum requirement is: every version has a date, every change has a reason, and you can retrieve any previous version.
Kill Stale SOPs
If nobody has used, tested, or reviewed an SOP in six months, archive it. Remove it from the active procedure set. Put it in an archive folder with a label: "Archived [date] -- not tested or used in 6+ months. Do not execute without review."
A stale SOP that stays in the active set creates two risks: an analyst follows it and the steps are wrong, or an auditor sees it and assumes the organization has coverage that does not actually exist.
Archiving is not deleting. The procedure is still there if someone needs to resurrect it. But it is clearly marked as unverified, which is honest. And honesty about the state of your documentation is worth more than a long list of procedures that look good on paper.
Organizational Adoption
The Two-Pizza Team Rule for Ownership
Amazon's "two-pizza team" rule -- no team should be larger than what two pizzas can feed -- applies directly to SOP ownership. If more than one team owns a procedure, nobody owns it. Ownership disputes become maintenance vacuums. Team A assumes Team B is keeping the contacts updated. Team B assumes Team A is testing the procedure. Neither does.
Every SOP has one owner. That owner belongs to one team. If a procedure crosses team boundaries -- and many do -- pick the team that executes the most critical steps and make them the owner. The other team provides input during reviews but does not own the document.
When a procedure spans multiple teams, split it at the team boundary. Team A owns the detection and triage procedure. Team B owns the containment procedure. Each team is fully responsible for their piece. Handoff between procedures is explicit: "When step 8 is complete, notify Team B and hand off per SOP-CONTAIN-002."
Making SOPs Discoverable
A procedure that cannot be found in thirty seconds is operationally equivalent to one that does not exist.
Three things make SOPs findable:
Consistent naming. Use a naming convention that includes the category, a sequence number, and a short description. SOP-IR-003: Suspected Ransomware Detection. SOP-NET-011: Firewall Rule Emergency Change. Not "Ransomware Response Plan v2.1 DRAFT (2).docx."
Tagging by trigger. Analysts do not search for procedures by name. They search by symptom. "I am seeing encrypted files" should find the ransomware procedure. "User reported phishing email" should find the phishing triage procedure. Tag every SOP with the observable symptoms that would cause someone to need it.
Single source of truth. SOPs live in one place. Not in Confluence and also in a shared drive. Not in a wiki and also emailed as attachments. One location. Everything else links to it. If someone finds a copy that is not in the canonical location, that copy is by definition suspect.
Onboarding New Analysts With SOPs
Most teams onboard a new security analyst by pairing them with a senior analyst for two to four weeks. The senior shows them the tools, walks them through common scenarios, and gradually gives them more independence. It works, but it is fragile -- dependent on the senior being available, being a good teacher, and remembering to cover everything.
SOPs make onboarding less dependent on individual availability and memory. The new analyst gets the SOP catalog on day one. Their training plan maps directly to procedures: "Week 1, you will execute SOP-IR-001 through SOP-IR-005 in a lab environment with a mentor present. Week 2, you will handle live alerts using those procedures with a mentor available but not sitting next to you."
SOPs do not replace mentorship. They structure it. The mentor's job shifts from "teach the new person everything" to "help the new person when the procedure does not cover their situation." That scales to onboarding multiple people at once.
New analysts are also excellent SOP testers. They follow the procedure exactly as written because they do not know any better. If a step is ambiguous, they will ask about it. If a tool requires access they do not have, they will discover it. Every question a new analyst asks about a procedure is a gap in that procedure.
Measuring SOP Effectiveness
Two metrics tell you whether your SOPs are working:
Time to resolution with SOP vs without. Track how long incidents of the same type take to resolve when the analyst uses the procedure versus when they do not (or when no procedure exists). If the procedure does not reduce resolution time, either the procedure is bad or the analysts are not using it. Both are fixable, but you need the data to know which.
Deviation frequency. How often do analysts deviate from the written procedure? A high deviation rate means the procedure does not match reality. A zero deviation rate either means the procedure is perfect -- unlikely -- or nobody is tracking deviations. Aim for a low but nonzero rate. Some deviation is healthy; it means the procedure is being used and the environment is changing.
"Number of SOPs" is a vanity metric. An organization with 20 tested, current procedures is in better shape than one with 200 stale ones. Measure currency, test coverage, and operational impact.
The Cultural Problem
The hardest part of SOP adoption is not writing the documents. It is getting people to use them.
Most security teams treat SOPs as bureaucracy -- evidence of a manager who does not trust the team, or a compliance requirement that slows down real work. Senior analysts resist procedures because they feel prescriptive. "I have been doing this for fifteen years. I do not need a checklist."
Surgeons use checklists. Pilots use checklists. Not because they are incompetent -- because the consequences of skipping a step are too high to rely on memory. Experts have bad days. They get distracted. They forget things under stress.
SOPs are not instructions for people who do not know what they are doing. They are a safety net for people who do know what they are doing but are operating under fatigue, stress, time pressure, and incomplete information. The procedure is there so that on your worst night, you still produce your minimum acceptable outcome.
That changes who writes the procedures. If SOPs are for beginners, managers write them. If SOPs are safety nets for experts, experts write them. And when experts write the procedures, the procedures are good -- because the author and the user are the same person.
Get your senior analysts to write the SOPs for their own domains. Not as an assignment. As ownership. "This is your procedure. It documents how you handle this situation. When you are on vacation and the junior analyst has to handle it, this is what they will follow. Make it good enough that you would trust it."
When the framing shifts from compliance to trust, the conversation changes. Competent teams maintain their own tools -- including their documentation.
Twenty years of operations has taught me one thing about procedures: the ones that survive are the ones that were born in chaos, tested in fire, and maintained by the people who use them. Everything else is paperwork.