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 fully take advantage of Cinnamon’s customizability by directly modifying the JSON representation of a report order.
Working with JSON in Report Orders
Usage of JSON format
Internally orders are represented in JSON format. The advanced mode and some specific parameters in default mode allow you to directly set parameters as JSON. The editor for this provides several features to help with the editing process. For example:
Mismatched brackets, commas etc. are highlighted.
Alt+Shift+F automatically formats the order.
Extended search functionality. Click on the editor field to make sure it is focused. Then, press CTRL+F to make the search appear at the top right of the editor field. There, you can not only make a simple search, but limit the search to match full words only, consider casing or even do a “regular expression” search.
If the order JSON is modified in a way that makes it invalid, e.g. by having mismatched brackets, Cinnamon will prevent you from saving the order.
Advanced mode
The advanced mode shows the full JSON representation of the order, and lets you edit it directly. It can be used both in the Ad Hoc ordering and Order Management UIs. To enter the advanced mode, click the tab advanced mode at the top in either of those screens. To exit, click on the tab default view. Any changes made in the advanced mode are immediately reflected in the default view and vice versa.
Below is the same order twice, once viewed using the default mode and once using the advanced mode:
Additional parameters
The setting “Additional parameters”, found in the default mode under Additional Settings > Other Customizations, contains a JSON of parameters that otherwise have no input field in the UI. This allows you to set arbitrary parameters. It is available both in the Ad Hoc and Report Order Management UIs. In the advanced mode, the parameters inserted using this setting can be found under parameters
alongside the parameters that can be set in the UI. Conversely, if such an arbitrary parameter is added to parameters
in the advanced mode, it will show up under Additional Parameters in default mode.
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.
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 |
---|---|
[ { "portfolioId": "2041", "showTWR": false }, { "portfolioId": "2044", "showTWR": true }, { "portfolioId": "2090", "showTWR": true } ] | { "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" } |
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.
Examples: Different Kinds of Orders
Note: Since both parameters* and additional parameters are reflected in the advanced mode view, examples on this page are based on the advanced mode unless otherwise specified.
Ad hoc vs. stored orders
Ad Hoc Order | Stored Order | |
---|---|---|
Example | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "parameters":{ "portfolioId": "E0002", "reportingDate": "2019-03-31", "reportLanguage": "en" } } | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "orderType": "scheduled", "scheduling": { "availabilities": [ {"availability": "eventDriven"} ], "frequency": "monthly", "startDate": "2018-01-01" }, "parameters": { "reportLanguage*": ["de", "en"], "portfolioId*": ["E0002", "E0001"] }, "orderStatus": "active", "orderName": "E0002 monthly two pager EN" } |
Created in | Ad Hoc Order UI | Report Order Management |
Triggered by | User | User or automatically |
Manual vs. Automatic Scheduling vs. Once
Manual | Automatic | Once | |
---|---|---|---|
Example | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "orderType": "manual", "parameters": { "reportLanguage": "en", "portfolioId": "E0002" }, "orderStatus": "active", "orderName": "E0002 monthly two pager EN" } | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "orderType": "scheduled", "scheduling": { "availabilities": [ {"availability": "eventDriven"} ], "frequency": "monthly", "startDate": "2018-01-01" }, "parameters": { "reportLanguage": "en", "portfolioId": "E0002" }, "orderStatus": "active", "orderName": "E0002 monthly two pager EN" } | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "orderType": "scheduled", "scheduling": { "frequency": "daily", "startDate": "2018-01-01", "endDate": "2018-01-01" }, "parameters": { "reportLanguage": "en", "portfolioId": "E0002" }, "orderStatus": "active", "orderName": "E0002 monthly two pager EN" } |
Created in | Report Order Management | Report Order Management | Report Order Management |
Triggered by | User | Automatically when data of sufficient quality is available | Automatically on the requested date |
Batch vs. Non-Batch
Batch | Non-Batch | |
---|---|---|
Example | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "orderType": "scheduled", "scheduling": { "availabilities": [ {"availability": "eventDriven"} ], "frequency": "monthly", "startDate": "2018-01-01" }, "parameters": { "reportLanguage*": ["de", "en"], "portfolioId*": ["E0002", "E0001"] }, "orderStatus": "active", "orderName": "E0002 monthly two pager EN" } This order results in 4 reports; one for both portfolios in either language. | { "reportType": "sample_TwoPager", "outputFormat": "pdf", "orderType": "scheduled", "scheduling": { "availabilities": [ {"availability": "eventDriven"} ], "frequency": "monthly", "startDate": "2018-01-01" }, "parameters": { "reportLanguage": "en", "portfolioId": "E0002" }, "orderStatus": "active", "orderName": "E0002 monthly two pager EN" } |
Created in | Report Order Management | Report Order Management |
Triggered by | User or automatically | User or automatically |
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" }
Reference: Order Properties
These properties configure the general report order.
Property | Type | Description | Examples / Values | Required | Can use star |
---|---|---|---|---|---|
reportType | string | The type of the report defining the structure of contents | "Fixed Income Two-Pager" | YES | YES |
outputFormat | string | Select the format of the output (pdf creates word & pdf) | word, pdf, json | YES | YES |
parameters | See separate table: https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/2881159181/Working+with+Report+Orders%3A+Advanced+mode%2C+JSON+Parameters%2C+and+Batch+Orders+in+Depth#Order-Level-Parameters | YES | YES | ||
orderStatus | string | The status of the order: Can be active or inactive. Inactive orders are not considered for scheduling. | "active", "inactive" | NO | NO |
orderType | string | Whether the order should be considered for automated scheduling or will be scheduled manually. | "scheduled", "manual" | NO | NO |
orderName | string | The name of the order. | "E0002 monthly two pager" | NO | NO |
printerName | string | The printer to use for printing. Only applicable if the output format is set to 'print'. | NO | NO | |
priority | number | The priority of the execution in the production queue. Lower number is higher priority. | NO | NO | |
scheduling | See separate table: https://bmpi.atlassian.net/wiki/spaces/CRDOC/pages/2881159181/Working+with+Report+Orders%3A+Advanced+mode%2C+JSON+Parameters%2C+and+Batch+Orders+in+Depth#Scheduling-Parameters | Required for automatically scheduled orders but not for ad hoc orders and manually scheduled orders | NO | ||
orderId | string | The id of the order. Ad hoc orders do not have an id. The id is automatically generated and only needs to be passed if an already existing order is supposed to be updated. | NO | NO |
Order Level Parameters
These generic parameters configure the report to be produced. These core parameters are available for all versions of Cinnamon. More parameters are available depending on the Cinnamon solution used.
Parameter | Type | Description | Examples / Values |
---|---|---|---|
portfolioId | string | The id of the portfolio, consolidation or other business object to report about. | “E0002” |
reportingDate | Date | The date to to report about. Has to be formatted as "YYYY-MM-DD". | “2019-03-31” |
reportLanguage | string | The language to report in. | “en” |
availableLanguages | string[] | The language to generate abstract report in. | [“en”, “de”] |
reportTitle | string | The title of a report. | “E0002 Quarterly report” |
reportSubtitle | string | The subtitle of a report. | “Q1 2019” |
profile | string | Name of the used profile. The profile configures all parameters needed by solution specific blocks | “equityProfile” |
resolveTexts | boolean | ||
resolveValues | boolean | ||
resolveCharts | boolean | Whether charts should be resolved to SVG. | |
validateSchema | boolean | Whether data hub query responses should be validated by the corresponding JSON schema | |
verifyRules | boolean | Whether data hub query responses should be validated by the corresponding [[Validatable.verified]] function | |
refreshCache | boolean | Whether the report production should forcefully refresh all cache entries visited. |
Scheduling Parameters
MANDATORY: parameters are mandatory for automatic scheduling based on data availabilities.
Property | Description | Type | Examples / Values |
---|---|---|---|
| Start date of the scheduling. | Date | 2021-01-01 |
| End date of the scheduling. | Date | 2021-12-31 |
| Frequency of the scheduling. | one of the below strings:
| “daily” |
| Selection of points, where the report should be scheduled |
| |
| List of data availabilities the reports should be created for. |
| [ {"availability": "eventDriven"}, {"availability": "signedOff"} ] |
Add Comment