# Setting up a Prima Solutions connection

## Introduction

Typically, connectors are defined with endpoints which determine exactly what data is being requested (pull customer records, post product details, etc.). However, the Prima Solutions connector works in a different way, with two generic endpoints:

* comwsomhandler
* wsomhandler

The actual data required for a request must be passed into the Prima Solutions connection shape, as part of your process flow. You do this via a [manual payload](/product-documentation/process-flows/building-process-flows/process-flow-shapes/standard-shapes/manual-payload-shape.md) shape.

{% hint style="info" %}
Whatever is defined for the manual payload is passed into the body of the subsequent Prima Solutions connection request.
{% endhint %}

Finally - once a successful connection is made - the response must be converted from XML to JSON, ready for onward processing.

With this in mind, a process flow that needs to pull data from Prima Solutions will usually require three shapes in the following sequence:

1. **Manual payload** shape, which includes the required [request data](#request-data) in an XML string
2. **Connection** shape, configured with a Prima Solutions endpoint&#x20;
3. **Script** shape, configured with an [XML to JSON conversion script](#converting-response-xml-to-json)&#x20;

For example:

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

## Request data

Request data to be passed into a Prima Solutions connection shape must be based on the *Prima Web Services XML Schema Definition*. Some examples are shown below.&#x20;

<details>

<summary><img src="/files/i4lNQf87gFXIoy2ODqxD" alt="" data-size="line"> Example: NewOrder</summary>

The example below shows a `NewOrder` request (XML string):

{% code title="With HTML entities" overflow="wrap" lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<Request RequestType="NewOrder">
  <Data Customer="&quot;&quot;" CustDef="&quot;&quot;" VatInclusive="&quot;&quot;" TPGUID="&quot;&quot;" CustomerRef="&quot;&quot;" CustomerForename="&quot;&quot;" CustomerSurname="&quot;&quot;" CustomerPhone="&quot;&quot;" CustomerEmail="&quot;&quot;" AddrLine1="&quot;&quot;" AddrLine2="&quot;&quot;" AddrLine3="&quot;&quot;" AddrLine4="&quot;&quot;" AddrLine5="&quot;&quot;" AddrLine6="&quot;&quot;" Country="&quot;&quot;" PostCode="&quot;&quot;">
    <OrderInvoiceData InvoiceTitle="&quot;&quot;" InvoiceForename="&quot;&quot;" InvoiceSurname="&quot;&quot;" InvoicePhone="&quot;&quot;" InvoiceEmail="&quot;&quot;" InvoiceAddrLine1="&quot;&quot;" InvoiceAddrLine2="&quot;&quot;" InvoiceAddrLine3="&quot;&quot;" InvoiceAddrLine4="&quot;&quot;" InvoiceAddrLine5="&quot;&quot;" InvoiceAddrLine6="&quot;&quot;" InvoiceCountry="&quot;&quot;" InvoicePostCode="&quot;&quot;"/>
    <OrderHeaderData Currency="&quot;&quot;" OrderEmail="&quot;&quot;" OrderStatus="&quot;&quot;" OrderCategory="&quot;&quot;" OrderDate="&quot;&quot;" SendToApproval="&quot;&quot;" SourceMedia="&quot;&quot;" Carrier="&quot;&quot;" CarrServ="&quot;&quot;"/>
    <OrderChargeData Charge="&quot;&quot;" ChargeValue="&quot;&quot;"/>
    <OrderPaymentData TranAmount="&quot;&quot;" PayMethod="&quot;&quot;" SubPayMethod="&quot;&quot;" PayAuthRef="&quot;&quot;" AuthRef="&quot;&quot;" AuthDate="&quot;&quot;" AuthTime="&quot;&quot;"/>
    <OrderLineData Product="&quot;&quot;" Quantity="&quot;&quot;" Price="&quot;&quot;" MtrxCode1="&quot;&quot;" MtrxCode2="&quot;&quot;"/>
  </Data>
</Request>
```

{% endcode %}

{% code title="Without HTML entities" overflow="wrap" lineNumbers="true" %}

```html
<?xml version="1.0" encoding="ISO-8859-1"?>
<Request RequestType="NewOrder">
  <Data Customer="" CustDef="" VatInclusive="" TPGUID="" CustomerRef="" CustomerForename="" CustomerSurname="" CustomerPhone="" CustomerEmail="" AddrLine1="" AddrLine2="" AddrLine3="" AddrLine4="" AddrLine5="" AddrLine6="" Country="" PostCode="">
    <OrderInvoiceData InvoiceTitle="" InvoiceForename="" InvoiceSurname="" InvoicePhone="" InvoiceEmail="" InvoiceAddrLine1="" InvoiceAddrLine2="" InvoiceAddrLine3="" InvoiceAddrLine4="" InvoiceAddrLine5="" InvoiceAddrLine6="" InvoiceCountry="" InvoicePostCode=""/>
    <OrderHeaderData Currency="" OrderEmail="" OrderStatus="" OrderCategory="" OrderDate="" SendToApproval="" SourceMedia="" Carrier="" CarrServ=""/>
    <OrderChargeData Charge="" ChargeValue=""/>
    <OrderPaymentData TranAmount="" PayMethod="" SubPayMethod="" PayAuthRef="" AuthRef="" AuthDate="" AuthTime=""/>
    <OrderLineData Product="" Quantity="" Price="" MtrxCode1="" MtrxCode2=""/>
  </Data>
</Request>
```

{% endcode %}

</details>

<details>

<summary><img src="/files/i4lNQf87gFXIoy2ODqxD" alt="" data-size="line"> Example: ProductAvailableToSell</summary>

The example below shows a `ProductAvailableToSell` request (XML string):

{% code title="With HTML entities" overflow="wrap" lineNumbers="true" %}

```xml
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
   &lt;Request RequestType=&quot;ProductAvailableToSell&quot;&gt;
   &lt;Data ProductFrom=&quot;&quot; ProductTo=&quot;&quot; WareHouse=&quot;&quot; IncludeDisallowed=&quot;&quot; IncludeProhibited=&quot;&quot;/&gt;
   &lt;/Request&gt;
```

{% endcode %}

{% code title="Without HTML entities" overflow="wrap" lineNumbers="true" %}

```html
<?xml version="1.0" encoding="ISO-8859-1"?>
<Request RequestType="ProductAvailableToSell">
   <Data ProductFrom="" ProductTo="" WareHouse="" IncludeDisallowed="" IncludeProhibited=""/>
</Request>

```

{% endcode %}

The response would be in the form below:

{% code title="With HTML entities" overflow="wrap" lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <Result Company="1" RequestStatus="OK" RequestType="ProductAvailableToSell"><Data><sku AvailableDate="" AvailableQuantity="0" FTSQty="0" MtrxCode1="" MtrxCode2="" MtrxCode3="" MtrxCode4="" Product="1000"/><sku AvailableDate="" AvailableQuantity="0" FTSQty="0" MtrxCode1="" MtrxCode2="" MtrxCode3="" MtrxCode4="" Product="1001"/></Data></Result>
```

{% endcode %}

Notice that the response is returned as an XML string. For onward processing you must [convert this to a JSON payload, using a custom script](#converting-response-xml-to-json).

</details>

## Converting response XML to JSON

Before the response from a Prima Solutions request can be be processed, it must be converted to a JSON payload. To do this, you should create an XML to JSON conversion script and add this to a [script shape](/product-documentation/process-flows/building-process-flows/process-flow-shapes/advanced-shapes/script-shape.md) in your process flow.


---

# 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://doc.wearepatchworks.com/product-documentation/connectors-and-instances/patchworks-connectors/prima-solutions-prebuilt-connector/setting-up-a-prima-solutions-connection.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.
