Why project management in air-gapped networks needs its own plan
A regulated or critical-infrastructure team that must plan work with no route to the internet cannot treat project management as a simple install. The constraint changes how the platform is installed, how it is licensed, how packages and patches reach it, and how vendor access is controlled. Hosting is only the first of these. Each one has to be settled before a tool is chosen, because a platform that installs cleanly on a connected test server may still depend on online license checks, package downloads or update channels that do not exist inside the isolated boundary.
The short answer for most teams is this. Plane's Airgapped edition is the option to evaluate when you want a supported offline path from the vendor, since Plane lists it as one of three self-hosted editions alongside Community and Commercial, each on a distinct codebase with its own release cycle. OpenProject or Redmine fits teams that accept a self-managed offline install, with the packaging, dependency mirroring and upgrade handling that implies. The edition decision comes before the platform decision: confirm in writing which edition includes offline activation, which features your users need, and whether single sign-on or directory sync requires a paid tier, because those answers can rule a platform in or out before any installation work begins.
Ask each candidate vendor how offline license activation works, what the upgrade path looks like across the boundary, and which artifacts you must transfer and verify. Plan for a documented process in which every package, container image and update is checked for integrity before it crosses the gap, since supply chain controls such as the verification requirements in NERC CIP-013-2 apply to software carried into isolated environments. Confirm these details with the vendor and your own compliance owner rather than assuming them from the community documentation.
Which requirements an air-gapped project tool must meet
This table maps each regulatory and operational requirement to what it asks of a disconnected project tool, the evidence an assessor expects, and where builds usually fall short. Read each row as a design input: the requirement sets the control, and the build must produce proof that it works across the gap.
| Requirement or component | What it asks for in the build | Where it usually fails |
|---|---|---|
| NERC CIP-013-2 software integrity | Verify authenticity and integrity of every package, image and patch before it crosses the boundary, and record the check in the procurement process | Container images and Helm charts are copied without checksum or signature verification, so no one can show what entered the network |
| NERC CIP-005-7 remote access | Route any interactive vendor or admin access through an intermediate system with encryption and multi-factor authentication, and be able to detect and disable active vendor sessions | Vendors connect directly to the admin console or database for upgrades, bypassing the intermediate system |
| SEC Rule 17a-4(b)(4) records | Keep project communications and records that relate to broker-dealer business for at least three years, in a form that can be retrieved | Comment threads and attachments live in a tool with no retention policy, or backups are overwritten on a short cycle |
| HIPAA 164.312(b) audit controls | Record and examine activity in any system that holds ePHI, such as project records or time entries tied to patient or clinical programs | Audit logs are not enabled by default, are not forwarded off the host, or are stored only on the same server they describe |
| HIPAA 164.312(e)(1) transmission security | Protect data moving over any sync, import or replication path, including offline media transfers that feed the tool | Sync jobs or importers run over unencrypted links, or media transfers are not logged or reviewed |
| Offline license activation | Confirm which edition needs a license key, how activation works without outbound connectivity, and how seat counts are reported and renewed | Teams assume the free edition is sufficient, then discover SSO, LDAP or audit features need a paid edition that cannot be activated on the isolated network |
| Offline upgrade media | Plan a repeatable bundle process that carries release images, migrations and release notes across the gap, with a tested rollback path | Upgrades depend on pulling images or packages from public registries, so patch cycles stall or get skipped |
| Database and object storage | Provision PostgreSQL with the extensions the tool requires, plus Redis or Valkey and S3-compatible object storage, all inside the enclave | Backups for the database and attachments are taken at different times, so restored data does not match, and object storage is not included in the backup scope |
Which project tool fits which air-gap situation
Plane is the only option here with a dedicated offline product. It offers Community, Commercial and Airgapped self-hosted editions. The Airgapped edition is proprietary, built on its own codebase and follows its own release cycle, so it is a separate product to evaluate, license and maintain.
- Separate codebase: Security fixes and features arrive on the Airgapped release cycle, so Community release dates tell you nothing about when an enclave will receive a patch.
- Activation: Confirm in writing how a license key is activated and renewed with no outbound internet access.
- Offline install path: Ask Plane for the documented offline steps, the full list of container images and how each image is transferred and verified.
- Backing services: Confirm which components (PostgreSQL, Redis or Valkey, RabbitMQ and S3-compatible storage such as MinIO) must be mirrored inside the enclave.
- Identity features: Confirm whether SAML, OIDC and LDAP are included, since the hosted pricing page places SAML and OIDC on paid tiers and lists LDAP as an Enterprise feature.
Before shortlisting Plane, get the Airgapped edition's feature set, support terms and upgrade path confirmed in writing, because none of them follow from the Community documentation.
OpenProject is licensed under GPL-3.0 and can be installed entirely inside a disconnected network. Docker is the recommended method, with .deb and .rpm packages for 64-bit Linux and Kubernetes with Helm charts for horizontal scaling. Packaged installs are supported on Ubuntu 22.04, Debian 12, CentOS or RHEL 9.x and SUSE Linux Enterprise Server 15, as listed in the OpenProject system requirements.
- Packages and images: Mirror Docker images or .deb and .rpm packages through an internal repository, and record checksums for every file that crosses the boundary.
- Database: Official support covers PostgreSQL 16 or later since OpenProject 16.0.0, and the pg_trgm, btree_gist and unaccent extensions must be available in your offline repository.
- Sizing: The sizing guide suggests 4 cores and 4 GB RAM for up to 200 users, 8 cores and 8 GB for about 500 users, and 16 cores and 16 GB for about 1,500 users.
- Edition features: Single sign-on (SAML, OIDC, CAS, Kerberos and Okta), LDAP group synchronization and custom branding are Enterprise features, so a Community install does not include them. Enterprise on-premises pricing is listed per named user in euros, so request a written quote.
- Jira migration: The Jira Migrator is in beta, imports from Jira Data Center 10.x and 11.x only (not Jira Cloud), and its documentation advises test setups only.
Confirm the release you intend to install and whether the Community or Enterprise edition covers your identity requirements before you build the offline repository.
Redmine is an open-source tracker that teams often choose when they want a self-managed system. Its offline behavior depends on the Ruby runtime, the database and especially the plugins you add. The base application may install cleanly offline while a plugin still reaches an external host at runtime, so the core install alone does not answer the air-gap question.
- Runtime dependencies: Confirm that every Ruby gem, JavaScript package and operating system package is mirrored inside the enclave, with versions recorded.
- Plugin network calls: Test each plugin with outbound traffic blocked, covering first page loads, asset loading, update checks and email notifications.
- Authentication: Confirm which single sign-on or directory option works with your chosen plugins and whether it depends on an external identity service.
- Upgrade path: Plan how plugin releases and database migrations cross the gap, and rehearse the upgrade on a copy of production data.
- Maintainer support: Ask each plugin maintainer whether they support air-gapped operation, and get the answer in writing.
Build a register of plugins with their outbound calls and test results before you commit to Redmine, since the base application cannot tell you that.
Licence type and edition decide what you can deploy offline and what you can change. Plane Community is licensed under AGPL-3.0, but the Community and Airgapped editions are different codebases with different release cycles, so a patch or migration step in one does not carry over to the other. Plane's Kubernetes guide installs the Commercial edition, so it should not be used as the offline blueprint without checking. Across the market, air-gapped support is often a paid feature. Mattermost lists it under Enterprise Advanced, and Rocket.Chat excludes it from its free Starter plan.
- Codebase split: Moving from Plane Community to the Airgapped edition is a product migration, so test the data move before scheduling it.
- Kubernetes guide: Plane's Kubernetes guide installs the Commercial edition, and its Free plan includes 12 seats, so check the edition before copying any manifest into the enclave.
- AGPL obligations: AGPL-3.0 terms can apply to modified versions offered to network users, so have counsel confirm how they apply to an internal enclave.
- Paid air-gap gating: Ask each vendor which tier includes offline operation, and price that tier, not the free one.
- Import paths: The Plane Jira importer covers Jira Cloud and Jira Data Center on the Commercial edition, while the OpenProject migrator is beta and Data Center only, so run test imports on both before cutover.
Confirm the edition, licence and import path in writing before you size the enclave or the offline repository.
How to install and activate without internet access
The offline install path has three steps: stage every image or package on a transfer medium, load it into a store the disconnected network can reach, and point the installer at those local sources instead of public registries. For container-based platforms, the pattern is the one Kubernetes documents for kubeadm: the control plane images are listed and pulled in advance with kubeadm config images list and kubeadm config images pull, then kubeadm init is pointed at a private registry with the --image-repository flag. Apply the same logic to Plane. The Plane Kubernetes guide installs the Commercial Edition and can point PostgreSQL, Redis or Valkey, RabbitMQ and S3-compatible object storage such as MinIO at services you run inside the enclave. Each of those dependencies must be mirrored or pre-deployed, and each external endpoint in the values file must resolve to an internal address. Confirm the exact image list for the release you intend to install with Plane, since the Helm chart and image tags change between versions.
Licensing is where the Plane path diverges from a pure open-source install. The Community Edition is AGPL-3.0 and needs no license key, but a team that moves to a paid plan must first switch from Community to the Commercial Edition, which unlocks plans through a license key and counts seats by users with paid roles. The Airgapped edition is a separate, proprietary codebase with its own release cycle, so an upgrade is a change of edition as well as a version bump. Before you commit, ask Plane in writing how the license key is validated on a host with no outbound connection, whether activation is offline or needs a one-time callback, how key renewal and seat changes are applied on an isolated network, and what happens to the instance if the key lapses. Ask for the same answers for OpenProject Enterprise, which is licensed per named user and whose activation method you must also confirm for disconnected hosts.
Integration points and the deployment pattern inside the gap
A self-hosted project tool inside an isolated network depends on a handful of local services, each of which either stays inside the boundary or is brought across it through a controlled transfer. Map each component to its owner and its network path before you choose an edition, because the identity and storage choices decide which features you can use.
Project tool and its database
The application server and its PostgreSQL database are the core of the deployment and need no outbound route once installed. OpenProject officially supports PostgreSQL 16 or later and requires the pg_trgm, btree_gist and unaccent extensions, so confirm that your internal database images or packages already include them. Plane's self-hosted stack also depends on PostgreSQL, so check the same extensions and versions in the design review before the first install. Keep the database on a backup schedule that the isolated network can run without help from the vendor.
Local identity source
Single sign-on and directory sync should point at an identity service that lives inside the gap, such as an internal LDAP directory or a SAML or OIDC provider. Edition matters here: OpenProject lists SAML, OIDC, CAS, Kerberos and Okta single sign-on and LDAP group synchronization as Enterprise features, while Plane lists SAML and OIDC from Pro and LDAP as an Enterprise feature. Confirm which edition covers your required method before you sign a purchase order, and confirm that the identity provider is reachable from the project tool's network segment.
Object storage for attachments
Plane uses S3-compatible object storage, and MinIO is the example named in its documentation, for attachments and uploaded files. Run that storage inside the boundary and check whether the Helm chart can point at your existing object store rather than a bundled instance. Attachments are often the largest data set in a project tool, so size the store and its backups together. Confirm with the vendor which storage backend each edition supports before the design is frozen.
Internal registry and package mirror
Container images, Helm charts and operating system packages must be staged into the gap before installation or upgrade. Kubernetes documents the pattern: kubeadm can pull control plane images in advance and point at a private registry with the --image-repository flag, which is the same approach a project tool cluster needs. Packaged OpenProject installs also depend on supported Linux distributions, so mirror those packages too. Record every artifact and its checksum on the import manifest so each upgrade has a traceable source.
Monitoring and log sink
Audit logs, application logs and health metrics should flow to a collector inside the boundary, never to a cloud endpoint. Plane lists API-enabled audit logs as an Enterprise feature, so if you depend on them, confirm the edition and the export format before you design the sink. Retention for these logs is set by your own policy and any applicable records rule, not by the tool. Ask the implementation partner which logs are generated by default and which need configuration.
Paired document store on premises
Project files such as specifications, drawings and approvals often sit in a file store next to the tool. OpenProject has a documented Nextcloud integration, so a Nextcloud server inside the gap can hold those files while work packages link to them. Both systems must share the identity layer and must stay on the internal network, with no outbound route to a public file service. Confirm the integration version against your chosen OpenProject release before linking any production folders.
How an air-gapped project tool rollout runs
The sequence moves a project tool from a scoped edition decision to a supported, upgradable installation inside a disconnected network, with a documented output at each phase. Each step is checked before the next one starts, so the isolated environment never depends on live internet access.
Scope the edition and count seats
The team confirms which platform and edition fits the requirement, whether that is OpenProject Community or Enterprise, Plane Community, Commercial or Airgapped, or a Redmine build. Owners list the named users, paid roles, required single sign-on or LDAP features and the support model, then match each one to the edition that includes it. Plane's Airgapped edition is proprietary and licensed separately from the AGPL-3.0 Community edition, so the license terms and seat counts must be settled before any download. The output is a signed scope document with the chosen edition, the license or subscription records and the seat count. Ask the vendor to confirm in writing which features the air-gapped edition includes.
Build the staging and transfer process
Before anything crosses the boundary, the team sets up a connected staging network that collects the installers, container images, operating system packages, database extensions and documentation for the chosen release. Each artifact is recorded with a checksum and a source reference so the import side can verify it. The transfer path, whether removable media or a controlled data diode, is documented with its approval steps and logging. The output is a transfer manifest listing every artifact, its checksum and its approver, plus a written transfer procedure that the security team has reviewed.
Install offline in a test enclave
Engineers install the platform in a test enclave that has no route to the internet, using only the transferred artifacts. For OpenProject, this means the packaged or Docker-based install with PostgreSQL 16 or later and the pg_trgm, btree_gist and unaccent extensions. For Plane, it means the air-gapped install path with its PostgreSQL, Redis or Valkey, RabbitMQ and S3-compatible storage services, all reachable only inside the enclave. Any step that tries to fetch a package or image from outside is a failure to fix before proceeding. The output is a running test instance, a record of every offline dependency and a list of open issues.
Map identity and permissions
The team connects the test instance to the directory or identity provider that exists inside the network, such as LDAP, SAML or OIDC, and checks which options the chosen edition supports. Project roles, groups, portfolio visibility and admin rights are mapped from the source organization's model to the new platform's roles. Access reviews are scheduled with named owners so every role has a documented business justification. The output is a role matrix signed by the project management office and the identity owner, plus test logins for each role.
Import data from a supported source
Where a supported importer exists for the source system and version, the team runs a test import into the enclave and compares record counts, attachments, custom fields, statuses and user assignments with the source. The Jira importer for Plane and the OpenProject Jira Migrator have specific source-version limits, and the OpenProject migrator is documented as beta and suited only to test setups, so the team confirms those limits before choosing an approach. Where no importer fits, the data is exported to a documented format and loaded by a scripted process that is reviewed. The output is a reconciliation report listing each data type, the counts on both sides and every known loss or transformation.
Run acceptance testing
Business owners test the workflows that matter most: creating and tracking work items, running Gantt or agile views, time logging, reporting, notifications within the network and restoring from backup. Security staff check that logging, access controls and backups work as the scope document requires. Failures are logged with a severity, an owner and a retest date. The output is a signed acceptance record that lists each test case, its result and any accepted risks, approved by the sponsor before the cutover date is set.
Cut over to production
The team freezes changes in the source system, runs the final import from the reconciled process, verifies counts again and switches users to the production instance. Backups of the source system and the new production database are taken and tested before and after the switch. Support contacts, a rollback plan and a communication to users are confirmed in advance. The output is a cutover record with timestamps, verification results, the backup identifiers and the sign-off from the system owner.
Document and repeat the upgrade cycle
Each new release is treated as a repeatable transfer. The team follows the same staging, checksum and approval path, tests the upgrade in the enclave, reviews the release notes for database and configuration changes and then applies it in production with a rollback point. Vendor advisories and security updates are tracked on a set schedule, and the record of every release is kept with its checksums. The output is an upgrade runbook, a release log with checksum records for each artifact, and a named owner for the next review.
Evidence auditors and regulators ask for from an air-gapped project tool
This table maps each evidence item an assessor may request for a disconnected project tool to the component that produces it and the regulatory hook behind it. Read it as a checklist to agree with your auditor before go-live. DeployOpen prepares this evidence, but independent auditors and regulators assess it.
| Evidence item | What it shows | Component that produces it |
|---|---|---|
| Transfer and checksum logs for every package crossing the boundary | Each update bundle was verified for integrity and authenticity before import, supporting the software verification expectations in CIP-013-2 | Transfer procedure, hash records and signature checks kept outside the isolated network, plus the import log on the project tool host |
| Vendor remote access records and disablement methods | Who connected for vendor support, when, through which intermediate system, and how sessions were ended, relevant to CIP-005-7 where it applies | Jump host or access gateway logs, MFA records and the documented procedure for terminating active sessions |
| Audit logs of project and time changes | Who changed work packages, budgets, time entries and permissions, supporting the audit controls in 45 CFR 164.312(b) where project records touch ePHI | Project tool audit logging (confirm which events are captured in your edition), exported to a central log store inside the enclosure |
| Retention settings for project records | How long project records, attachments and logs are kept and how deletion is controlled, relevant to 17 CFR 240.17a-4 only where the records are business communications of a broker-dealer | Project tool retention configuration, database backup policy and the offline archive procedure |
| Inventory of installed versions | Exact versions of the project tool, database, container images, plugins and operating system, with the release notes used to approve each upgrade | Configuration management record maintained by the operator, plus the installed package or image manifest on each host |
What to ask an implementation partner before an air-gapped project
Start with the commercial and licensing questions, because they decide which software you can run inside the enclave at all. Ask which edition the partner would install and why, how many seats the quote counts and whether the count is by user or by paid role. For Plane, confirm whether the Airgapped edition is the proprietary build the partner recommends, since the Community edition is AGPL-3.0 and the Airgapped edition is not, and ask how the license key is issued and renewed without internet access. For OpenProject, ask which features in your requirements sit in Enterprise and whether the quote covers the on-premises license for the full named-user count. Ask for the activation procedure in writing, including what happens when a key expires inside the enclave and who can request a renewal.
Next, ask how every artifact crosses the gap. Require a written procedure for how release bundles, container images, patches and vulnerability data are downloaded, verified and imported, including which checksums or signatures are checked and where that record is kept. The control framing matters here: NERC CIP-013-2 expects procurement to address verification of software integrity and authenticity for vendor software and patches, so ask the partner to map their transfer steps to that expectation. Ask how upgrades are staged, whether the partner keeps a supported offline upgrade path between releases, and how a rollback works if an import fails. Also ask whether database migrations and attachment storage (PostgreSQL and S3-compatible object storage in Plane, PostgreSQL 16 or later in OpenProject) are carried in the same transfer or separately.
Then cover identity, data import and support. Ask how SSO or LDAP is configured when the directory sits inside the enclave and no outbound calls are allowed, including which identity provider endpoints are internal and how certificate and metadata updates are delivered. Ask whether a Jira import can run from inside the enclave, and whether it needs a connection to Jira Cloud, which the OpenProject Jira Migrator does not support (it reads Jira Data Center 10.x and 11.x and is in beta). Confirm which offline documentation and support hours are included, and who is on call for a broken import. Finally, ask who holds the transfer keys and media, who approves each crossing, and how every vendor or partner session into the enclave is logged and reviewed, so your audit evidence covers those sessions.
Air-gapped project management questions buyers ask first
What drives the cost of an air-gapped project management install?
Cost follows four components: the edition or license, the number of seats, the storage and infrastructure you run, and the transfer and testing process that moves software across the gap. Plane's Airgapped edition is proprietary, so its license terms apply on top of any hosting cost, while OpenProject Community is free but has no paid support. OpenProject Enterprise on premises is priced per named user per month, with minimums that depend on the tier, so seat count changes the bill quickly. One-time costs include the initial build, offline package validation and acceptance testing. Recurring costs include licenses or support, hosting, and each upgrade cycle. Ask any partner for a quote that separates these lines and states which edition each line assumes.
Can our internal team install and run this without a partner?
A capable team can, provided it already runs Linux servers, containers and PostgreSQL in production and can keep pace with the vendor's release cycle. Packaged OpenProject installs and Docker-based setups are well documented, and Plane documents Docker Compose and Kubernetes with Helm for self-hosting. The harder part is repeating the process every quarter: each upgrade must be built on a connected machine, scanned, transferred, verified and rolled out, often under change control. Ask yourself whether two or more people can own that cycle without pulling them from other work. If the answer is no, a fixed-scope partner engagement or a retainer for upgrades may be the practical option.
How long does an air-gapped project management rollout take?
The duration depends on scope rather than on the product alone. The main variables are the number of network zones, whether you need a Kubernetes cluster or a single Docker host, how many users and projects are migrated, which identity source must be connected, and how much acceptance testing your change process requires. Migration from Jira is a separate workstream, and the OpenProject Jira Migrator is still in beta and reads only Jira Data Center 10.x and 11.x, so importer scope can extend the plan. No duration is stated here because it should come from a written scope. Ask any partner to list each phase, its dependencies and the approvals it needs.
What does our side need to provide for an air-gapped deployment?
Several inputs come from your organization rather than the vendor. You need named network zones and the rules for moving files between them, an approver for each transfer of software and images, a decision on the identity source (for example Active Directory via LDAP or an SAML or OIDC provider), and named data owners who confirm project access rules. You also need a host or cluster in the isolated zone, a PostgreSQL service with the extensions OpenProject requires, and object storage if Plane is chosen. Document these inputs before scoping, because missing approvers are a common reason for delays in change-controlled environments.
Is Plane Community or OpenProject Community enough for air-gapped use?
Either may be enough for a small team with simple access rules, but the edition limits matter. Plane Community is AGPL-3.0 and matches the feature set of Plane Cloud's Free tier. On self-hosted Plane, SAML and OIDC are available on Pro and above, while LDAP and API-enabled audit logs are listed as Enterprise features. OpenProject Community is free and includes work packages, Gantt charts, agile boards, time tracking and dashboards, but single sign-on, LDAP group synchronization and custom branding are Enterprise features. If you must have single sign-on, directory sync or audit logs for regulated work, confirm these against the current pricing and edition documentation before choosing.
How do upgrades cross the air gap without breaking the system?
Upgrades are built on a connected staging machine, then moved across the gap as a verified bundle. The process usually includes these steps:
- Pull the new release images or packages and record their checksums.
- Scan and verify the artifacts, and keep a record of their origin for supply chain review, which NERC CIP-013-2 addresses for vendor software integrity.
- Transfer through your approved media process, then load images into a private registry inside the zone.
- Back up the database and object storage, apply the upgrade in a test environment, then in production.
- Keep a rollback plan and confirm the migration steps against the vendor release notes, such as the OpenProject release notes.
Ask partners how they handle database migrations, rollback and version pinning in your environment.
How upgrades cross the gap without breaking the audit trail
This sequence moves each OpenProject or Plane release across the air gap in a controlled way, so the running version, its checksum and its release date can be shown to an auditor at every change.
Watch vendor release notes on the connected side
A named engineer on the connected side tracks the vendor release channels for the platform in use, such as the OpenProject release notes or the Plane releases page on GitHub. Each candidate release is logged with its version number, publication date, and the security or breaking-change notes that apply to your edition. The output is a short release register entry that says whether the release is a candidate for the next window. Confirm with the vendor which channel carries security advisories for your specific edition, since Community and Commercial or Airgapped editions can follow separate release cycles.
Pull and verify the release package
The connected-side engineer downloads the container images, packages or Helm chart for the approved version and checks them against the publisher's published checksums or signatures before anything leaves the connected network. The package hashes and the verification result are written to the change record. Done means every artifact in the transfer set has a recorded hash that matches the publisher's value. If a hash does not match, the package is quarantined and the release is reported to the change board.
Stage the bundle in the transfer zone
The verified artifacts are placed in the controlled transfer zone, along with the manifest listing each file, its hash and the version it belongs to. Access to the zone is limited to named staff, and the copy-in event is logged. The bundle is not opened or executed in the transfer zone. Done means the manifest and bundle can be read back and matched to the release register entry from the first step.
Test the upgrade in a copy of production
The bundle is imported into an isolated copy of the production environment, including the database, object storage and configuration, and the upgrade is run exactly as it will run on the live system. Functional checks cover log-in, project and work package data, attachments, notifications and any integrations that stay inside the enclosure. The output is a test record with the starting version, the target version, the migration log and the pass or fail result for each check. Any migration error stops the change until it is resolved and retested.
Import into production and record the checksum
After the test passes, the same verified bundle is imported into production through the approved media path, and the imported files are hashed again on the isolated side. The new hashes are compared with the manifest so that the deployed images match what was tested and verified. The engineer records the running version, the release date, the checksums and the time of import in the configuration management database or change log. Done means the recorded values match the staged bundle exactly.
Schedule the change with a documented rollback plan
The upgrade is approved by the change board and scheduled in a maintenance window with a named owner and a named approver. The rollback plan states the database backup to restore, the previous image tags to redeploy, and the test that proves the rollback worked. Backups taken before the change are stored with their own hashes. Done means the change record links the release register entry, the test record, the checksums and the rollback plan, so an auditor can follow one upgrade from vendor release to running system.
Keep the version history for supplier evidence
Each release, its publication date and its verification record are kept together as a version history for the planning platform. This history supports supply chain evidence under the NERC CIP-013-2 requirement on verifying the integrity and authenticity of vendor software and patches, which applies if the utility's program covers this tooling. Ask your compliance lead to confirm which evidence the auditor expects and how long it must be kept. The output is a dated, versioned evidence file that can be produced on request.
How DeployOpen scopes and supports an air-gapped project tool
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source project tools inside the client's own disconnected network. For air-gapped project management, the work starts with the offline install path, the edition and license decision, and how packages and upgrades cross the boundary under written, fixed-scope agreements.
How we scope
- Confirm which project tool, edition and license model fits the classified or disconnected enclave before any build work starts
- Record the offline media path, transfer rules and who approves each package crossing the isolated boundary
- Define user counts, SSO or directory needs, importer sources and backup targets in a written, fixed-scope agreement
How we build
- Stage container images, database packages and dependencies on controlled media, with checksums verified before import into the isolated network
- Configure PostgreSQL, object storage, authentication and backups inside the client's own infrastructure, without outbound internet dependencies
- Test install, restore and upgrade rehearsals in a staging copy that mirrors the disconnected environment before go-live
How we hand over
- Deliver runbooks for installation, license activation without internet access, access control, backup and restore procedures
- Document the transfer workflow for each upgrade so the client's staff can repeat it across the gap with evidence of package verification
- Provide configuration records and control evidence mapped to the client's internal review needs, noting that independent auditors issue any attestation
How we support
- Offer ongoing support, upgrades and periodic testing as a retainer after handover, scoped in writing
- Plan each vendor release through a staged offline update cycle, including security patch review before deployment
- Confirm with the client's security and compliance teams how every change is recorded, approved and reviewed over time

