docs/documentation/platform/pki/migration.mdx
Certificate Manager now operates as a single project per organization.
Certificate Authorities, policies, and profiles live at the product level — shared across your organization, managed by admins.
Applications are where teams work. Each Application represents a service or workload (e.g., payments-api, mobile-backend) and has its own members, certificates, alerts, syncs, and approval policies.
Organization
└── Certificate Manager
├── Certificate Authorities ← shared, admin-managed
├── Certificate Policies ← shared, admin-managed
├── Certificate Profiles ← shared, admin-managed
└── Applications
├── payments-api
│ ├── Members, Enrollment Methods
│ └── Certificates, Alerts, Syncs
└── mobile-backend
└── ...
| Before (Projects) | After (Applications) |
|---|---|
| Everything in one project | Shared infrastructure + scoped Applications |
| Project-level access (see everything) | Application-level access (see only your service) |
| Enrollment baked into profiles | Enrollment configured per Application |
| Custom roles + conditions for scoping | Simple roles: Admin, Operator, Auditor |
| Alerts/syncs at project level | Alerts/syncs scoped to each Application |
What this gets you:
For details on the new access control model, see Access Control.
Your existing setup keeps working. Certificates will keep renewing, alerts will keep firing, syncs will keep running. You're not forced to migrate immediately.
If your organization has multiple Certificate Manager projects, all of them remain accessible. The designated active project loads by default, and legacy projects can be opened directly to be wound down on your own timeline.
<Note> **Applications are scoped to the active project.** Within an organization that contains multiple Certificate Manager projects, the Applications experience is available exclusively on the project designated as active under **Organization Settings → Products → Certificate Manager**. Applications are not supported in legacy projects. </Note>Plan your migration before starting:
If you have CAs, policies, or profiles spread across multiple existing projects, consolidate them first:
<Steps> <Step title="Designate the active project"> Navigate to **Organization Settings → Products → Certificate Manager**. In the projects table, mark the project you intend to consolidate into as **Active**. All members and integrations across the organization will subsequently resolve to this project. Designating an active project also unlocks Applications. Until one is selected (in organizations with multiple Certificate Manager projects), Applications cannot be created or administered. </Step> <Step title="Export entities from legacy projects"> From the same projects table, locate a legacy project, open its actions menu, and select **Export to active project**.The export copies the following resources into the active project:
- Internal and private Certificate Authorities, including the full chain and key material (re-encrypted under the active project's KMS key)
- Certificate Policies
- Certificate Profiles that reference a self-signed or internal CA
External CAs and any profiles dependent on them are excluded from the export. Alerts, certificate syncs, and approval policies are not exported and must be reconfigured inside Applications later.
<Note>
Resources are copied rather than moved, originals remain in the legacy project. When a CA, policy, or profile name collides with an existing resource in the active project, the exported copy is renamed automatically. Once the export completes, treat the legacy project as read-only and direct new work to the active project.
</Note>
Repeat for each remaining legacy project.
Once you've consolidated your projects (or if you only have one), go to your active project to set up Applications. All the steps below happen inside the active project.
<Steps> <Step title="Create your Applications"> Applications represent services or workloads that need certificates (e.g., `payments-api`, `mobile-backend`).1. Go to **Certificate Manager → Applications**
2. Click **Create Application**
3. Name it after the service it represents
Create one Application for each service. Think about ownership: who is responsible for certificates for this service?
1. Go to the Application's **Settings** tab
2. Find the **Certificate Profiles** section
3. Attach the profiles this Application needs
4. Configure [enrollment methods](/documentation/platform/pki/applications/enrollment-methods/overview) (API, ACME, EST, SCEP) for each profile
One profile can serve multiple Applications with different enrollment methods.
**[Alerts](/documentation/platform/pki/applications/alerting/overview):** Go to **Settings → Alerting** and create alerts for expiration, issuance, renewal, or revocation.
**[Syncs](/documentation/platform/pki/applications/certificate-syncs/overview):** Go to the **Certificate Syncs** tab and configure where certificates should be pushed.
**[Approval policies](/documentation/platform/pki/applications/approvals):** Go to **Settings → Approval Policies** and configure approval requirements for each profile.
<Note>
Legacy alerts, syncs, and approval policies at the project level will keep working. You can modify or delete them, but new ones must be created inside Applications.
</Note>
1. Go to the **Members** tab
2. Add team members and assign roles:
- **Admin** — Configure enrollment, syncs, alerts, approvals. Manage members.
- **Operator** — Issue, renew, revoke certificates
- **Auditor** — View-only access
Members also need the **Product Member** role at the product level to access Applications they're assigned to.
- **ACME clients** (Certbot, [cert-manager](/documentation/platform/pki/guides/applications/k8s-cert-manager), etc.)
- **[Infisical Agent](/documentation/platform/pki/guides/applications/infisical-agent)** — Update to reference `application-name` and `profile-name`
- **EST/SCEP clients**
- **Terraform** — Update `infisical_pki_*` resources
- **API integrations**
Legacy enrollment endpoints continue to work, but new issuance should use the Application-based endpoints.
1. Communicate the change to your team
2. Point them to their assigned Applications
3. Stop creating new resources in legacy projects
4. All new work happens in the active project, inside Applications
If you have questions about migration, contact [email protected].