# uip rules

> Syntax and options for `uip rules`, which scaffolds, validates, and debugs UiPath Business Rules (DMN) projects and reads the rules deployed to Orchestrator.

`uip rules` is the Business Rules tool. It creates and maintains Business Rules projects on disk, where each rule is a DMN decision table in a `.dmn` file, and reads the business rules deployed to Orchestrator folders. Install it with `uip tools install rules`, or invoke `uip rules …` and let auto-install run. Refer to [Tools (plugins)](./concepts-tools.md) for the install model.

A Business Rules project is one project inside a solution. Packing, publishing, and deploying it goes through [`uip solution`](./uip-solution.md).

## Commands

| Command | Operates on | Purpose |
|---|---|---|
| [`init`](./uip-rules-init.md) | Local filesystem | Create a Business Rules project seeded with one decision table and register it in the enclosing solution. |
| [`refresh`](./uip-rules-refresh.md) | Local filesystem | Regenerate `entry-points.json` and `bindings_v2.json` from the project's `.dmn` files. |
| [`validate`](./uip-rules-validate.md) | Local filesystem | Check the project's `.dmn` files and its `entry-points.json` for what Studio Web blocks publish and debug on. |
| [`debug`](./uip-rules-debug.md) | Studio Web | Upload the project's solution to Studio Web and evaluate it once through the rules engine. |
| [`list`](./uip-rules-list.md) *(Preview)* | Orchestrator | List the business rules deployed to a folder. |
| [`get`](./uip-rules-get.md) *(Preview)* | Orchestrator | Get one deployed business rule by name. |
| [`versions`](./uip-rules-versions.md) *(Preview)* | Orchestrator | List the versions of a deployed business rule. |
| [`describe`](./uip-rules-describe.md) *(Preview)* | Orchestrator | Get the entry points of a deployed rule's active version, with their input and output argument schemas. |

`list`, `get`, `versions`, and `describe` are labeled Preview in the command help. Refer to [Versioning](./versioning.md#per-command-stability) for what the Preview label means.

## Synopsis

```
uip rules init <name> [--force] [--skip-solution-registration]
uip rules refresh <project-path>
uip rules validate <project-path>
uip rules debug <project-path> [-i <json|@file.json>] [--explain] [--folder-path <path> | --folder-key <key>] [--timeout <seconds>] [--login-validity <minutes>]

uip rules list (--folder-path <path> | --folder-key <key>) [-l <number>] [--offset <number>]
uip rules get <rule-name> (--folder-path <path> | --folder-key <key>)
uip rules versions <rule-name> (--folder-path <path> | --folder-key <key>) [-l <number>] [--offset <number>]
uip rules describe <rule-name> (--folder-path <path> | --folder-key <key>)
```

All commands honor the [global options](./global-options.md) (`--output`, `--output-filter`, `--log-level`, `--log-file`). Exit codes follow the shared [contract](./exit-codes.md).

## Project layout

`uip rules init` creates a project directory with these files:

| File | Contents |
|---|---|
| `project.uiproj` | Project name and `ProjectType: "BusinessRules"`. |
| `Business rule.dmn` | The seeded decision table. |
| `entry-points.json` | The rule's entry points, derived from the `.dmn` files. |
| `bindings_v2.json` | The rule's resource bindings, derived from the `.dmn` files. |

`refresh`, `validate`, and `debug` take the project directory as `<project-path>`. The directory must contain `project.uiproj` and at least one `.dmn` file at its top level.

## Typical flow

1. Scaffold the project with [`uip rules init`](./uip-rules-init.md).
2. Edit the `.dmn` file, in Studio Web or in a local editor.
3. After editing a `.dmn` file outside Studio Web, regenerate the entry points with [`uip rules refresh`](./uip-rules-refresh.md).
4. Check the project with [`uip rules validate`](./uip-rules-validate.md).
5. Evaluate the rule with sample inputs with [`uip rules debug`](./uip-rules-debug.md).
6. Pack, publish, and deploy the solution with [`uip solution`](./uip-solution.md).
7. Read the deployed rule and its argument schemas with [`uip rules describe`](./uip-rules-describe.md) when binding it from a BPMN process, RPA workflow, or case.

## See also

- [`uip solution`](./uip-solution.md) for packing, publishing, and deploying the solution that holds the rules project.
- [`uip traces`](./uip-traces.md) for reading the trace that `uip rules debug --explain` publishes.
- [Global options](./global-options.md) and [Exit codes](./exit-codes.md) for the contracts shared by every command.
