PI1.4 System outputs

PI1.4 asks you to deliver system output completely, accurately and on time, only to intended parties, with records of that activity. This page explains how a CPA tests it and what evidence passes.

On this page

What PI1.4 system outputs asks for in a SOC 2 audit

PI1.4 asks the organization to make system output available, or deliver it, completely, accurately and on time in line with its specifications, and to show that the output reaches only the people it was meant for. For a SOC 2 that includes the processing integrity category, an auditor will want to see how outputs such as reports, invoices, data files, API responses and notifications are produced, protected in transit and at rest, sent only to intended recipients, and recorded so that any delivery can be traced afterward. The criterion is only tested when processing integrity is in scope. If your report covers only the common criteria CC1 to CC9, PI1.4 does not apply, although the access and logging controls it depends on still will.

The risk is four-fold: output that is wrong, late, leaked or untraceable. A wrong output, such as a billing file with misstated totals, damages customers who act on it. A late output breaks the service level the customer contracted for. A leaked output sends personal or confidential data to someone outside the intended audience, and an untraceable output leaves you unable to prove what was sent, to whom and when. PI1.4 differs from its siblings in where the control sits. PI1.2 governs inputs entering the system, PI1.3 governs what happens during processing, and PI1.5 governs how items are stored. PI1.4 concerns the point where results leave the system, so an auditor will test the delivery path, recipient controls and output logs separately from the processing logic upstream.

Start by listing every output your system produces and every channel it uses, including scheduled exports, API responses, email, file transfers and shared links. For each one, confirm who may receive it, how the recipient is authorized, and which log records the send. Ask your auditor which sample of output events they intend to select and whether they expect evidence from the delivery system, the application or both. On a self-hosted stack, audit logging is a common source. Nextcloud's admin_audit app, for example, writes additional event information to audit.log in the data directory or to a path set with logfile_audit. Confirm with your own configuration whether that log captures the sharing and download events your outputs depend on, and where it is retained.

Which outputs, systems and third parties fall under PI1.4

Scope for PI1.4 starts with a list of everything the system delivers to people or other systems. Each output, the system that produces it and any provider that carries it then needs to appear in the system description, because the examination tests only what the description says is in scope.

Customer-facing reports and exports

Dashboards, scheduled PDF reports, CSV exports and downloadable statements are output in the sense of PI1.4 when customers rely on them. Record which reports exist, who can generate them, what data each includes and whether the report is produced by the application or by a separate reporting job. Confirm that each report is named in the system description, since an unlisted report is an unexplained gap for the assessor. Inventory every export path, including support tooling that lets staff pull customer data on request.

API responses and webhooks

Responses returned to integrating systems and webhook payloads pushed to customer endpoints are outputs that leave the platform without a person reviewing them. Document the schema, the error responses and the retry behavior for failed deliveries, because delivery completeness is part of what PI1.4 asks about. Check whether webhook logs record which payloads were sent, to which endpoint, and whether they were acknowledged.

Files, notifications and customer deliverables

Invoices, statements, alerts, emails and files placed in shared folders are the outputs most likely to be forgotten in scoping, because they often come from background jobs. List each notification type, its trigger and its recipient rules. Where a deliverable is a file, confirm where it is stored, how the recipient is authenticated and what happens when a link expires or is forwarded.

Systems that generate and distribute output

Map the application servers, batch schedulers, reporting databases and message queues that create output, and the components that send it. A reporting replica or a queue can produce output that the application never shows directly. Each system that touches output belongs in the system boundary, with its owner and its logs identified, so the assessor can trace an output from creation to delivery.

Subservice providers that carry output

Email delivery services, SMS gateways, managed file transfer and content delivery networks handle output after it leaves your systems. Decide whether each provider is a subservice organization in your description, and collect its own SOC report or equivalent evidence where you rely on it. Note which complementary user entity controls your customers must perform, such as checking recipient addresses before they enable forwarding.

Output logs and the system description

Logs that record who received what output, and when, are evidence for PI1.4 and must cover the systems and providers named in scope. The description of the system has to match the outputs you actually run, so review it whenever a report, integration or provider changes. Self-hosted components such as Nextcloud can write extra audit events to audit.log, which you should confirm covers the file sharing activity you intend to describe.

How an assessor tests PI1.4 in a Type 2 examination

In a Type 1 style design check, or the design portion of a Type 2, the assessor asks whether the controls over system output would work as described if they ran as written. The assessor reads the system description, the written procedures for producing and releasing output, and the control matrix, then walks through how a report, file or data feed moves from the processing system to a recipient. The question is whether protection, distribution limits and recordkeeping are built into that path, not whether a single delivery went well.

  • Output inventory: a list of each output the service produces for customers, such as reports, exports, invoices or API responses, with its owner and destination.
  • Distribution rules: documented criteria for who may receive each output, and whether the system enforces them or a person checks them by hand.
  • Protection design: how outputs are encrypted, access-restricted and expired while they sit in staging or download areas.
  • Logging design: which events about output creation, access and transmission are recorded, where the records go and who can change them.
  • Exception handling design: the steps for failed or incomplete deliveries and who approves a resend.

Before fieldwork, confirm that each design point matches what engineers actually built, because a gap between the written design and the running system is a common reason a design conclusion changes.

How to implement PI1.4 controls step by step

This sequence moves from defining what the system produces to proving, after the fact, that each output reached the right party complete and on time. Each step leaves a record an auditor can sample against the PI1.4 points of focus.

  1. Define output types and specifications

    Start by listing every output the system produces, such as customer reports, exports, API responses, invoices, notifications and scheduled files. For each one, record its content, format, expected timing, the processing specification it must meet and the owner accountable for it. Product or operations owners sign off so the specification is agreed rather than assumed. The output is an output register, a table with one row per output type that names the owner, specification, format and delivery channel.

  2. Restrict where output is stored

    Decide where each output type may live while it waits for pickup or delivery, then configure storage so only that location is used. Engineering owns the configuration, typically through access controls on shared folders, object storage buckets and temporary directories, with expiry on temporary files. Security reviews the settings against the register. The output is a storage map that shows each output type, its approved location, the roles that can read it and the retention or deletion rule applied.

  3. Set recipient rules and transfer encryption

    For each output type, write down who may receive it, through which channels and under what authentication. Recipients are usually named accounts, customer tenants or defined external systems, and anything outside that list is blocked by default. Transfers should use encrypted channels, and the rule should say what happens when a recipient address changes. The output is a recipient matrix and a transfer standard that the delivery configuration can be checked against during testing.

  4. Add completeness and accuracy checks on delivery

    Build checks that compare what was sent with what was expected. Typical checks include record counts, control totals, checksums, schema validation and a timing check against the specification. Failed checks should stop or quarantine the delivery and raise an alert to the owner. Engineering builds these checks and QA tests them with known good and known bad outputs. The output is a documented check library, with test results showing each check catches the failure it is designed for.

  5. Log output activity

    Turn on logging for every generation, retrieval, transfer and failed delivery, recording who or what acted, which output, when, to which recipient and the result. Logs should be protected from alteration and retained for a period set by policy. Where the platform supports it, enable audit trails for the applications that create and send output. For example, a self-hosted Nextcloud instance can route the admin_audit app to a dedicated audit.log file set through the logfile_audit key, and the team should confirm that the chosen path is writable only by the logging service. The output is a delivery log format with defined fields and a sample export that shows each event type.

  6. Review exceptions and close them

    On a set cadence set by the control owner, review failed checks, misdirected deliveries, late outputs and unusual retrieval patterns from the logs. Each exception is assigned, investigated, corrected and linked to a root cause, with any recipient impact assessed and communicated under the incident process. Management records the review as evidence that the control operated. The output is an exception log with a disposition for every item, which an auditor can sample across the observation period in a Type 2 examination.

How audit logs show who received what and when

An assessor testing PI1.4 wants proof that output reached the right people, in full and on time, and that the organization can reconstruct those deliveries later. Application and platform audit trails are often the most direct record of that activity, because they show which account accessed or was sent an output, when, and from where. A log that exists but does not capture share creation, download, export or API retrieval gives the assessor nothing to sample, so the first task is to map each output path (portal downloads, shared links, scheduled reports, API responses, email notifications) to the log events that prove it happened.

In a self-hosted Nextcloud deployment, the admin_audit app writes additional event information to audit.log in the data directory, or to a path set with logfile_audit. Teams should confirm which sharing, download and file-access events the app records in their installed version, decide where the file sits relative to backups and log rotation, and check who can read or edit it. For secrets and secrets-adjacent outputs, OpenBao audit devices keep a detailed JSON log of every API request and response, including errors, with most sensitive values hashed using HMAC-SHA256. That design preserves a record of who retrieved a secret without storing the secret in clear text, but it also means the reader must know how to correlate hashed values with the original request.

Logs only support PI1.4 if they are complete. Run a test in which known outputs are sent to an internal recipient, an external share and an API client, then confirm each delivery appears in the relevant log with the correct identity, timestamp and object. Record the results as evidence, check that logging cannot be disabled silently by an administrator, and confirm that the retention period covers the observation window of a Type 2 examination. Gaps found during this test are cheaper to fix before the auditor samples the logs than during fieldwork.

Evidence that passes PI1.4 and how to keep it current

An auditor testing PI1.4 looks for records that show outputs were protected, sent to the right people, complete and accurate, and logged. The artifacts below work together: specifications define what correct output is, authorization lists define who may receive it, and logs and reconciliations show what actually happened. Keeping each one current means generating it as a by-product of normal operations rather than assembling it before fieldwork.

Output specifications

The written definition of each output, including its format, content fields, recipients, delivery schedule and completeness rules. An auditor compares sampled outputs against this document, so every report, export and API response in scope should trace back to a versioned specification. Keep specifications in version control so each change carries an approver and a date. Check that the spec named in the control matches the output the system actually produces. Review it whenever a new output is added or an existing one changes shape.

Recipient authorization lists

A current list of who may receive each category of output, with the business owner who approved each entry. This is the record that proves outputs went only to intended parties. Generate the list from the identity provider's group membership where possible, so removing a user from a group also removes them from the list. Review it on the same cadence as access reviews, and record every addition or removal with a ticket reference. Stale entries for former staff or external contacts are a common exception.

Delivery and transfer logs

Records of what was sent, to whom, when and by which channel, produced automatically by the systems that distribute output. Logs should capture the destination, the object identifier and the result, and they should be shielded from the people whose activity they record. Confirm that log retention matches the period the auditor will sample. Test a few deliveries end to end during the year so you know the logs reflect what the recipient received, not only what the sender attempted.

Completeness and accuracy reconciliations

Records showing that the count, totals or checksums of output match the source data for each run or period. Reconciliations are how the organization demonstrates output was delivered completely and accurately, and they should be signed or reviewed by someone other than the preparer. Automate the comparison and store the result with the run identifier. Define in advance what happens when totals differ, and keep the investigation and correction as evidence. Unexplained differences that were never followed up are a frequent audit finding.

Access reviews for output repositories

Periodic reviews of who can read, write or administer the shared folders, buckets, report servers and API scopes that hold output. Scope the review to the repositories themselves, not only to the application, because direct file access can bypass the application's controls. Export the permission state at review time, have the owner certify it, and file the signed result. Confirm that removals made during the review are actually executed and logged.

Exception tickets

Tickets opened when an output was late, incomplete, misdirected or unrecorded, with the root cause, the correction and the preventive change. Exceptions are expected in a Type 2 period, and what distinguishes a well-run program is that each one has a documented owner and closure. Link tickets to the affected run, the recipient list and any changed specification. Review open exceptions in the monthly control meeting so none age out unnoticed before the observation period ends.

What meeting PI1.4 costs in money and effort

This table compares the cost components of meeting PI1.4 System outputs, showing who is paid, whether each cost is one-time or recurring, and what drives it up or down. Use it to scope a quote and to see where self-hosted open-source logging can reduce license spend while adding operating effort.

Cost componentOne-time or recurringWho is paid or who does the workWhat drives it
Engineering time to define output specificationsOne-time, then revised on changeInternal engineers or an implementation partnerNumber of output types, report formats and delivery channels
Build of distribution checks and recipient controlsOne-timeInternal platform team or implementation partnerNumber of systems that send output and how recipients are managed
Logging and transfer tooling licensesRecurringCommercial vendor, if a proprietary tool is chosenTool tier, event volume and retention period
Self-hosted logging and audit toolingRecurring operating effort, usually no license feeInternal operations staff, or a retainer if boughtLog volume, storage growth, upgrades and alert tuning
Hosting and storage for output and audit recordsRecurringCloud provider or data center ownerRetention period, output volume and archive format
Evidence upkeep (reports, sample extracts, change records)RecurringControl owners, with support from the implementation partner if retainedFrequency of output reviews and number of owners
External testing of output protection, if boughtRecurring or per engagementIndependent security testing providerScope of applications, APIs and file transfer paths tested
Auditor sampling and fieldwork effortRecurring each examination periodIndependent CPA firm, paid under its engagement letterNumber of output channels in scope and sample sizes the auditor selects

Who does what for PI1.4: your team, a partner and the auditor

Your organization owns PI1.4. The control environment is yours: you decide what output the system produces, who is an intended recipient, how output is protected and which deliveries count as complete and accurate against your own specifications. An implementation partner or auditor cannot make those decisions for you, and the report describes controls you operate.

  • Output definitions: Name each output type (reports, exports, notifications, customer files, API responses) and the specification it must meet.
  • Recipient decisions: Approve who may receive each output and keep the approval record, including changes to distribution lists.
  • Protection rules: Set how outputs are encrypted, shared and expired, and who may override them.
  • Exception handling: Decide what happens when a delivery fails, is incomplete or goes to the wrong party, and who signs off on the fix.
  • Management assertion: Management signs the system description and representations that the controls operated as described.

Check that each output in your description has a named owner and a written specification before the auditor selects samples.

Common PI1.4 gaps and how to close them

Most PI1.4 findings come from outputs nobody specified, recipients nobody checked, and records nobody reads. The gaps below look different on the surface, but they share one root: the organization cannot show that output went where it should, arrived complete, and was watched after release. Each card names the gap, why an assessor cares, and the action that closes it.

Outputs with no defined specification

Reports, data feeds, invoices and API responses often ship without a written definition of their fields, format, timing or completeness rules. Without that specification, an assessor has nothing to test delivery against, and the team cannot say whether an output is wrong or simply unexpected. Close it by writing a one-page specification for each output class that names the content, format, delivery deadline and the owner who approves changes. Check that the specification matches what the system actually produces, not what the design document once said.

Exports sent outside the recipient list

Scheduled exports, shared links and ad hoc CSV downloads frequently reach people or external addresses that were never on the intended distribution list. This is the core PI1.4 risk of output going to unintended parties. Close it by mapping every output path, including email, file sharing and webhooks, to a named recipient group, then restricting destinations in the platform where it allows that. Review sharing settings for expiry and for links that grant access to anyone with the URL.

No completeness reconciliation

Teams often assume an output is complete because the job reported success. A job can finish while dropping rows, truncating files or skipping a source. Close it by reconciling record counts and control totals between the source and each delivered output, and by keeping the reconciliation result as evidence. Define what happens when totals do not match, including who is notified and whether delivery is held until the difference is explained.

Logs that exist but are not reviewed

Audit logs are often enabled during setup and then never read. An assessor testing PI1.4 will look for records of output activity and evidence that someone examined them. Close it by defining which output events are logged, such as exports, shares and failed deliveries, then assigning a reviewer and a review cadence. For Nextcloud, the admin_audit app writes additional event information to audit.log in the data directory, or to a path set with logfile_audit. Confirm the log location is protected and retained according to your policy.

Output repositories with excessive access

Shared folders, report stores and secrets vaults that hold generated output tend to accumulate broad read permissions over time. Anyone who can read the repository can take output outside the intended audience, whatever the delivery process says. Close it by granting read access by group, removing standing access that is no longer needed, and reviewing membership on a schedule. Where secrets or credentials are part of the output path, OpenBao audit devices keep a detailed JSON log of every API request and response, with most sensitive values hashed with HMAC-SHA256, which helps show who accessed what.

PI1.4 questions buyers ask before hiring help

How much effort does PI1.4 add to a SOC 2 examination?

PI1.4 adds a bounded set of evidence tasks, but only when processing integrity is in scope. The effort depends mainly on how many output channels your system has, such as reports, API responses, exports, invoices and notifications, and how many types of recipient receive them. For each channel, the organization must show who the intended recipients are, how output is protected in transit and at rest, that delivery is complete and accurate, and that output activity is recorded. Effort grows when logging is spread across tools and shrinks when it is already centralized. Confirm the in-scope channels with your CPA firm early, because late scope changes during fieldwork tend to add rework. Ask for the effort estimate in writing, tied to a named list of channels.

Can our team handle PI1.4 in-house without outside help?

Many teams can prepare PI1.4 themselves if one person owns output controls end to end and has time to collect evidence. The organization owns its controls in every case. Outside help usually makes sense when no engineer can explain how each output channel works, when logs are scattered across systems, or when the team lacks someone to run the quarterly evidence collection. An implementation partner can prepare systems, configure logging and assemble evidence, but only the independent CPA firm performing the examination issues the report. Before deciding, list your output channels, name an owner for each one, and check whether that owner can produce the records an auditor will sample without a rebuild of the tooling.

What does PI1.4 need from engineering and operations teams?

PI1.4 needs ongoing participation from both teams, because output controls live in code, configuration and daily operations. The work usually covers these parts:

  • A current inventory of every output channel and its intended recipients, kept up to date as features change.
  • Access and transport protections for output, such as encryption in transit and restricted access to exported files.
  • Checks that output is complete and accurate, with records of failed or partial deliveries.
  • Retained logs of output activity, with retention settings that match the audit period.

Engineering owns the implementation, and operations owns the recurring checks and log retention. Agree who signs off on changes to recipient lists, since an unreviewed change is a common source of exceptions in a Type 2 examination.

How long does PI1.4 work take for a fixed scope?

The duration depends on scope, current tooling and how much output evidence already exists, and no fixed duration applies to every system. Setup work moves faster when output channels are few, documented and already logged. It slows when channels are undocumented, when recipients are managed through manual exports, or when logs must be centralized before they can be sampled. For a Type 2 report, the observation period set by the examination also determines how much evidence must exist and how far back it must reach, so controls need to operate reliably from the start of that period. Ask any partner to show the phases, the deliverables for each phase, the dependencies on your team and the assumptions behind the schedule, all written into the fixed scope before work begins.

Do output logs alone satisfy PI1.4 in a SOC 2?

Logs alone are rarely enough. Logs show that output activity was recorded, which is one of the points of focus, but PI1.4 also asks whether output is protected, sent only to intended parties and delivered completely and accurately. An auditor will usually want logs that tie each output event to a recipient, a channel and an outcome, plus evidence of the controls that protect and check that output. A log that records a file was exported does not show who was allowed to receive it or whether the file was correct. Pair log review with recipient lists, access reviews for export functions and reconciliation or error-handling evidence. Confirm the sample of output events and evidence your auditor expects before you build the set.

Which open-source tools produce PI1.4 output evidence?

Two examples show the kind of records that can be produced. Nextcloud's admin_audit app logs additional event information to audit.log in the data directory, or to a path set with logfile_audit, which can support evidence of file sharing and access events. OpenBao's audit devices keep a detailed JSON log of every API request and response, including errors, with most sensitive values hashed with HMAC-SHA256, which can show when secrets or data were requested and returned. Neither tool alone proves the recipient controls or accuracy checks PI1.4 expects. Confirm for each platform which events are logged, where logs are stored, how long they are kept and whether sensitive values are masked as your auditor requires. Test log output in a non-production environment before relying on it as evidence.

What should we ask a partner for in a fixed-scope quote?

Ask for a written scope that names every output channel, recipient type and system in the boundary, since the quote follows from that list. The quote should also state the deliverables, such as configuration changes, evidence procedures, documentation and handover, and who performs each task. Confirm which work is one-time, such as setup and documentation, and which recurs, such as quarterly evidence collection or log reviews. Check the assumptions the price depends on, including the auditor's expectations, access to your environment and the people you must provide. Ask what is excluded, how changes to scope are priced and approved, and what support follows the engagement. A partner prepares systems and evidence, but the independent CPA firm issues the report, so the quote should say that plainly.

How DeployOpen prepares PI1.4 controls and evidence

DeployOpen's role in PI1.4 is to prepare the systems, settings and records that show how outputs are protected, delivered and logged. The scope is agreed in writing before work starts, and it should name each output channel in question, such as file sharing, reports, API responses and exports, along with the systems that produce and hold them. DeployOpen plans, implements and hardens the self-hosted open-source platforms involved inside the client's own cloud accounts, data centers or air-gapped networks, so the client keeps control of where output data lives and who can reach it.

On the logging side, the work covers configuring output-related audit trails. For example, Nextcloud's admin_audit app can write additional event information to audit.log in the data directory or to a path set with logfile_audit, and OpenBao audit devices keep a JSON record of API requests and responses, with most sensitive values hashed. Confirm with your own team which events, retention periods and access rules your output controls require, since those decisions belong to the organization. DeployOpen configures the platforms to produce these records and documents how they are collected, but it does not decide your control design.

DeployOpen does not issue SOC 2 reports, opinions or attestations. An independent CPA firm performs the examination, tests whether PI1.4 controls are designed and operating as described, and issues the report. DeployOpen's deliverables are the implemented configuration, the documentation of how each output control works and the evidence packages the client's team and the auditor will review. Before engaging, ask any implementation partner to confirm in writing which artifacts they will hand over, and ask your CPA firm which evidence formats and sampling approach it expects.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.