Skip to main content

Overview

Once a Project exists, you manage it through a handful of lifecycle operations: rename it, duplicate it (copy or fork), merge a fork’s changes back, transfer it to a new owner, share its content with other Projects, and archive it when the work is done.

How it works

  • Copying creates an independent duplicate. What gets copied depends on the Project type: DFS Projects copy through the UI in one step, while Git-based Projects support deep and reference copies.
  • Forking (DFS Projects) creates a separate Project whose changes can be reviewed and merged back into the original, so many contributors can work independently.
  • Only the Project owner can rename, transfer, or archive a Project. See the permission tables.
Best practice: Before starting from scratch, copy or fork an existing Project; it’s faster and keeps setups consistent across the team. Rename the copy, and invite the original owner as a contributor for guidance.

Rename a Project

Renaming is quick but can’t be undone, and it has consequences: the Project’s endpoints are automatically unpublished and get new URLs when re-published, and local copies must be cloned again because their metadata points at the old name.
  1. Go to Settings > Access & Sharing and enter a new name. Domino checks that the name isn’t already in use.
  2. Read the warning Domino shows. If any of the consequences are unacceptable, click Cancel.
  3. Click Rename Project. You can keep working in the Project immediately.

Copy a DFS Project

Copying a DFS Project creates a duplicate under your account with the same files and restricted Project status. The copy does not include Project settings, run history, or scheduled Jobs.
  1. Open the Project’s Overview page and click the copy icon.
  2. Enter a name for the new Project and click Copy.

Copy a Git-based Project

Copying a Git-based Project bootstraps new work from a well-organized original. Two copy modes cover different needs:
  • Deep copy creates an independent copy of the original repository. Use it to build a new Project from an existing one. Available from the UI or the API.
  • Reference copy points the new Project at the same main Git repository, so changes in one Project appear in all referenced Projects. Use it when parallel Projects rely on one shared repository, a common pattern for statistical analysis in pharmaceutical work. Available only through the API.
What a copy includes:
CopiedNot copied
Project overviewTags, description, and README
Project materialsFiles, artifacts, code, Datasets and imported Git repositories, imported ProjectsExternal data sources, audit data, run history, discussion history
Project settingsEnvironment variables, Hardware Tier, Environment, results, exports, integrations, and visibilityAccess and sharing
OtherPublished Apps, Domino endpoints, and Launchers
To create a deep copy from the UI:
  1. Open the Git-based Project and click Copy.
  2. Enter a name for the new Project, then click Next.
  3. Enter your Git credentials, then click Copy.
To create a copy from the API, POST to the copy-project endpoint with either a deepCopy or referenceCopy spec:
import json
import requests

project_id = 'asdf1234'
code_repo_credential_id = 'asdf123'
url = f'https://host.com/api/projects/v1/projects/{project_id}/copy-project'
body = {
    'name': 'my_new_project',
    'visibility': 'private',
    'copyDatasets': True,
    'gitCodeRepoSpec': {
        'credentialId': code_repo_credential_id,
        # Deep copy: an independent new repository.
        'deepCopy': {
            'visibility': 'private',
            'newRepoName': 'new_git_repo',
            'newRepoOwnerName': 'git_user'
        }
        # Reference copy instead: share the original repository.
        # 'referenceCopy': {'mainRepoUrl': 'https://github.com/user/repo.git'}
    }
}
headers = {
    'X-Domino-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
}
requests.post(url, data=json.dumps(body), headers=headers)
Limitations and requirements:
  • Only GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise are supported. Bitbucket and other providers are not.
  • SSH credentials are not supported; use a personal access token with repository read and write permissions.
  • The GitHub repository you copy must be a template repository.
  • Collaborators on the parent Project are not copied.
  • Datasets are copied only through the API with copyDatasets: True. A Dataset being copied is locked in a “copying” state; if you see the error One or more of the datasets in this project are already being copied elsewhere, the new Project was not created. Wait for the in-flight copy to finish and retry the same API call.

Fork a DFS Project

Forking copies a Project’s files into a new, separate Project for independent development. Changes in the fork can later be reviewed and merged back into the original. You must be the owner, a contributor, or a results consumer to fork a Project.
  1. Open the Project overview and click Fork.
  2. Enter a name for the fork.
The fork includes all files with their revision history, environment variables, Launchers, and restricted Project status. It does not include run history, Project settings (collaborators, Environment), or discussion history. Projects involved in a fork link to their related forks on the overview page.

Merge a fork back

After making changes in the fork, click Request Review on its overview page (owner or contributor required). Review the changes and describe them in a message; contributors on the main-line Project are notified. When a contributor accepts the review, Domino merges the changes and writes a new revision of the main-line Project. Click Reviews in the navigation pane to see the history and status of review requests.

Transfer Project ownership

You can transfer any Project you own to another user or organization, for example to promote a private scratch Project into a shared team Project. Go to Settings > Archive Project or Transfer Ownership, click Transfer Ownership, and enter the new owner’s username or organization name. The new owner receives an email (organizations don’t).
Any API endpoint in the Project stops serving requests after the transfer. The new owner can re-publish it, but the URL changes and your API key stops working unless you’re given contributor access. Re-point external callers and coordinate around the downtime.
To transfer without endpoint downtime: give the new owner contributor or results consumer access, have them fork the Project and re-publish the endpoint there, point your systems at the new URL, then shut down the original endpoint and archive the original Project.

Export and import Project content

One Project can import another Project’s files, environment variables, or both. During runs, each imported Project’s directory is mounted read-only at /mnt/<username>/<project name> and pulled in alongside the current Project’s files.
Importing changes your own Project’s path from /mnt to /mnt/<username>/<project name>. Replace any hardcoded /mnt paths in your code with the $DOMINO_WORKING_DIR environment variable.
To export, go to Settings > Exports in the source Project and enable exports for Files and Environment variables separately, or export the files as a Python or R Code Package. Nothing can be imported from a Project with no export enabled. By default the latest revision is exported; to export the revision a specific Job produced, tag that Job with the exact string release on the Jobs page. To import, you need Project Importer, Contributor, or Owner permission on the source Project:
  1. In the destination Project, go to Code and click Other Projects.
  2. Click Import a Project and enter the source path as <username>/<project-name>, then click Import.
Imports are not transitive: if Project A is imported into Project B and you import B, you see only B’s contents. See Troubleshoot imports if an import misbehaves.

Archive a Project

Archive Projects you no longer need. Archiving stops all scheduled runs and runs in progress, blocks CLI file uploads and downloads for collaborators, and removes any globally discoverable published App. Go to Settings > Archive Project or Transfer Ownership and click Archive This Project. To unarchive a Project, contact your Domino representative.