Skip to main content
Version: 4.1 (2026 H2)

ProviderPipeline


A search can be carried out via the DataProviders in primedocs and the data is then presented to the user.
This procedure is sufficient for endpoints where all data is already transmitted via a single search query.
In the event that a search query returns essential but not all data, the ProviderPipeline can be used.

The ProviderPipeline makes it possible to store a separate DataProvider for the search. If the user selects the corresponding data record, further details are reloaded via an additional DataProvider.

Searching & Loading

The ProviderPipeline behaves like a normal DataProvider, but is divided into two “phases”:

<ProviderPipeline DisplayName="Zefix">
<Searching>
...
</Searching>
<Loading>
...
</Loading>
</ProviderPipeline>

In both phases, DataProviders can be configured — except the ExistingListDataProvider and the ProviderPipeline itself. It is also permitted to use a different DataProvider in the Searching step than in the Loading step.

The two phases differ in the settings they allow:

  • Searching: the actual search step. SearchParameters can be defined here; if they are omitted, the search runs automatically over the entire data set without an input mask.
  • Loading: here no SearchParameters may be defined. The CodeDataProvider additionally does not take part in the Loading phase, as it has no flat search step that could be re-mapped on load.

The DisplayName is set exclusively on the ProviderPipeline element, not on the providers inside Searching/Loading.

Search parameters & Data loading

SearchParameters can be specified for the search in the Searching step. If they are omitted, the search runs automatically over the entire data set without an input mask.
The search result must be based on the schema of the Object or the ObjectCollection.

The fields of the search result can then be accessed in the Loading step, e.g. to load further details with an ID.
No further SearchParameters may be defined in the Loading step.

Example

In the example, company data is queried via the Zefix service.

The name and identification number are provided as search results. If the user selects the search results, the address data is automatically loaded.

<ProviderPipeline DisplayName="Zefix">
<Searching>
<HttpDataProvider>
<SearchParameters>
<Text Id="Query" Label="Query" />
</SearchParameters>
<Configuration>
<Step>
<Request Method="Post">
<Url>https://www.zefix.admin.ch/ZefixPublicREST/api/v1/company/search</Url>
<Header Name="Authorization" Value="Basic [ZEFIX-AUTH-KEY]" />
<Header Name="Content-Type" Value="application/json" />
<Header Name="accept" Value="application/json" />
<Body>{
"name": "{Query}",
"activeOnly": true
}</Body>
</Request>
<Response>
<Data JsonPath="$.[*]">
<Mapping>
<Map Source="uid" Target="uid" />
<Map Source="name" Target="name" />
</Mapping>
</Data>
</Response>
</Step>
</Configuration>
</HttpDataProvider>
</Searching>
<Loading>
<HttpDataProvider>
<Configuration>
<Step>
<Request Method="Get">
<Url>https://www.zefix.admin.ch/ZefixPublicREST/api/v1/company/uid/{uid}</Url>
<Header Name="Authorization" Value="Basic [ZEFIX-AUTH-KEY]" />
<Header Name="Content-Type" Value="application/json" />
<Header Name="accept" Value="application/json" />
</Request>
<Response>
<Data JsonPath="$.[*]">
<Mapping>
<Map Source="uid" Target="uid" />
<Map Source="name" Target="name" />
<Map Source="address.street" Target="street" />
<Map Source="address.houseNumber" Target="houseNumber" />
<Map Source="address.city" Target="city" />
<Map Source="address.swissZipCode" Target="swissZipCode" />
</Mapping>
</Data>
</Response>
</Step>
</Configuration>
</HttpDataProvider>
</Loading>
</ProviderPipeline>