# Policy Workflow Step 20

An “approve\_page” needs a document source to approve a document. Therefore, we are adding a document source below the “approve\_page” by clicking on the “Documents” button in the top navigation bar.

The “approve\_documents\_grid” has the permission for the Standard Registry, must be active by default is of data type “approve.”

In contrast to the installer case where we create documents and send them for approval, we have no dependencies on the incoming documents. We take account of this by adding the “save\_new\_approve\_documents” dependency.

Next, we add the required custom UI fields on the approval UI form. Note that since this is a general approval form we do not have to specify a schema or an entity type for the UI.

![](/files/g6BsfsRY1dfgU4SBPNbz)

Below are the screenshots of the field inputs

![](https://i.imgur.com/QhLlhqw.png)

![](https://i.imgur.com/TEIQq0w.png)

![](https://i.imgur.com/XE0ipG7.png)

![](https://i.imgur.com/sFnas74.png)

![](https://i.imgur.com/uH3CC8S.png)

**Programmatically this workflow step looks like this:**

```
        // Grid listing VCs of the Installers, which require approval from the Standard Registry.
        {
          "tag": "approve_documents_grid",
          "defaultActive": true,
          "permissions": [
            "OWNER"
          ],
          "blockType": "InterfaceDocumentsSourceBlock",
          // Displays all VC documents from all Installers.
          "onlyOwnDocuments": false,
          "dataType": "approve",
          "dependencies": [
            // Refreshed when a VC is stored in the DB
            "save_new_approve_document"
          ],
          "uiMetaData": {
            "fields": [
              {
                "name": "document.issuer",
                "title": "Owner",
                "type": "text",
                "tooltip": "Installer did"
              },
              {
                "name": "createDate",
                "title": "Create Date",
                "type": "text"
              },
              {
                "name": "document",
                "title": "Document",
                "tooltip": "",
                "type": "button",
                "action": "dialog",
                "content": "View Document",
                "uiClass": "link",
                "dialogContent": "VC",
                "dialogClass": "",
                "dialogType": "json"
              },
              {
                "name": "status",
                "title": "Status",
                "type": "text"
              },
              // Column with the Approve/Reject buttons
              {
                "name": "status",
                "title": "Operation",
                "tooltip": "",
                "type": "block",
                "action": "block",
                "content": "",
                "uiClass": "",
                "bindBlock": "approve_documents_btn"
              }
            ]
          },
          "children": [],
          "filters": {}
        },
```


---

# Agent Instructions: 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:

```
GET https://guardian.hedera.com/guardian-dev/guardian/standard-registry/policies/policy-creation/creating-a-policy-through-policy-configurator/policy-workflow-step-20.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
