> For the complete documentation index, see [llms.txt](https://docs.harmony.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.harmony.io/software-management/managing-contracts.md).

# Managing Contracts

The Contracts feature in Harmony's Software Management module lets you create, track, and manage vendor contracts directly alongside the applications they support. From capturing pricing details and renewal dates to monitoring spend across your portfolio, everything you need to stay on top of your software commitments is available in one place.

This article explains how contracts work, how to create and manage them, and how to get the most out of the visibility and automation features built into the experience.

***

### What You Can Track on a Contract

Each contract you create can capture a comprehensive set of details:

**Core contract details:**

* Contract name, vendor name, plan type, and status (Active, Pending, Expired, Renewed, or Cancelled)
* Lifecycle dates: start date, end date, auto-renewal toggle, cancellation notice period, and an auto-calculated renewal date

**Flexible pricing models to match how you are billed:**

* **Seat-based** - seat count (or unlimited seats), cost per seat, and billing frequency
* **Flat fee** - a fixed recurring or one-time cost
* **Usage-based** - variable costs tied to consumption
* **Custom** - any other structure that does not fit standard models

**Contract line items:**

* Individual line items representing each component of a contract (for example, separate modules, add-ons, or user tiers)
* Each line item can be linked to a specific application so it appears on that application's Contracts tab

***

### Contract Value Auto-Calculation

You do not need to manually tally up line items to determine a contract's total value. Harmony can derive the contract value automatically:

* **On contract creation** - if you provide line items but leave the contract value blank, the total value and currency are calculated automatically from those items.
* **Manual override** - if you explicitly enter a contract value during creation, that value and currency are preserved exactly as entered.
* **Empty contracts** - if no line items exist, the contract value remains whatever you provided, or defaults to 0.
* **Live recalculation** - as you add, edit, or remove line items after creation, the contract value updates automatically to reflect the current sum.

This keeps your contract totals accurate without requiring manual updates every time something changes.

***

### Creating Contracts

#### Single Contract Creation

To create a contract, navigate to the Contracts page within Software Management and use the creation form. Fill in the core details, select a pricing model, and add any relevant line items. If you want the contract to be visible on a specific application's Contracts tab, make sure each line item is linked to the appropriate application.

#### Bulk Contract Creation

When you need to set up contracts across a large number of applications at once, you can create multiple contracts in a single action rather than repeating the process one at a time. This significantly reduces setup time when onboarding a large software portfolio.

#### Draft Contracts

Before publishing a contract, you can save it as a **Draft**. This lets you build out contract details incrementally, review them with your team, and correct any issues before the contract becomes active in your records.

When you are ready to publish, validation checks run automatically to catch any incomplete or incorrect data before the contract goes live. This reduces the risk of publishing contracts with missing information.

***

### Managing Contract Status

You have full manual control over the status of any contract. From the contract detail page, you can set a contract to any of the following statuses:

| Status        | When to Use                                             |
| ------------- | ------------------------------------------------------- |
| **Active**    | The contract is currently in effect                     |
| **Pending**   | The contract has been agreed but has not yet started    |
| **Expired**   | The contract term has ended                             |
| **Cancelled** | The contract was terminated before its end date         |
| **Draft**     | The contract is being prepared and is not yet published |
| **Renewed**   | The contract has been rolled over into a new term       |

Previously, statuses like Expired and Pending were computed automatically and could not be changed. You can now explicitly set any status to reflect real-world situations such as early terminations, data corrections, or bulk imports where computed states would not be accurate.

Auto-renewing contracts display a dedicated **renewal date** column in the contracts table, so it is always clear when each contract is due to roll over.

***

### Spotting Unlinked Contract Line Items

Linking a line item to an application is what makes a contract visible in that application's Contracts tab. If a line item is not linked, it will not appear in any application view.

To help you keep everything connected, Harmony flags unlinked line items with clear visual indicators:

* An **amber warning icon** with a "No related application" tooltip appears next to unlinked items in the contracts table and the renewal management table.
* In the add/edit contract item modal, unlinked items are highlighted with an **amber border** and a "No related application" label.

When you see these indicators, edit the line item and link it to the appropriate application to ensure it surfaces in the right place.

***

### Contract Insight Widgets

At the top of the Contracts page and within individual application Overview tabs, a row of insight widgets gives you an at-a-glance summary of your contract landscape without requiring you to manually scan the table.

The following widgets are available:

* **Annual Cost** - displays the total annual contract cost across the Contracts page, or scoped to a single application when viewed in that application's Overview tab.
* **Active Contracts** - shows the count of contracts currently in an Active status. Clicking this widget filters the table to show only active contracts.
* **Upcoming Renewals** - visible on the Contracts page, this widget highlights contracts approaching their renewal dates so you can take action before they auto-renew or expire.

These widgets update dynamically as your contract data changes.

***

### Viewing Contracts Per Application

Every application in the Software Management module has a dedicated **Contracts** tab. This tab shows all contracts that have at least one line item linked to that application, giving you a focused view of the commitments associated with each tool.

The application's Overview tab also includes the Annual Cost and Active Contracts widgets so you can assess spend at a glance without switching to the full Contracts page.

***

### Tips for Getting the Most Out of Contracts

* **Link every line item to an application** - unlinked items will not appear in application views and are flagged with amber indicators. Resolve these promptly to keep your data complete.
* **Use Draft status during bulk imports** - when importing a large number of contracts, save them as drafts first so you can review and validate before publishing.
* **Let auto-calculation handle totals** - avoid manually entering contract values when you have line items. Allow Harmony to calculate the total so it stays in sync as items change.
* **Set status manually when needed** - if a contract was terminated early or imported with an incorrect state, update the status directly from the contract detail page rather than waiting for automatic transitions.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.harmony.io/software-management/managing-contracts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
