diff --git a/full-ifrs17-template/Export/MapTemplate.ipynb b/full-ifrs17-template/Export/MapTemplate.ipynb
index 0b4a1094..f9062ea3 100644
--- a/full-ifrs17-template/Export/MapTemplate.ipynb
+++ b/full-ifrs17-template/Export/MapTemplate.ipynb
@@ -48,16 +48,17 @@
{
"cell_type": "markdown",
"source": [
- "Choose to run the Map Template either with the set of Systemorph data in memory or with the data present in the Database. Uncomment the desired option."
+ "Choose to run the Map Template either with the set of Systemorph data in memory or with the data present in the Database: ",
+ "\n- #!eval-notebook \"../Database/Configure\" : connects to a physical Database",
+ "\n- #!eval-notebook \"../Import/CloseImportTemplate\" : uses the in-memory set up",
+ "\n",
+ "\nWe use here the in-memory set up."
]
},
{
"cell_type": "code",
"source": [
- "/* The DataSource is configured and connected to real database */",
- "\n//#!eval-notebook \"../Database/Configure\"",
- "\n/* The Systemorph set of dimensions + mockdata (+ those added in the CloseImportTemplate) are dispatched to the unconfigured in-memory DataSource */",
- "\n#!eval-notebook \"../Import/CloseImportTemplate\""
+ "#!eval-notebook \"../Import/CloseImportTemplate\""
]
},
{
diff --git a/full-ifrs17-template/Import/CloseImportTemplate.ipynb b/full-ifrs17-template/Import/CloseImportTemplate.ipynb
index eae574bf..7bb5d82e 100644
--- a/full-ifrs17-template/Import/CloseImportTemplate.ipynb
+++ b/full-ifrs17-template/Import/CloseImportTemplate.ipynb
@@ -18,7 +18,13 @@
{
"cell_type": "markdown",
"source": [
- "
Close Imports Template
"
+ "*Note: before configuring your data please refer to [Map Template](../Export/MapTemplate) Notebook.*"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ " Close Import Template
"
]
},
{
@@ -40,6 +46,16 @@
"\nThe data source is initialized and the whole IFRS 17 Calculation Engine code is compiled. "
]
},
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Choose to run the Close Import Template notebook either on top of the set of Systemorph data in memory or on top to the data present in the Database: ",
+ "\n- #!eval-notebook \"../Database/Configure\" : connects to a physical Database",
+ "\n- #!eval-notebook \"../Initialization/InitSystemorphToMemory\" : uses the in-memory set up",
+ "\n",
+ "\nWe use here the in-memory set up."
+ ]
+ },
{
"cell_type": "code",
"source": [
diff --git a/full-ifrs17-template/README.md b/full-ifrs17-template/README.md
index 3a4c25fc..d1d48400 100644
--- a/full-ifrs17-template/README.md
+++ b/full-ifrs17-template/README.md
@@ -21,11 +21,15 @@ For more information on our IFRS 17 initiative check out our [IFRS 17 page](*lan
For an overview of the **Full IFRS 17 Template** project refer to the [OverviewIFRS17Template](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/OverviewIFRS17Template)
-# Report
+# Report
Check out the IFRS 17 reports computed for our mock use-cases [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Report/Reports).
-Check out the our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate).
+# Export - Import
+
+Check out our mock data set by exporting excel MapTemplates [here](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Export/MapTemplate).
+
+Import your custom files using our [CloseImportTemplate](https://portal.systemorph.cloud/project/full-ifrs-17-template/env/v1.0.0/Import/CloseImportTemplate) Notebook.
# Got Questions
diff --git a/full-ifrs17-template/Report/Reports.ipynb b/full-ifrs17-template/Report/Reports.ipynb
index 5d9ef4db..b31f2e68 100644
--- a/full-ifrs17-template/Report/Reports.ipynb
+++ b/full-ifrs17-template/Report/Reports.ipynb
@@ -27,10 +27,10 @@
{
"cell_type": "markdown",
"source": [
- "For demonstration purposes we import here data for 7 *Group of Insurance Contract* (GIC) and 4 *Group of Reinsurance Contract* (GRIC) - the import is triggered in the [Set up data and configuration](#set-up-data-and-configuration).",
- "\n
The imported data set consists of cashflows, actuals, and parameters for two consecutive periods (Year 2020-Quarter 4 and Year 2021-Quarter 1)",
- "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own or to add new data in the [CloseImportTemplate](../Import/CloseImportTemplate) notebook. ",
- "\n
For simplicity, we import the same transactional data for all GICs and GRICs. Each *Group of Contracts* produces different figures due to differences in parameters such as *Liability Type*, *Oci type* or *Premium allocation factor* to Contractual Service Margin.",
+ "For demonstration purposes we import here data for some *Group of Insurance Contract* (GIC) and *Group of Reinsurance Contract* (GRIC) - the import is triggered in the [Set up data and configuration](#set-up-data-and-configuration).",
+ "\n
The imported data set consists of cashflows, actuals, and parameters.",
+ "\n
Input files can be found in the **File** directory. You are invited to change them or upload your own or add new data in the [CloseImportTemplate](../Import/CloseImportTemplate) notebook. ",
+ "\n
For simplicity, we import similar transactional data for all GICs and GRICs. Each *Group of Contracts* produces different figures due to differences in parameters such as *Liability Type*, *Oci type* or *Premium allocation factor* to Contractual Service Margin.",
"\n",
"\nFollow the instructions below for a guided interaction with the reports."
]
@@ -38,7 +38,13 @@
{
"cell_type": "markdown",
"source": [
- "# Set up data and configuration"
+ "# Set up data and configuration",
+ "\n",
+ "\nChoose to run the Reports notebook either with the set of Systemorph data in memory or with the data present in the Database: ",
+ "\n- #!eval-notebook \"../Database/Configure\" : connects to a physical Database",
+ "\n- #!eval-notebook \"../Import/CloseImportTemplate\" : uses the in-memory set up",
+ "\n",
+ "\nWe use here the in-memory set up."
]
},
{
@@ -108,7 +114,7 @@
"\n[Written Actuals](https://portal.systemorph.cloud/project/ifrs17/env/v1.0.0/Report/ReportScopes#written-accrual-deferral) are shown here. ",
"\n",
"\nIn this case, the analysis of change view is replaced with a default slice by the **AmountTypes**. Only the amount type with non zero value are displayed. ",
- "\nFilters can be applied to report to isolate a sub-set of the data, by selecting the dimension to filter and the system value desired. For example, to investigate the contribution of a single Group of Contract the following filter can be applied: new [] {(\"GroupOfContract\", \"DT1.1\")}."
+ "\n
Filters can be applied to reports in order to isolate a sub-set of the data. They are specified by the name of the dimension to filter and the system name of the desired value. For example, to investigate the contribution of a single Group of Contract the following filter can be applied: new [] {(\"GroupOfContract\", \"DT1.1\")}."
]
},
{
@@ -260,7 +266,7 @@
"var actuarialLrcReport = ifrs17Report.ActuarialLrc;",
"\nactuarialLrcReport.ReportingNode = \"CH\";",
"\nactuarialLrcReport.ReportingPeriod = (2021, 3);",
- "\nactuarialLrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"",
+ "\nactuarialLrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\"",
"\nactuarialLrcReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};",
"\n(await actuarialLrcReport.ToReportAsync) with {Height = 750}"
]
@@ -279,7 +285,7 @@
"var lrcReport = ifrs17Report.Lrc;",
"\nlrcReport.ReportingNode = \"CH\";",
"\nlrcReport.ReportingPeriod = (2021, 3);",
- "\nlrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"",
+ "\nlrcReport.ColumnSlices = new string[]{};//\"GroupOfContract\",",
"\nlrcReport.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.1\")};",
"\n(await lrcReport.ToReportAsync) with {Height = 250}"
]
diff --git a/ifrs17/DataModel/DataStructure.ipynb b/ifrs17/DataModel/DataStructure.ipynb
index 636e87a9..36026b3c 100644
--- a/ifrs17/DataModel/DataStructure.ipynb
+++ b/ifrs17/DataModel/DataStructure.ipynb
@@ -1627,7 +1627,6 @@
"\n [NotVisible]",
"\n [Dimension(typeof(EconomicBasis))]",
"\n [IdentityProperty]",
- "\n [AggregateBy]",
"\n public string EconomicBasis { get; init; }",
"\n ",
"\n public double Value { get; init; }",
diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb
index d8c0a918..66c34b78 100644
--- a/ifrs17/Import/Importers.ipynb
+++ b/ifrs17/Import/Importers.ipynb
@@ -331,18 +331,6 @@
"\nThe new Aoc Configurations are created with the same order of the Aoc Types. "
]
},
- {
- "cell_type": "code",
- "source": [
- ""
- ]
- },
- {
- "cell_type": "code",
- "source": [
- ""
- ]
- },
{
"cell_type": "code",
"source": [
diff --git a/ifrs17/Report/ReportMutableScopes.ipynb b/ifrs17/Report/ReportMutableScopes.ipynb
index 68b45530..b34cea87 100644
--- a/ifrs17/Report/ReportMutableScopes.ipynb
+++ b/ifrs17/Report/ReportMutableScopes.ipynb
@@ -96,13 +96,15 @@
"\n ((int Year, int Month) ReportingPeriod, string ReportingNode, string Scenario, CurrencyType) ShowSettings => (ReportingPeriod, ReportingNode, Scenario, CurrencyType);",
"\n ",
"\n // Slice and Dice",
+ "\n protected string[] forbiddenSlices => new string[] { };",
+ "\n",
"\n IEnumerable RowSlices { get; set; }",
"\n protected string[] defaultRowSlices => new string[] { };",
- "\n protected string[] rowSlices => RowSlices is null ? defaultRowSlices : defaultRowSlices.Concat(RowSlices).ToArray();",
+ "\n protected string[] rowSlices => RowSlices is null ? defaultRowSlices : defaultRowSlices.Concat(RowSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();",
"\n",
"\n IEnumerable ColumnSlices { get; set; }",
"\n protected string[] defaultColumnSlices => new string[] { };",
- "\n protected string[] columnSlices => ColumnSlices is null ? defaultColumnSlices : defaultColumnSlices.Where(cs => !ColumnSlices.Contains(cs)).Concat(ColumnSlices).ToArray(); //I can't put a slice before defaultSlices !!!",
+ "\n protected string[] columnSlices => ColumnSlices is null ? defaultColumnSlices : defaultColumnSlices.Where(cs => !ColumnSlices.Contains(cs)).Concat(ColumnSlices).Where(x => !forbiddenSlices.Contains(x)).ToArray();",
"\n protected HashSet<(ReportIdentity, CurrencyType)> GetIdentities() => GetStorage().GetIdentities(ReportingPeriod, ReportingNode, Scenario, CurrencyType);",
"\n ",
"\n // Filter",
@@ -144,6 +146,7 @@
"\n}",
"\n",
"\npublic interface RaReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] { \"Novelty\", \"VariableType\" };",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"LiabilityType\", \"EconomicBasis\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -154,6 +157,7 @@
"\n}",
"\n",
"\npublic interface WrittenReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {nameof(EconomicBasis)};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"AmountType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"LiabilityType\"};",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -195,6 +199,7 @@
"\n : GetScopes(GetIdentities()).Aggregate().ActuarialExperienceAdjustment.Filter(dataFilter);",
"\n}",
"\npublic interface TmReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\", \"VariableType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -202,6 +207,7 @@
"\n : GetScopes(GetIdentities()).Aggregate().LrcTechnicalMargin.Filter(dataFilter);",
"\n}",
"\npublic interface CsmReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\", \"VariableType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -213,6 +219,7 @@
"\n GetScopes(GetIdentities()).Aggregate().Loreco.Filter(dataFilter);",
"\n}",
"\npublic interface ActLrcReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\",\"VariableType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -220,6 +227,7 @@
"\n : GetScopes(GetIdentities()).Aggregate().LrcActuarial.Filter(dataFilter);",
"\n}",
"\npublic interface LrcReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -227,6 +235,7 @@
"\n : GetScopes(GetIdentities()).Aggregate().Lrc.Filter(dataFilter);",
"\n}",
"\npublic interface ActLicReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"Novelty\",\"VariableType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -234,6 +243,7 @@
"\n : GetScopes(GetIdentities()).Aggregate().LicActuarial.Filter(dataFilter);",
"\n}",
"\npublic interface LicReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\"};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\", \"EstimateType\" };",
"\n IDataCube IIfrs17Report.GetDataCube() => DataFilter == null ",
@@ -241,6 +251,7 @@
"\n : GetScopes(GetIdentities()).Aggregate().Lic.Filter(dataFilter);",
"\n}",
"\npublic interface FpReport : IIfrs17Report {",
+ "\n string[] IIfrs17Report.forbiddenSlices => new string[] {\"AmountType\", nameof(EconomicBasis)};",
"\n string[] IIfrs17Report.defaultRowSlices => new string[] {\"VariableType\", \"EstimateType\"};",
"\n string[] IIfrs17Report.defaultColumnSlices => new string[] { \"Currency\",\"LiabilityType\" };",
"\n int IIfrs17Report.headerColumnWidthValue => 500;",
diff --git a/ifrs17/Report/ReportScopes.ipynb b/ifrs17/Report/ReportScopes.ipynb
index f4f56181..b8a73b15 100644
--- a/ifrs17/Report/ReportScopes.ipynb
+++ b/ifrs17/Report/ReportScopes.ipynb
@@ -385,7 +385,7 @@
"",
"\n## LIC (Liability for Incurred Claims)",
"\n",
- "\nLiability of Incurred Claims (LIC) report includes the contributions from [Lic Actuarial](#lic-actuarial) (Fullfilment Cashflow), [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual."
+ "\nLiability of Incurred Claims (LIC) report includes the contributions from [LIC Actuarial](#lic-actuarial) (Fullfilment Cashflow), [Advance](#written-accrual-deferral) Actual, and [Overdue](#written-accrual-deferral) Actual."
]
},
{