Working with Report Orders: Batch Orders
Introduction
The page https://bmpi.atlassian.net/wiki/pages/resumedraft.action?draftId=2796781569 covers the knowledge needed to set up the majority of orders. Expanding on that, this page teaches reporting specialists to use batch orders.
Set up and trigger a batch order | |
To set up a batch order, click on new order or open an existing scheduled order. Then, switch the “Batch Order” toggle to on. | |
Some properties now accept multiple values. Among those are reportType, reportLanguage, as well as the parameters under “Additional settings”. If the order is scheduled manually, you can also select multiple portfolioIDs. Let’s look at one manually scheduled order as an example. Select English under report language. Then, click the dropdown again and select German. Now add three portfolioIDs. Fill in the required fields and save the order. | |
You now see an overview of the reports that will be created whenever this order is executed in a table below. There is one row for each of the expected reports, alongside the parameters that will be used for that execution. If there are more parameters than fit the table, click on the three dots on the right to view all parameters. Let’s consider our previous example. A total of six reports will be produced: One for each of the portfolioIDs in both English and German. | |
Clicking the arrow on the right navigates you to a detail view of that expected execution. Here, you can trigger an execution of just this report, without running the whole batch. If desired, you can also adjust the parameters beforehand. | |
Analogous to a normal stored order, a batch order can be triggered manually. To start the batch, select a reporting date and click “execute batch”. Cinnamon will then produce all the reports for this batch order and show them to you. |
Batch Orders in Depth
When editing batch orders, some properties in an order JSON can be “starred“, i.e. postfixed with *
. This is equivalent to selecting multiple values for a property in default mode. These are the properties that cause the batch orders to yield multiple reports. In most cases this can easily be set up using the default mode, for example when creating the same report for multiple portfolioIDs and languages. If a more detailed configuration is required, parameters* can be used. Parameters* contains an array of JSON objects:
Parameters* (In Default Mode) | Advanced Mode |
---|---|
JSON
|
JSON
|
There are three simple rules for batch orders:
Any property name ending in a star
*
is an array which implies multiple (sub-)orders, with the (star-less) property iterated over its elements.If both
"parameters"
and"parameters*"
are present, each element of"parameters*"
produces one orders with"parameters"
merged in (or multiple ones, if sub-parameters are also starred) .The orders and executions created correspond to the cross product of all properties ending in a star.
The parameter portfolioId*
is only available for manually scheduled orders.
Parameters*
When using starred parameters in a batch order (e.g. portfolioId*
, reportLanguage*
), the result is a cross product of all values for those parameters. However, you may only want some of those combinations. To allow this, parameters* contains sets of parameters, rather than single values. Each of those parameter sets is treated like a single starred parameter. As an example, consider fund factsheets for a specific share class. Here, you may want to hide a particular section for retail clients but not for professional investors. Using parameters*, you can set this hide parameter to true only for retail clients. If a value is set under parameters*, the advanced mode has a corresponding property parameters*
. It is also possible to directly insert this property parameters*
in advanced mode.
As this is a setting specifically for batch orders, it is only available in the Report Order Management UI and when editing batch orders.
Examples: Configuring Batch Orders
Different parameters for each execution with parameters*
The below example creates six executions, with different parameters for each portfolio:
{
"reportType": "sample_FOC_Report",
"outputFormat": "word",
"orderType": "manual",
"parameters": {
"reportLanguage*": ["en","de"],
"reportingDate": "2020-11-30"
},
"parameters*": [
{
"portfolioId": "2041",
"showTWR": false
},
{
"portfolioId": "2044",
"showTWR": true
},
{
"portfolioId": "2090",
"showTWR": true
}
],
"orderStatus": "active"
}
reportLanguage | parameters added via parameters* | |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
Use Case Fund Reporting: Create reports for one portfolio for multiple countries with the same order
The following order creates 3 x 3 executions with "jurisdiction"
set to "ch"
, "eu"
and "ru"
. (Hint: the parameter reportLanguage*
is not to be confused with the multi-lingual reporting feature using availableLanguages
)
{
"reportType": "sample_FundFactSheet",
"outputFormat": "html",
"orderType": "manual",
"parameters": {
"reportLanguage*": ["en","de","fr"],
"portfolioId": "F0001",
"reportingDate": "2020-11-30",
"jurisdiction*": ["ch", "eu", "ru"]
},
"orderStatus": "active"
}
Starring segmentations
properties of object-type parameters (e.g.
filterSegmentation
.segments
) can’t be used with a *non-atomic parameters (object or array, e.g.
segmentations
) can be used with *
{
"reportType*": [ "fullReport", "shortReport" ],
"outputFormat*": [ "pdf", "html" ],
"orderType": "manual",
"parameters": {
"reportLanguage*": ["en","de"],
"reportingDate": "2020-11-30",
"filterSegmentation": {
"id": "gugus",
"segments": [],
""
},
"segmentations*": [
[ "seg1", "seg2" ],
[ "seg2", "seg3" ]
]
},
"orderStatus": "active",
"orderId": "ORD00003"
}