---
title: Software Templates
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > Internal Developer Portal > Self-Service Actions > Software Templates
---

# Software Templates

{% callout %}
# Important note for users on the following Datadog sites: app.ddog-gov.com

{% alert level="danger" %}
This product is not supported for your selected [Datadog site](https://docs.datadoghq.com/getting_started/site). ().
{% /alert %}

{% /callout %}

Create Software Templates within Software Catalog to help developers quickly provision infrastructure and create microservices that align with your best practices.

## Create a Software Template{% #create-a-software-template %}

A Software Template is stored in a Git repository and serves as a reusable framework. [Build apps](https://docs.datadoghq.com/service_management/app_builder/) to collect inputs and pass them into the template repository to generate customized configurations.

To create a Software Template, you can:

- Start from an example using pre-built blueprints.
- Start from scratch by defining your own template and workflows.

### Start from an example{% #start-from-an-example %}

Use [App Builder Blueprints](https://app.datadoghq.com/app-builder/blueprints) to quickly configure an app or workflow. These blueprints provide working examples that you can customize by modifying inputs, integrating with source control or cloud providers, and adjusting permissions.

Example blueprints:

- **[Scaffold New Service blueprint](https://app.datadoghq.com/app-builder/apps/edit?activeTab=queries&showActionCatalog=false&template=scaffolding&viewMode=edit)**: Create a form that collects developer inputs, integrates with GitHub, and generates a new repository or pull request.
- **[Create S3 Bucket blueprint](https://app.datadoghq.com/app-builder/apps/edit?activeTab=queries&showActionCatalog=false&template=create-new-s3-bucket&viewMode=edit)**: Generate Terraform code for an S3 bucket using a form in GitHub.
- **[Provision EKS Cluster blueprint](https://app.datadoghq.com/app-builder/apps/edit?activeTab=data&showActionCatalog=false&template=provision-eks-cluster&viewMode=edit&visibleDataItemId=createOrUpdateFile0-action)**: Generate Terraform code for a Kubernetes cluster in GitHub.
- **[Provision RDS Instance blueprint](https://app.datadoghq.com/app-builder/apps/edit?activeTab=data&showActionCatalog=false&template=rds_provision_instance&viewMode=edit&visibleDataItemId=createDbInstance0-action)**: Provision an RDS instance in AWS through an API call.

To use a blueprint:

1. Select a blueprint in [**App Builder Blueprints**](https://app.datadoghq.com/app-builder/blueprints).
1. Customize the form fields to capture required inputs.
1. Click **Save as New App** to create an app linked to a templating workflow.

### Start from scratch{% #start-from-scratch %}

To build a Software Template from scratch:

1. Create a form using App Builder:

   1. Navigate to **Actions** > **App Builder** from the left-hand menu, and select **New App**.
   1. Enter a name and description, and use the drag-and-drop editor to create a form that collects the required parameters.
      - You can use the `Form` component or build a custom UI.
   1. Select **New Query**, and use the **Trigger workflow** action to call your workflow and pass in parameters.
      - Explore [Action Catalog](https://docs.datadoghq.com/actions/actions_catalog/) for built-in integrations, or use the `HTTP` action to interact with any integrations not available.
   1. Create a **Button** that submits the form and triggers your workflow.
   1. Save and publish the app.

1. [Create a workflow](https://docs.datadoghq.com/service_management/workflows/build/#create-a-custom-workflow) for your template:

   1. Navigate to [Workflow Automation](https://app.datadoghq.com/workflow) and click **New Workflow**.
   1. Enter a name, add relevant tags, and define the input parameters you want to collect from users.

1. Configure the templating workflow:

   1. Use GitHub, Gitlab, or HTTP [actions](https://docs.datadoghq.com/actions/actions_catalog/) to retrieve your template files.
   1. Use the Apply Template [action](https://docs.datadoghq.com/actions/actions_catalog/) to manipulate your template repository and pass in your input parameters.
   1. Use GitHub, Gitlab, or HTTP [actions](https://docs.datadoghq.com/actions/actions_catalog/) to upload the project files to the repository.
   1. Save the workflow.

{% image
   source="https://datadog-docs.imgix.net/images/tracing/software_catalog/templating-workflow.74014b0bbe4b9398fee4f3b2f0980ff2.png?auto=format"
   alt="Workflow for building Software Template automations" /%}

Test your app and workflow:

1. Click **View App** to preview the app as a standalone page.
1. Monitor the templating process in [Workflow Automation](https://app.datadoghq.com/workflow).

## Publish your app{% #publish-your-app %}

Once your Software Template is configured and tested, publish it so your team can use it. The publishing flow lets you:

- Define permissions to control access.
- Add the app to a Dashboard or to Self-Service Actions for easy discovery.

{% image
   source="https://datadog-docs.imgix.net/images/tracing/software_catalog/self-service-publish.85266ae3c6c5af5c2c1085a490f414a4.png?auto=format"
   alt="Publish to Self-Service" /%}

## Available templating actions{% #available-templating-actions %}

The following actions are available for Software Catalog in Datadog App Builder and Workflow Automation. For a complete list, see [Action Catalog](https://docs.datadoghq.com/actions/actions_catalog/).

- **Templating**
  - "Apply template": Pass input parameters into a set of files.
- **GitHub**
  - "Create or update file": Create or modify files in a GitHub repository.
  - "Edit configuration file": Modify YAML or JSON configuration files.
  - "Trigger GitHub Actions workflow": Initiate a GitHub Action.
  - "Search repositories": Retrieve a list of repositories.
  - "Create pull request": Open a pull request.
- **GitLab**
  - "Create file": Create a file in a GitLab repository.
  - "Create project": Create a GitLab project.
- **Azure DevOps**
  - "Run pipeline": Trigger a pipeline run in Azure DevOps.
- **Retrieve Service Information**
  - "List entity definitions": Retrieve all service definitions from Datadog Software Catalog (v3.0 and prior).
  - "Get service dependencies": Retrieve a service's upstream and downstream dependencies.
- **Approvals**
  - "Make a decision": Use Slack or Microsoft Teams to solicit an approval.
    - Use integrations with ServiceNow, Jira, or HTTP calls if you have an existing change management process.
- **HTTP**
  - "Make request": Make an HTTP request to interact with any external API.
- **Data Transformation**
  - "Expression", "Function": Perform data transformations with JavaScript.
    - Use Bits AI to assist with writing custom JavaScript code.
- **Private Actions**
  - To interact with private resources, use the [Private Action Runner](https://docs.datadoghq.com/actions/private_actions/).

## Further reading{% #further-reading %}

- [Remediate incidents faster with App Builder](https://www.datadoghq.com/blog/app-builder-remediation/)
- [Learn about App Builder](https://docs.datadoghq.com/service_management/app_builder/)
- [Learn about Workflows](https://docs.datadoghq.com/service_management/workflows/)
