Perforce

Updated June 2026

Dousen connects your everyday Perforce work to your Jira tasks. Every changelist you open through Dousen is tied to a Jira issue, so a piece of work and the files that delivered it stay linked.

Changelists are keyed to Jira

When you open a changelist through Dousen, its description is stamped in a fixed format so you can always trace it back to the ticket it belongs to:

TEXT[dousen DOU-31] Alice Smith

The pattern is [dousen <JIRA-KEY>] <your name>. Anyone browsing the depot history can read a changelist and immediately know which task it came from.

What Dousen does with changelists

The actions below are available from the desktop app and the DCC addons, and they all require you to be signed in. The table is mostly useful if you are scripting or troubleshooting; day to day you trigger these from the UI.

Method & pathActionNotes
POST /api/vcs/open Open a changelist Body {"jira_key":"DOU-31"}; returns the new changelist id and the Perforce CL number.
POST /api/vcs/submit Submit a changelist Body {"changelist_id":"...","message":"...","project_id":"..."}; only the opener (or an admin) may submit. On success it can transition the linked Jira issue.
GET /api/vcs/info Stream / connection info Returns is_stream, stream_name, stream_root, server_version, client_name.
GET /api/vcs/shelved?jira_key=DOU-42 List shelved changelists Filtered by Jira key.
POST /api/vcs/unshelve Unshelve Body {"changelist_id":"<p4 CL#>"}.

All Perforce actions live under the /api/vcs/... namespace. There is no /api/changelists/... endpoint.

Streams support

Perforce Streams are detected automatically — there is nothing to configure. The DousenDesktop status bar tells you what kind of workspace you are connected to:

File locks inside your DCC

The Dousen addons for your content-creation apps show live Perforce status right where you are working. You can checkout (p4 edit), revert, sync, add, and associate files with the active task's changelist — all under your own Perforce identity.

Lock status refreshes roughly every 30 seconds and shows lines such as:

Validated export also runs a pre-export lock check: if a file it needs to write is locked by someone else, the export is blocked before it starts so you don't lose work.

Automatic workspace from the depot path

Each project has a depot_path. During onboarding, the Perforce Workspace page either detects an existing mapping or creates a client spec for you, so you don't have to hand-build a workspace.

Onboarding does not run a full sync — it only sets up the workspace mapping. Sync your files afterward from P4V or UnrealGameSync before you start working.

Auto Jira transition on submit

If your project admin set jira.on_submit_transition (a transition name) in the pipeline settings, submitting a Dousen changelist moves the linked Jira issue to that status automatically — for example, sending it to review the moment you submit.

Server connection (admin)

The server's connection to Perforce is configured by an administrator with environment variables. Artists never touch these — your personal Perforce identity lives in DousenDesktop.

VariablePurpose
DOUSEN_P4PORTPerforce server address.
DOUSEN_P4USERService user the server acts as.
DOUSEN_P4CLIENTService workspace used for the server's changelist operations.
DOUSEN_P4PASSWDOptional; falls back to the P4 ticket file if unset.

The server uses a single service workspace for its own changelist operations. Per-artist Perforce identity is handled entirely by DousenDesktop on each artist's machine.