# Installation Guide

{% hint style="warning" %}
Before installing this Power App, contact TSANet to obtain credentials and URL for the Beta and Production environments
{% endhint %}

## Installation

<details>

<summary>Installation from the AppSource</summary>

1. Open the link <https://appsource.microsoft.com/en-us/product/dynamics-365/tsanet-org.tsanetd365>
2. Push the Contact button

![](/files/iXICE01L6hVHEf1GqMLR)

3. Confirm all the information.

</details>

<details>

<summary>Manual Installation of the Package</summary>

1. Open the git hub <https://github.com/tsanetgit/MS_Power_App> and download the latest managed solution.

![](/files/MYswCsOSqcgwWCptCYvN)

2. Open [https://make.powerapps.com](https://make.powerapps.com/) in your Microsoft tenant.
3. Select your environment.

![](/files/QzwTghE0h4sE26ucq63l)

4. Click on Import Solution

![](/files/EkGUDjduW8PF4BOJznxk)

5. Select downloaded managed solution.
6. Confirm by the Next button.

![](/files/eZwQpq8gFIsC4SwUiRy2)

7. Create Connections and confirm by the Next button.

![](/files/fX2uFck4LrqbdbLD0ox7)

8. Enter your credentials and URL and then click on Import

{% hint style="warning" %}
Contact TSANet for Credentials and URL
{% endhint %}

![](/files/7YlK0GabYc9VdJ47YV0K)

9. The package is now being installed.

</details>

## Configuration

<details>

<summary>Configuration with TSANet Credentials</summary>

The packages uses Basic Authentication to communicate with TSANet Connect. An API user is set in environment’s variables during the package installation. You can change credentials in [https://make.powerapps.com](https://make.powerapps.com/)

![](/files/qTQbCaRBy8KHKDUN7yQO)

### Environments

TSANet has the following environments.

* **Developer:** Only used by developers who are making changes to the package
* **Beta:** Used by Members to test before moving to production
* **Prod:** Used by Members in Production

{% hint style="warning" %}
Contact TSANet for credentials and URL to the correct environment.
{% endhint %}

</details>

<details>

<summary>Webhooks</summary>

You can register the webhook in the configuration using the " Register webhook " button. The system then registers your Power Automate endpoint in the TSANET, and new cases and notes will be processed directly to your system.

<figure><img src="/files/GP0oFzeUmZkWICaV60dw" alt=""><figcaption></figcaption></figure>

</details>

## Use TSANET in your solution

<details>

<summary>Add components to application.</summary>

1. Open [https://make.powerapps.com](https://make.powerapps.com/) in your Microsoft tenant.
2. Select your environment.

![](/files/AaLpJxXWM45irsjpUwUk)

3. Open existing unmanaged solution or create the new
4. Select Apps in the menu and open your application

![](/files/I98KdTI4IFRKM90J7jIg)

5. Click on edit

![](/files/9hg4U9F0SSHSNFqX6MVA)

6. Click on New

![](/files/Noy8wrirOWJuv3jQf9mB)

7. Select Dataverse table

![](/files/JUAb6a3rMSFlwGbeQVZU)

8. Select TSANET tables

![](/files/zDpBm8v2UnU7z50wiErc)

9. Click on Add

</details>

<details>

<summary>Setup TSANET table relationship</summary>

You must create relationships between tables to use TSANET within your existing solution.

1. Open [https://make.powerapps.com](https://make.powerapps.com/) in your Microsoft tenant.
2. Select your environment.

![](/files/FXhrCTCNzt4GdVlsM0wP)

3. Open existing unmanaged solution or create the new
4. Open Tables -> TSANET Case

![](/files/6VOHX9oTIC7trrz0L6cs)

5. Create new column “Your table” with details below:

![](/files/PaeZRtAoqUpKflN7N14U)

</details>

<details>

<summary>Add TSANET Case subgrid to the form</summary>

Once you have created relationship, you can add the subgrid to the form.

1. Open [https://make.powerapps.com](https://make.powerapps.com/) in your Microsoft tenant.
2. Select your environment.

![](/files/2UH7uXQ0UZ6MEw3Rx6AV)

3. Open existing unmanaged solution or create the new.
4. Open Tables -> “Your custom table”
5. Open the main form
6. Select Components -> Grid -> Subgrid
7. Check “Show related records”
8. Select table “TSANet Cases” and confirm by the button “Done”

![](/files/6qXa6tb69rB7SZeFIhXM)

</details>

<details>

<summary>Assign Permissions</summary>

Users must have assigned “TSANET User” role, or you can modify your role with the following permissions.

Permissions:

* TSANET Case
* TSANET Note
* TSANET Response

![](/files/L0PkGPaKXZtSC2Cz0241)

You can follow these instructions to assign the role.

1. Open <https://admin.powerplatform.microsoft.com/>
2. Select your environment
3. Click on settings

<figure><img src="/files/Qtln2TZrH5x77slka7Xr" alt=""><figcaption></figcaption></figure>

4. Click on Users + permissions -> Users
5. Select the user
6. Click on Manage security roles

<figure><img src="/files/EBW4ePdxCEOdTPo9njM0" alt=""><figcaption></figcaption></figure>

7. Select the “TSANET User” role and click on save

</details>

## Package Details and Configuration Options

<details>

<summary>Data model</summary>

<figure><img src="/files/6sGZDJgrjcmuXY4dbqhP" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>TSANet Case</summary>

A collaboration case within the TSANet framework that serves as the primary record for tracking collaboration between member organizations during a support issue.

| **Logical Name**          | **Display Name**              | **Attribute Type** | **Description**                                                 | **Additional data**                                                                      |
| ------------------------- | ----------------------------- | ------------------ | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| ap\_companycode           | Company Code                  | Integer            | Company Code                                                    | Minimum value: 0 Maximum value: 2147483647                                               |
| ap\_companyname           | Company Name                  | String             | Company Name                                                    | Format: Text Max length: 100                                                             |
| ap\_direction             | Direction                     | Picklist           |                                                                 | Options: 0: Inbound 1: Outbound Default: 1                                               |
| ap\_formjson              | Form JSON                     | Memo               | The current form data from the TSANET.                          | Format: Text Max length: 200000                                                          |
| ap\_name                  | ID                            | String             | TSANET Unique identifier                                        | Format: Text Max length: 100                                                             |
| ap\_sentjson              | Sent JSON                     | Memo               | Sent JSON data, only for outbound cases for logging purposes.   | Format: Text Max length: 200000                                                          |
| ap\_submittercasenumber   | Submitter Case Number         | String             |                                                                 | Format: Text Max length: 100                                                             |
| ap\_tsanetcaseid          | TSA Net Case                  | Uniqueidentifier   | Unique identifier for entity instances                          |                                                                                          |
| createdby                 | Created By                    | Lookup             | Unique identifier of the user who created the record.           | Targets: systemuser                                                                      |
| createdon                 | Created On                    | DateTime           | Date and time when the record was created.                      | Format: DateAndTime                                                                      |
| createdonbehalfby         | Created By (Delegate)         | Lookup             | Unique identifier of the delegate user who created the record.  | Targets: systemuser                                                                      |
| importsequencenumber      | Import Sequence Number        | Integer            | Sequence number of the import that created this record.         | Minimum value: -2147483648 Maximum value: 2147483647                                     |
| modifiedby                | Modified By                   | Lookup             | Unique identifier of the user who modified the record.          | Targets: systemuser                                                                      |
| modifiedon                | Modified On                   | DateTime           | Date and time when the record was modified.                     | Format: DateAndTime                                                                      |
| modifiedonbehalfby        | Modified By (Delegate)        | Lookup             | Unique identifier of the delegate user who modified the record. | Targets: systemuser                                                                      |
| overriddencreatedon       | Record Created On             | DateTime           | Date and time that the record was migrated.                     | Format: DateOnly                                                                         |
| ownerid                   | Owner                         | Owner              | Owner Id                                                        | Targets: systemuser team                                                                 |
| owningbusinessunit        | Owning Business Unit          | Lookup             | Unique identifier for the business unit that owns the record    | Targets: businessunit                                                                    |
| owningteam                | Owning Team                   | Lookup             | Unique identifier for the team that owns the record.            | Targets: team                                                                            |
| owninguser                | Owning User                   | Lookup             | Unique identifier for the user that owns the record.            | Targets: systemuser                                                                      |
| statecode                 | Status                        | State              | Status of the TSA Net Case                                      | States: 0: Active 1: Inactive                                                            |
| statuscode                | Status Reason                 | Status             | Reason for the status of the TSA Net Case                       | States: 1: Open 2: Closed 120950001: Information 120950002: Rejected 120950003: Accepted |
| timezoneruleversionnumber | Time Zone Rule Version Number | Integer            | For internal use only.                                          | Minimum value: -1 Maximum value: 2147483647                                              |
| utcconversiontimezonecode | UTC Conversion Time Zone Code | Integer            | Time zone code that was in use when the record was created.     | Minimum value: -1 Maximum value: 2147483647                                              |
| versionnumber             | Version Number                | BigInt             | Version Number                                                  | Minimum value: -9223372036854775808 Maximum value: 9223372036854775807                   |

</details>

<details>

<summary>TSANet Note</summary>

The object is used for logging and managing communications or updates related to a TSANet Case. It allows members to document important information about the case in real-time.

| **Logical Name**          | **Display Name**              | **Attribute Type** | **Description**                                                 | **Additional data**                                                    |
| ------------------------- | ----------------------------- | ------------------ | --------------------------------------------------------------- | ---------------------------------------------------------------------- |
| ap\_creatoremail          | Creator (Email)               | String             |                                                                 | Format: Text Max length: 100                                           |
| ap\_creatorname           | Creator (Name)                | String             |                                                                 | Format: Text Max length: 100                                           |
| ap\_description           | Description                   | Memo               | Note description                                                | Format: Text Max length: 2000                                          |
| ap\_name                  | Summary                       | String             | Not subject                                                     | Format: Text Max length: 100                                           |
| ap\_priority              | (DEPRECATED) Priority         | Picklist           |                                                                 | Options: 3: Low 2: Medium 1: High Default: 3                           |
| ap\_tsanetcaseid          | TSA Net Case                  | Lookup             |                                                                 | Targets: ap\_tsanetcase                                                |
| ap\_tsanetnoteid          | TSA Net Note                  | Uniqueidentifier   | Unique identifier for entity instances                          |                                                                        |
| ap\_tsanotecode           | Note ID                       | String             | TSANET unique identifier                                        | Format: Text Max length: 100                                           |
| createdby                 | Created By                    | Lookup             | Unique identifier of the user who created the record.           | Targets: systemuser                                                    |
| createdon                 | Created On                    | DateTime           | Date and time when the record was created.                      | Format: DateAndTime                                                    |
| createdonbehalfby         | Created By (Delegate)         | Lookup             | Unique identifier of the delegate user who created the record.  | Targets: systemuser                                                    |
| importsequencenumber      | Import Sequence Number        | Integer            | Sequence number of the import that created this record.         | Minimum value: -2147483648 Maximum value: 2147483647                   |
| modifiedby                | Modified By                   | Lookup             | Unique identifier of the user who modified the record.          | Targets: systemuser                                                    |
| modifiedon                | Modified On                   | DateTime           | Date and time when the record was modified.                     | Format: DateAndTime                                                    |
| modifiedonbehalfby        | Modified By (Delegate)        | Lookup             | Unique identifier of the delegate user who modified the record. | Targets: systemuser                                                    |
| overriddencreatedon       | Record Created On             | DateTime           | Date and time that the record was migrated.                     | Format: DateOnly                                                       |
| ownerid                   | Owner                         | Owner              | Owner Id                                                        | Targets: systemuser team                                               |
| owningbusinessunit        | Owning Business Unit          | Lookup             | Unique identifier for the business unit that owns the record    | Targets: businessunit                                                  |
| owningteam                | Owning Team                   | Lookup             | Unique identifier for the team that owns the record.            | Targets: team                                                          |
| owninguser                | Owning User                   | Lookup             | Unique identifier for the user that owns the record.            | Targets: systemuser                                                    |
| statecode                 | Status                        | State              | Status of the TSA Net Note                                      | States: 0: Active 1: Inactive                                          |
| statuscode                | Status Reason                 | Status             | Reason for the status of the TSA Net Note                       | States: 1: Active 2: Inactive                                          |
| timezoneruleversionnumber | Time Zone Rule Version Number | Integer            | For internal use only.                                          | Minimum value: -1 Maximum value: 2147483647                            |
| utcconversiontimezonecode | UTC Conversion Time Zone Code | Integer            | Time zone code that was in use when the record was created.     | Minimum value: -1 Maximum value: 2147483647                            |
| versionnumber             | Version Number                | BigInt             | Version Number                                                  | Minimum value: -9223372036854775808 Maximum value: 9223372036854775807 |

</details>

<details>

<summary>TSANet Response</summary>

The object captures formal replies or actions taken with an inbound TSANet Case.

| **Logical Name**          | **Display Name**              | **Attribute Type** | **Description**                                                 | **Additional data**                                                                                                   |
| ------------------------- | ----------------------------- | ------------------ | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| ap\_description           | Description                   | Memo               | Description or next steps                                       | Format: Text Max length: 2000                                                                                         |
| ap\_engineeremail         | Engineer Email                | String             |                                                                 | Format: Email Max length: 300                                                                                         |
| ap\_engineername          | Engineer Name                 | String             |                                                                 | Format: Text Max length: 300                                                                                          |
| ap\_engineerphone         | Engineer Phone                | String             |                                                                 | Format: Text Max length: 300                                                                                          |
| ap\_internalcasenumber    | Internal Case Number          | String             | Internal Case Number is used for incoming case approvals.       | Format: Text Max length: 100                                                                                          |
| ap\_name                  | Name                          | String             |                                                                 | Format: Text Max length: 100                                                                                          |
| ap\_tsanetcaseid          | TSA Net Case                  | Lookup             |                                                                 | Targets: ap\_tsanetcase                                                                                               |
| ap\_tsanetresponseid      | TSA Net Response              | Uniqueidentifier   | Unique identifier for entity instances                          |                                                                                                                       |
| ap\_tsaresponsecode       | Response ID                   | String             | TSANET unique identifier                                        | Format: Text Max length: 100                                                                                          |
| ap\_type                  | Type                          | Picklist           | Response type                                                   | Options: 1: Approval 0: Reject 2: Request Information 3: Information Response 4: Close 5: Approval Update Default: -1 |
| createdby                 | Created By                    | Lookup             | Unique identifier of the user who created the record.           | Targets: systemuser                                                                                                   |
| createdon                 | Created On                    | DateTime           | Date and time when the record was created.                      | Format: DateAndTime                                                                                                   |
| createdonbehalfby         | Created By (Delegate)         | Lookup             | Unique identifier of the delegate user who created the record.  | Targets: systemuser                                                                                                   |
| importsequencenumber      | Import Sequence Number        | Integer            | Sequence number of the import that created this record.         | Minimum value: -2147483648 Maximum value: 2147483647                                                                  |
| modifiedby                | Modified By                   | Lookup             | Unique identifier of the user who modified the record.          | Targets: systemuser                                                                                                   |
| modifiedon                | Modified On                   | DateTime           | Date and time when the record was modified.                     | Format: DateAndTime                                                                                                   |
| modifiedonbehalfby        | Modified By (Delegate)        | Lookup             | Unique identifier of the delegate user who modified the record. | Targets: systemuser                                                                                                   |
| overriddencreatedon       | Record Created On             | DateTime           | Date and time that the record was migrated.                     | Format: DateOnly                                                                                                      |
| ownerid                   | Owner                         | Owner              | Owner Id                                                        | Targets: systemuser team                                                                                              |
| owningbusinessunit        | Owning Business Unit          | Lookup             | Unique identifier for the business unit that owns the record    | Targets: businessunit                                                                                                 |
| owningteam                | Owning Team                   | Lookup             | Unique identifier for the team that owns the record.            | Targets: team                                                                                                         |
| owninguser                | Owning User                   | Lookup             | Unique identifier for the user that owns the record.            | Targets: systemuser                                                                                                   |
| statecode                 | Status                        | State              | Status of the TSA Net Response                                  | States: 0: Active 1: Inactive                                                                                         |
| statuscode                | Status Reason                 | Status             | Reason for the status of the TSA Net Response                   | States: 1: Active 2: Inactive                                                                                         |
| timezoneruleversionnumber | Time Zone Rule Version Number | Integer            | For internal use only.                                          | Minimum value: -1 Maximum value: 2147483647                                                                           |
| utcconversiontimezonecode | UTC Conversion Time Zone Code | Integer            | Time zone code that was in use when the record was created.     | Minimum value: -1 Maximum value: 2147483647                                                                           |
| versionnumber             | Version Number                | BigInt             | Version Number                                                  | Minimum value: -9223372036854775808 Maximum value: 9223372036854775807                                                |

</details>

<details>

<summary>TSANet Case Mapping</summary>

The object contains mapping configuration for various automated processes described in partner’s configuration.

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><p> </p><p><strong>Logical Name</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Display Name</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Attribute Type</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Description</strong></p></td><td valign="top"><p> </p><p><strong>Additional data</strong></p></td></tr><tr><td valign="top"><p> </p><p>ap_attributetype</p><p> </p></td><td valign="top"><p> </p><p>Attribute Type</p><p> </p></td><td valign="top"><p> </p><p>Choice</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Options:<br> <br> 1: Text, Int, Decimal, Bool (no color)<br> <br> 2: Lookup (no color)<br> <br> 3: OptionSet (no color)<br> <br> 4: Money (no color)<br> <br> Default: N/A</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_casemappingid</p><p> </p></td><td valign="top"><p> </p><p>Case Mapping</p><p> </p></td><td valign="top"><p> </p><p>Uniqueidentifier</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for entity instances</p><p> </p></td><td valign="top"></td></tr><tr><td valign="top"><p> </p><p>ap_isrequired</p><p> </p></td><td valign="top"><p> </p><p>Required for Case Create</p><p> </p></td><td valign="top"><p> </p><p>Two options</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>True: Yes<br> <br> False: No<br> <br> Default Value: False</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_lookupentityname</p><p> </p></td><td valign="top"><p> </p><p>Lookup Table Name</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_lookupsearchattribute</p><p> </p></td><td valign="top"><p> </p><p>Lookup Search Attribute</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_mappingtype</p><p> </p></td><td valign="top"><p> </p><p>Mapping Type</p><p> </p></td><td valign="top"><p> </p><p>Choice</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Options:<br> <br> 120950000: Response Form (no color)<br> <br> 120950001: Case Create (no color)<br> <br> 120950002: TSA Case defaults from Case (no color)<br> <br> Default: N/A</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_name</p><p> </p></td><td valign="top"><p> </p><p>Name</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 850</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_sourcejsonpath</p><p> </p></td><td valign="top"><p> </p><p>Source (Json Path or Attribute)</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>Handle paths like "customFields.Customer Case #"</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 200</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_targetattribute</p><p> </p></td><td valign="top"><p> </p><p>Target Attribute (Json Path or Attribute)</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdby</p><p> </p></td><td valign="top"><p> </p><p>Created By</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the user who created the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdon</p><p> </p></td><td valign="top"><p> </p><p>Created On</p><p> </p></td><td valign="top"><p> </p><p>DateTime</p><p> </p></td><td valign="top"><p> </p><p>Date and time when the record was created.</p><p> </p></td><td valign="top"><p> </p><p>Format: DateAndTime</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdonbehalfby</p><p> </p></td><td valign="top"><p> </p><p>Created By (Delegate)</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the delegate user who created the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdonbehalfbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdonbehalfbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>importsequencenumber</p><p> </p></td><td valign="top"><p> </p><p>Import Sequence Number</p><p> </p></td><td valign="top"><p> </p><p>Whole number</p><p> </p></td><td valign="top"><p> </p><p>Sequence number of the import that created this record.</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -2147483648<br> <br> Maximum value: 2147483647</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedby</p><p> </p></td><td valign="top"><p> </p><p>Modified By</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the user who modified the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedon</p><p> </p></td><td valign="top"><p> </p><p>Modified On</p><p> </p></td><td valign="top"><p> </p><p>DateTime</p><p> </p></td><td valign="top"><p> </p><p>Date and time when the record was modified.</p><p> </p></td><td valign="top"><p> </p><p>Format: DateAndTime</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedonbehalfby</p><p> </p></td><td valign="top"><p> </p><p>Modified By (Delegate)</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the delegate user who modified the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedonbehalfbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedonbehalfbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>overriddencreatedon</p><p> </p></td><td valign="top"><p> </p><p>Record Created On</p><p> </p></td><td valign="top"><p> </p><p>DateTime</p><p> </p></td><td valign="top"><p> </p><p>Date and time that the record was migrated.</p><p> </p></td><td valign="top"><p> </p><p>Format: DateOnly</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owneridname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>Name of the owner</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owneridyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>Yomi name of the owner</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owningbusinessunit</p><p> </p></td><td valign="top"><p> </p><p>Owning Business Unit</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for the business unit that owns the record</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> businessunit</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owningbusinessunitname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owningteam</p><p> </p></td><td valign="top"><p> </p><p>Owning Team</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for the team that owns the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> team</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owninguser</p><p> </p></td><td valign="top"><p> </p><p>Owning User</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for the user that owns the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>timezoneruleversionnumber</p><p> </p></td><td valign="top"><p> </p><p>Time Zone Rule Version Number</p><p> </p></td><td valign="top"><p> </p><p>Whole number</p><p> </p></td><td valign="top"><p> </p><p>For internal use only.</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -1<br> <br> Maximum value: 2147483647</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>utcconversiontimezonecode</p><p> </p></td><td valign="top"><p> </p><p>UTC Conversion Time Zone Code</p><p> </p></td><td valign="top"><p> </p><p>Whole number</p><p> </p></td><td valign="top"><p> </p><p>Time zone code that was in use when the record was created.</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -1<br> <br> Maximum value: 2147483647</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>versionnumber</p><p> </p></td><td valign="top"><p> </p><p>Version Number</p><p> </p></td><td valign="top"><p> </p><p>BigInt</p><p> </p></td><td valign="top"><p> </p><p>Version Number</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -9223372036854775808<br> <br> Maximum value: 9223372036854775807</p><p> </p></td></tr></tbody></table>

</details>

<details>

<summary>TSANet Setting</summary>

The object contains the settings of the TSANET connector, for example the credentials.

<table data-header-hidden><thead><tr><th width="137" valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><p> </p><p><strong>Logical Name</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Display Name</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Attribute Type</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Description</strong></p><p> </p></td><td valign="top"><p> </p><p><strong>Additional data</strong></p></td></tr><tr><td valign="top"><p> </p><p>ap_clientid</p><p> </p></td><td valign="top"><p> </p><p>Client ID</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_name</p><p> </p></td><td valign="top"><p> </p><p>Name</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 850</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_secret</p><p> </p></td><td valign="top"><p> </p><p>Secret</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ap_tsanetsettingid</p><p> </p></td><td valign="top"><p> </p><p>TSANET Setting</p><p> </p></td><td valign="top"><p> </p><p>Uniqueidentifier</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for entity instances</p><p> </p></td><td valign="top"></td></tr><tr><td valign="top"><p> </p><p>ap_uri</p><p> </p></td><td valign="top"><p> </p><p>URI</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 400</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdby</p><p> </p></td><td valign="top"><p> </p><p>Created By</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the user who created the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdon</p><p> </p></td><td valign="top"><p> </p><p>Created On</p><p> </p></td><td valign="top"><p> </p><p>DateTime</p><p> </p></td><td valign="top"><p> </p><p>Date and time when the record was created.</p><p> </p></td><td valign="top"><p> </p><p>Format: DateAndTime</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdonbehalfby</p><p> </p></td><td valign="top"><p> </p><p>Created By (Delegate)</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the delegate user who created the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdonbehalfbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>createdonbehalfbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>importsequencenumber</p><p> </p></td><td valign="top"><p> </p><p>Import Sequence Number</p><p> </p></td><td valign="top"><p> </p><p>Whole number</p><p> </p></td><td valign="top"><p> </p><p>Sequence number of the import that created this record.</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -2147483648<br> <br> Maximum value: 2147483647</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedby</p><p> </p></td><td valign="top"><p> </p><p>Modified By</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the user who modified the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedon</p><p> </p></td><td valign="top"><p> </p><p>Modified On</p><p> </p></td><td valign="top"><p> </p><p>DateTime</p><p> </p></td><td valign="top"><p> </p><p>Date and time when the record was modified.</p><p> </p></td><td valign="top"><p> </p><p>Format: DateAndTime</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedonbehalfby</p><p> </p></td><td valign="top"><p> </p><p>Modified By (Delegate)</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier of the delegate user who modified the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedonbehalfbyname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>modifiedonbehalfbyyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>overriddencreatedon</p><p> </p></td><td valign="top"><p> </p><p>Record Created On</p><p> </p></td><td valign="top"><p> </p><p>DateTime</p><p> </p></td><td valign="top"><p> </p><p>Date and time that the record was migrated.</p><p> </p></td><td valign="top"><p> </p><p>Format: DateOnly</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>ownerid</p><p> </p></td><td valign="top"><p> </p><p>Owner</p><p> </p></td><td valign="top"><p> </p><p>Owner</p><p> </p></td><td valign="top"><p> </p><p>Owner Id</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser<br> <br> team</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owneridname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>Name of the owner</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owneridyominame</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>Yomi name of the owner</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owningbusinessunit</p><p> </p></td><td valign="top"><p> </p><p>Owning Business Unit</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for the business unit that owns the record</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> businessunit</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owningbusinessunitname</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Text</p><p> </p></td><td valign="top"><p> </p><p>N/A</p><p> </p></td><td valign="top"><p> </p><p>Format: Text<br> <br> Max length: 100</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owningteam</p><p> </p></td><td valign="top"><p> </p><p>Owning Team</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for the team that owns the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> team</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>owninguser</p><p> </p></td><td valign="top"><p> </p><p>Owning User</p><p> </p></td><td valign="top"><p> </p><p>Lookup</p><p> </p></td><td valign="top"><p> </p><p>Unique identifier for the user that owns the record.</p><p> </p></td><td valign="top"><p> </p><p>Targets:<br> <br> systemuser</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>timezoneruleversionnumber</p><p> </p></td><td valign="top"><p> </p><p>Time Zone Rule Version Number</p><p> </p></td><td valign="top"><p> </p><p>Whole number</p><p> </p></td><td valign="top"><p> </p><p>For internal use only.</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -1<br> <br> Maximum value: 2147483647</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>utcconversiontimezonecode</p><p> </p></td><td valign="top"><p> </p><p>UTC Conversion Time Zone Code</p><p> </p></td><td valign="top"><p> </p><p>Whole number</p><p> </p></td><td valign="top"><p> </p><p>Time zone code that was in use when the record was created.</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -1<br> <br> Maximum value: 2147483647</p><p> </p></td></tr><tr><td valign="top"><p> </p><p>versionnumber</p><p> </p></td><td valign="top"><p> </p><p>Version Number</p><p> </p></td><td valign="top"><p> </p><p>BigInt</p><p> </p></td><td valign="top"><p> </p><p>Version Number</p><p> </p></td><td valign="top"><p> </p><p>Minimum value: -9223372036854775808<br> <br> Maximum value: 9223372036854775807</p><p> </p></td></tr></tbody></table>

</details>

<details>

<summary>Flows</summary>

The TSANet managed package includes flows designed for flexible automation. These flows enable actions such as updating TSANet records, creating new TSANet Cases, accepting or rejecting requests, requesting more information, or adding new notes. Additionally, all these actions are available in flows under the TSANet section, allowing you to customize the logic to meet your needs.

<figure><img src="/files/6lcFSIf8XIH3SVzKtAZo" alt=""><figcaption></figcaption></figure>

**Flows**

* Child Flow – Login: The flow authorizes to the API and returns the token.
* Scheduled – Create/Update Cases/Responses/Notes: The scheduled flow that retrieves the current case status or creates new inbound cases.

</details>

<details>

<summary>Actions</summary>

The TSANet managed package includes various actions designed to enhance and streamline workflows in Dynamics/Power Apps. These actions enable seamless integration and automation, such as retrieving data, creating cases, and updating existing records. You can incorporate these actions into custom flows to tailor functionality to specific business requirements.

**Available Actions**

* **GetCase**: Fetches case details based on the specified criteria.
* **GetCompanyByName**: Retrieves companies using its name as the search parameter.
* **GetFormByCompany**: Retrieves a form linked to a specific company for further processing.
* **PostCase**: Creates a new case with all required and optional fields populated.
* **PostCaseApproval**: Initiates the approval process for a case, ensuring compliance and proper documentation.
* **PostCaseApprovalUpdate**: Updates the status of an approval, reflecting changes to the case approval process.
* **PostCaseNote**: Adds notes to an existing case, enabling better tracking and communication.

</details>

<details>

<summary>Plugins</summary>

The TSANet managed package includes a set of plugins that handle various customizations and business logic within Power Apps. These plugins can be triggered by specific user actions, API calls, or system events. Together, they provide flexibility and automation to meet diverse business requirements.

**Available Plugins**

* **CommonIntegrationPlugin**: A generic integration plugin used for managing common tasks and actions, ensuring seamless data flow between systems.
* **GetCasePlugin**: Retrieves case information based on predefined parameters. Typically triggered by the GetCase action.
* **GetCompanyPlugin**: Fetches company details by name or identifier. Triggered by the GetCompanyByName action.
* **GetFormByCompanyPlugin**: Returns forms associated with a specific company. This plugin is linked to the GetFormByCompany action.
* **PostCasePlugin**: Handles the creation of new cases. It is triggered when the PostCase action is executed, ensuring that all data is validated and recorded accurately.
* **PostCaseApprovalPlugin**: Manages the approval process for cases. This plugin is invoked when the PostCaseApproval action is performed.
* **PostCaseApprovalUpdatePlugin**: Updates case approval statuses and is tied to the PostCaseApprovalUpdate action for real-time approval tracking.
* **PostCaseNotePlugin**: Adds notes to an existing case. Triggered by the PostCaseNote action, it facilitates better communication and documentation.
* **PostCaseResponseOnCreatePlugin**: Automatically generates a response when a case is created. Triggered by system events to streamline case follow-ups.

**Key Features**

* **Action-Triggered Plugins**: These plugins are invoked by specific actions performed in Dynamics or Power Apps, providing precise control over workflow customization.
* **System-Triggered Plugins**: Plugins like **PostCaseResponseOnCreatePlugin** are automatically triggered by internal events, ensuring seamless operations without manual intervention.
* **Customizable Logic**: Each plugin contains specific business logic that can be tailored to meet unique organizational needs, enabling a fully adaptable Dynamics/Power Apps experience.

<figure><img src="/files/hfCqG0WlqwTSomhATCI2" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>JavaScripts</summary>

The TSANet solution includes a set of JavaScript files that extend the functionality of Power Apps forms and actions. These scripts handle front-end customizations, UI enhancements, and client-side integrations to improve the user experience and ensure seamless interactions.

**JavaScript Files Overview**

* **CaseResponse.js**: Manages client-side logic for case responses. This script ensures that responses are appropriately captured and displayed on the form.
* **CaseTSA.js**: Contains specific logic and actions related to TSANet cases. It drives custom behaviors for case management, ensuring compliance with TSANet workflows. This script uses html webresource and generates the form for displaying or creating cases.
* **CaseTSAButtons.js**: Handles button actions on case forms.
* **CommonIntegration.js**: Manages frontend to backend integration for connecting external systems with Dynamics. All scripts uses backend API that handling the communication with the TSANET.
* **CommonScripts.js**: A library of reusable JavaScript functions and utilities used across various forms and modules. This script reduces redundancy and ensures consistent behavior.

<figure><img src="/files/lG7zpyyR9wc7CuJmPriB" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>HTML Webresource</summary>

The **CaseCustomForm.html** file serves as the core HTML template for rendering the TSANET case UX in Power Apps. It is designed to provide a user-friendly and responsive form for creating, updating, and managing cases. The file incorporates custom JavaScript, CSS, and Power Apps form elements to ensure seamless functionality and a modern user experience.

**Key Features**

* **Custom Layout**: Provides a structured and intuitive layout for case-related fields, ensuring users can easily input and view case details.
* **Integration with JavaScript**: Works in conjunction with scripts like **CaseTSA.js** and **CaseTSAButtons.js** to enable dynamic actions and form behavior.
* **Dynamic Elements**: Includes buttons, dropdowns, and interactive components for improved usability.
* **Styling**: Utilizes custom CSS (or SCSS if extended) to align the form with organizational branding and ensure responsive design.

</details>

## Partner’s Configuration

Here is the example of partner configuration described in following chapters.

{% file src="/files/laOAXxwCbXemwqIAkvyZ" %}

<details>

<summary>Automatically create TSANet Note by email</summary>

This function enables the automatic creation of a TSA Note whenever an email is received or sent within the Dynamics Case. The system monitors email activities linked to the case and triggers the creation of a new TSA Note, capturing the content and metadata of the email. This ensures that all email communications are logged and associated with the relevant TSANet Case for better traceability and collaboration.

You can enable or disable the functionality using environment variable “Auto Create TSANote by Email”.

<figure><img src="/files/XxMilXanCgkd7uz0ko6V" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Automatically create TSANet Note by note</summary>

This function allows for the automatic generation of a TSA Note when a new note is manually added to a Dynamics Case. Upon detecting a new note entry, the system creates a corresponding TSA Note record, ensuring that all updates and annotations are consistently reflected in the TSANet Case. This automation helps maintain comprehensive documentation and improves the efficiency of case management.

You can enable or disable the functionality using environment variable “Auto Create TSANote by Note”.

<figure><img src="/files/rhuGGXduqBWtwDSyxLyn" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Automatically create Case from Response Form</summary>

This function enables members to automatically create a Dynamics Case when a TSA Case is accepted. It streamlines the case management process by leveraging predefined mappings and automation logic.

1. Administrator can add new fields on the TSANET Case Response table. These fields can be prefilled from the TSANET Case data using the 'Case mappings' setting. This allows for seamless data transfer and ensures that relevant information is readily available during case creation.
2. Administrator can map any field from the TSANET Case Response table to the case creation logic using the 'Case mappings'. Additionally, they can define which fields are mandatory, ensuring that all required data is captured before a case is created. This provides flexibility and control over the automation process.

</details>

<details>

<summary>Automatic Case Routing</summary>

System provides possibility to automate incoming TSA Case routing. You can enable it using environment variable “Auto Routing of New Case”.

**Routing:**

1. System search for existing cases using Customer Case #. If the case is found system relates the TSA Case with the Case and approves it.
2. If the case is not found, system search for the customer using the name and creates a case for the customer and relates it with the TSA Case and approves it.
3. If the customer is not found, the process ends.

Process can be customized using Power Automate editor, the name of the process is “On Create Case - Auto Route”.

**You can customize following parts of the process:**

1. GetCustomerFields – There you can get the data from the incoming TSA Case. You can save that data into variables for further usage.

<figure><img src="/files/jKVkrPGOI2jH9OUoesiN" alt=""><figcaption></figcaption></figure>

2. SearchExistingCase – Here is the query for retrieve of existing case from the Dynamics. You can edit the filter rows according to screenshot.

<figure><img src="/files/QLHYH04si1Z9mtKAGBzX" alt=""><figcaption></figcaption></figure>

3. CreateCase – If the Case is not found, system creates a case. You can edit the case creation and retrieving existing account in this scope.

<figure><img src="/files/bk8CaiIByS72sNd6Gdxh" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Prefill Defaults From the Case</summary>

The system can prefill the defaults from the related case. The setting is dynamic so the administrator can set any attribute to be prefilled from the case into any TSANET form. The system supports the expand, so you can use attributes from the related tables as well.

#### Example 1 – prefill the case summary

In this example the system prefills the case title into the problemSummary form field.

<figure><img src="/files/WqNEHAGMZhdJkfdVC6T8" alt=""><figcaption></figcaption></figure>

#### Example 2 – prefill the customer name

More complex scenario where the system prefills the customer name which is in the table related to the case.

<figure><img src="/files/z4yjFRusvddsGIrk71YR" alt=""><figcaption></figcaption></figure>

</details>


---

# 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://tsanet.gitbook.io/connect/documentation/dynamics-connector/installation-guide.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.
