<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sdmxcloud.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Plazarou</id>
	<title>Fusion Registry Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sdmxcloud.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Plazarou"/>
	<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/Special:Contributions/Plazarou"/>
	<updated>2026-05-20T04:50:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6728</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6728"/>
		<updated>2024-04-29T15:14:46Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 10.9.7 (Future Release Not Yet Available) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.7 (Future Release Not Yet Available)==&lt;br /&gt;
[RFS-422] - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[RELEASEMGT-23411]- Addressed issue where deleting an artefact that does not exist, the system returns HTTP 500 instead of expected 404&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Registry_Properties_File&amp;diff=6727</id>
		<title>Registry Properties File</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Registry_Properties_File&amp;diff=6727"/>
		<updated>2024-04-29T08:01:30Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* File Location */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:How_To]]&lt;br /&gt;
[[Category:Fusion Registry Install]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The Fusion Registry properties file contains the connection details to the Fusion Registry database.  The database password is encrypted, however other properties such as database platform and schema are in clear text.&lt;br /&gt;
&lt;br /&gt;
Whilst the properties file can be modified directly, it is reccomended to use the Fusion Registry User Interface to adminster all registry settings.&lt;br /&gt;
&lt;br /&gt;
= File Location =&lt;br /&gt;
Whilst all of the installation is performed via the Web User Interface, database connection details are stored in a local properties file.&lt;br /&gt;
&lt;br /&gt;
Unlike previous versions of the Fusion Registry it is recommended that you do not modify the values in this file, as all settings are configured via the web User Interface.&lt;br /&gt;
&lt;br /&gt;
The properties file is only read at start-up and changing any of the values in the Fusion Registry properties file whilst Fusion Registry is running will have no effect.&lt;br /&gt;
&lt;br /&gt;
The properties file is called:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;fusion_registry.properties&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fusion Registry will attempt to save a new properties file to the directory:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;user home&amp;gt;\MetadataTechnology\FusionRegistry&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore, on a Windows 7 Operating System this will typically be:&lt;br /&gt;
&amp;lt;code&amp;gt;C:\users\&amp;lt;your user name&amp;gt;\MetadataTechnology\FusionRegistry&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whereas on a Unix Operating System, it is more likely to be located at: &amp;lt;code&amp;gt;/users/&amp;lt;your user name&amp;gt;/MetadataTechnology/FusionRegistry&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are running Tomcat as a Windows service, then the Home directory is likely to be: &amp;lt;code&amp;gt;C:\Windows\System32\config\systemprofile&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the file is likely to be located at: &amp;lt;code&amp;gt;C:\Windows\System32\config\systemprofile\MetadataTechnology\FusionRegistry&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Fusion Registry start-up the Registry will search for a Properties file in this order:&lt;br /&gt;
#  The location [[Tomcat_setenv_file|explicitly set in an environment variable]] - RegistryProperties&lt;br /&gt;
#  The default location as decribed above&lt;br /&gt;
#  If all else fails, the location will revert to &amp;lt;code&amp;gt;[tomcat]/WEB-INF/classes/fusion_registry.properties&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are unsure about which of the files Fusion Registry is using to obtain system information, please look at the start-up log in your web application server. There will be entries like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INFO localhost-startStop-1 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from class path resource [fusion_registry.properties]&lt;br /&gt;
15&lt;br /&gt;
INFO localhost-startStop-1 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from URL [file:/C:/Users/&amp;lt;username&amp;gt;/FusionRegistry/fusion_registry.properties]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= File Contents =&lt;br /&gt;
The file stores three pieces of information:&lt;br /&gt;
# Database connection details&lt;br /&gt;
# Directory to use to store temporary files&lt;br /&gt;
# Root user credentials&lt;br /&gt;
 &lt;br /&gt;
The file looks like this: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
#Modified on Fri Mar 27 07:58:12 GMT 2020&lt;br /&gt;
#Fri Mar 27 07:58:12 GMT 2020&lt;br /&gt;
database.dialect=org.hibernate.dialect.MySQL55Dialect&lt;br /&gt;
database.driver=com.mysql.cj.jdbc.Driver&lt;br /&gt;
database.password=oMPSQtPj37lo1hrttvAhkQ\=\=metatech&lt;br /&gt;
database.url=jdbc\:mysql\://localhost\:3306/registry_datbabase&lt;br /&gt;
database.useCustomString=false&lt;br /&gt;
database.username=root&lt;br /&gt;
java.tmp=C\:\\Tomcats\\Tomcat-7.0.56-Registry-8080\\temp&lt;br /&gt;
security.auth.prov=registry&lt;br /&gt;
security.password=$2a$10$fhuzUaxFXv/qEN2hhuEc6O1FKUyHynebocAmWGyayAFPWfweMkpM.&lt;br /&gt;
security.username=root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Passwords are encrypted using [https://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES-256] encryption.&lt;br /&gt;
&lt;br /&gt;
Values can be directly modified in the properties file, however an application restart is required for these changes to take effect.  The Fusion Registry User Interface provides an Admin UI to modify any settings (including ones stored in the Registry database) and should be used over direct modification to the file if possible.&lt;br /&gt;
&lt;br /&gt;
= What Happens if the properties file is deleted? =&lt;br /&gt;
If the properties file is deleted, fear not.  On application server restart, the Fusion Registry will redirect to the Install wizard.  Upon entering the connection details to the database that was previously used, the Registry will detect it is already installed and redirect to the home page.  If the database connection is to a new database, then the remainder of the install wizard should be completed to re-install the product.&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Refresh_Caches_Web_Service&amp;diff=6726</id>
		<title>Refresh Caches Web Service</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Refresh_Caches_Web_Service&amp;diff=6726"/>
		<updated>2024-04-29T07:21:45Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Registry has a Web Service that when invoked will rebuild the caches in the Registry.  It is extremely unlikely that you will need to invoke this Web Service as part of the normal running operation of the Registry, but the facility is here if required.&lt;br /&gt;
&lt;br /&gt;
This functionality was introduced in version 11.6.0 of Fusion Metadata Registry.&lt;br /&gt;
&lt;br /&gt;
==Refresh Web Service==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/admin/refresh&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Unauthorized&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is an optional parameter &amp;quot;rebuildSchema&amp;quot; which when specified and has the value &amp;quot;true&amp;quot; will also rebuild the database schema.  This will only occur if the tables are not present for some reason.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Refresh the caches&lt;br /&gt;
 https://example.registry.com/ws/secure/admin/refresh&lt;br /&gt;
&lt;br /&gt;
Refresh the caches and request that the schemas are rebuilt.&lt;br /&gt;
 https://example.registry.com/ws/secure/admin/refresh?rebuildSchema=true&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6725</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6725"/>
		<updated>2024-04-25T10:19:54Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 10.9.7 (Future Release Not Yet Available) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.7 (Future Release Not Yet Available)==&lt;br /&gt;
[RFS-422] - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[RELEASEMGT-23411]- Addressed issue where deleting an artetefact that does not exist, the system returns HTTP 500 instead of expected 404&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6724</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6724"/>
		<updated>2024-04-25T10:17:19Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 10.9.7 (Future Release Not Yet Available) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.7 (Future Release Not Yet Available)==&lt;br /&gt;
[RFS-422] - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[]- Addressed issue where delete request returned HTTP 500 not a 404&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6723</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6723"/>
		<updated>2024-04-25T10:09:01Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 10.9.7 (Future Release Not Yet Available) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.7 (Future Release Not Yet Available)==&lt;br /&gt;
- Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
- Addressed issue where delete request returned HTTP 500 not a 404&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6722</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6722"/>
		<updated>2024-04-25T10:08:52Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 10.9.6 (Released: 2024/02/21) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.7 (Future Release Not Yet Available)==&lt;br /&gt;
- Updated third-party dependencies&lt;br /&gt;
- Addressed issue where delete request returned HTTP 500 not a 404&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Explanation_of_Registry_Tables&amp;diff=6721</id>
		<title>Explanation of Registry Tables</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Explanation_of_Registry_Tables&amp;diff=6721"/>
		<updated>2024-04-25T09:13:40Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:How_To]]&lt;br /&gt;
The following lists ''some'' of the tables that the Registry creates, along with a description of the tables' purpose.&lt;br /&gt;
&lt;br /&gt;
'''Important Notes:''' The database tables are primarily used for persistence of Registry information. Do not expect modifying database values to have any effect on a running Registry. Regnology does not recommend modifying database tables '''unless explicitly instructed to do so'''.&lt;br /&gt;
&lt;br /&gt;
==== Structural Metadata Persistence ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Table Name &lt;br /&gt;
!| Description&lt;br /&gt;
|-&lt;br /&gt;
|registry_maintainables&lt;br /&gt;
|A list of all the maintainables in the Registry.&lt;br /&gt;
|-&lt;br /&gt;
|registry_maintainable_sdmx&lt;br /&gt;
|Each maintainable in the Registry stored in its SDMX form.&lt;br /&gt;
|-&lt;br /&gt;
|registry_maintainable_ser&lt;br /&gt;
|Each maintainable in the Registry stored as a Java serialised object. This is used for performance purposes as de-serialising a serialised object is faster than recreating it from its SDMX form.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Transactional Information ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Table Name &lt;br /&gt;
!| Description&lt;br /&gt;
|-&lt;br /&gt;
|tx_backup&lt;br /&gt;
|Stores the transaction number for each individual structure submission / modification. Note a single transaction can be for multiple metadata structures&lt;br /&gt;
|-&lt;br /&gt;
|sdmx_transaction&lt;br /&gt;
|Stores information about each transaction, such as the user who performed it, the date and event type (Replace, Delete, etc)&lt;br /&gt;
|-&lt;br /&gt;
|sdmx_transaction_item&lt;br /&gt;
|Links the URN of a individual structural metadata to a transaction number. &lt;br /&gt;
|-&lt;br /&gt;
|sdmx_backup&lt;br /&gt;
|Stores a binary image of the transaction in gzipped format of the XML&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Registry Settings ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Table Name &lt;br /&gt;
!| Description&lt;br /&gt;
|-&lt;br /&gt;
|registry_settings&lt;br /&gt;
|Persists most of the registry settings in a key / value format where the column &amp;quot;name&amp;quot; identifies the setting and the column &amp;quot;value&amp;quot; its value.&lt;br /&gt;
|-&lt;br /&gt;
|registry_settings_dv&lt;br /&gt;
|Persists the data validation settings of the Registry&lt;br /&gt;
|-&lt;br /&gt;
|registry_settings_ser&lt;br /&gt;
|Serialised Registry settings. This is used for when the the setting to be stored cannot be described as a string in the registry_settings table and its serialised form needs to be persisted.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6711</id>
		<title>Reference Metadata API</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6711"/>
		<updated>2024-04-09T08:04:28Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
[[Category:Reference_Metadata]]&lt;br /&gt;
&lt;br /&gt;
See [[Reference_Metadata|Reference Metadata]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
This API supports GET (retrieve reference metadata), POST (submit new or modified reports), and DELETE (remove existing reports) methods to maintain Reference Metadata Reports.  &lt;br /&gt;
&lt;br /&gt;
The GET methods conform to the [https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md SDMX REST Specification for reference metadata retrieval].&lt;br /&gt;
&lt;br /&gt;
== GET Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md See Specification].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Get specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Get all metadata sets for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT.PROVIDER/*/*&lt;br /&gt;
&lt;br /&gt;
Get all reports against Metadataflow as Stubs (only include basic details, not the actual reported content)&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0?detail=allStubs&lt;br /&gt;
&lt;br /&gt;
Get  all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Get all reports against any BIS Codelist&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/structure/codelist/BIS&lt;br /&gt;
&lt;br /&gt;
== POST Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| [https://github.com/sdmx-twg/sdmx-json/tree/master/metadata-message SDMX-JSON]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/json (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Submit a Reference Metadata report, on success an HTTP 200 status is returned.  On failure an SDMX Error message is returned with the HTTP status code set to the appropriate code.  &lt;br /&gt;
&lt;br /&gt;
Example Error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;message:Error xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:message=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message&amp;quot; xmlns:com=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message:ErrorMessage code=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;com:Text&amp;gt;Could not resolve reference from structure Metadata Set 'MT:EXAMPLE1.0.0)' to structure Metadata Provision Agreement 'MT:MUK1_EXAMPLE(1.0)'&amp;lt;/com:Text&amp;gt;&lt;br /&gt;
  &amp;lt;/message:ErrorMessage&amp;gt;&lt;br /&gt;
 &amp;lt;/message:Error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DELETE Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| DELETE&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Deletes all reference metadata reports which match the query URL, the path parameters following the /metadata/ are used to create a filter on the Metadata Reports.  The path uses the same syntax as the &lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md GET parameters], it is therefore possible to delete by specific report identifiers, by metadataflow, or by structure query.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Delete specific report&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all versions of report&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataset/MT/REPORT1/*&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Delete all reports against all BIS Codelists&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/strucure/codelist/BIS&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6710</id>
		<title>Reference Metadata API</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6710"/>
		<updated>2024-04-04T09:02:24Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
[[Category:Reference_Metadata]]&lt;br /&gt;
&lt;br /&gt;
See [[Reference_Metadata|Reference Metadata]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
This API supports GET (retrieve reference metadata), POST (submit new or modified reports), and DELETE (remove existing reports) methods to maintain Reference Metadata Reports.  &lt;br /&gt;
&lt;br /&gt;
The GET methods conform to the [https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md SDMX REST Specification for reference metadata retrieval].&lt;br /&gt;
&lt;br /&gt;
== GET Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md See Specification].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Get specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Get all metadata sets for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT.PROVIDER/*/*&lt;br /&gt;
&lt;br /&gt;
Get all reports against Metadataflow as Stubs (only include basic details, not the actual reported content)&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0?detail=allStubs&lt;br /&gt;
&lt;br /&gt;
Get  all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Get all reports against any BIS Codelist&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;br /&gt;
&lt;br /&gt;
== POST Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| [https://github.com/sdmx-twg/sdmx-json/tree/master/metadata-message SDMX-JSON]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/json (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Submit a Reference Metadata report, on success an HTTP 200 status is returned.  On failure an SDMX Error message is returned with the HTTP status code set to the appropriate code.  &lt;br /&gt;
&lt;br /&gt;
Example Error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;message:Error xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:message=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message&amp;quot; xmlns:com=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message:ErrorMessage code=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;com:Text&amp;gt;Could not resolve reference from structure Metadata Set 'MT:EXAMPLE1.0.0)' to structure Metadata Provision Agreement 'MT:MUK1_EXAMPLE(1.0)'&amp;lt;/com:Text&amp;gt;&lt;br /&gt;
  &amp;lt;/message:ErrorMessage&amp;gt;&lt;br /&gt;
 &amp;lt;/message:Error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DELETE Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| DELETE&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Deletes all reference metadata reports which match the query URL, the path parameters following the /metadata/ are used to create a filter on the Metadata Reports.  The path uses the same syntax as the &lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md GET parameters], it is therefore possible to delete by specific report identifiers, by metadataflow, or by structure query.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Delete specific report&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all versions of report&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataset/MT/REPORT1/*&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Delete all reports against all BIS Codelists&lt;br /&gt;
 https://example.registry.com/ws/secure/sdmx/v2/metadata/strucure/codelist/BIS&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6709</id>
		<title>Reference Metadata API</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6709"/>
		<updated>2024-04-04T08:45:23Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* DELETE Reference Metadata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
[[Category:Reference_Metadata]]&lt;br /&gt;
&lt;br /&gt;
See [[Reference_Metadata|Reference Metadata]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
This API supports GET (retrieve reference metadata), POST (submit new or modified reports), and DELETE (remove existing reports) methods to maintain Reference Metadata Reports.  &lt;br /&gt;
&lt;br /&gt;
The GET methods conform to the [https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md SDMX REST Specification for reference metadata retrieval].&lt;br /&gt;
&lt;br /&gt;
== GET Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md See Specification].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Get specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Get all metadata sets for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT.PROVIDER/*/*&lt;br /&gt;
&lt;br /&gt;
Get all reports against Metadataflow as Stubs (only include basic details, not the actual reported content)&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0?detail=allStubs&lt;br /&gt;
&lt;br /&gt;
Get  all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Get all reports against any BIS Codelist&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;br /&gt;
&lt;br /&gt;
== POST Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| [https://github.com/sdmx-twg/sdmx-json/tree/master/metadata-message SDMX-JSON]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/json (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Submit a Reference Metadata report, on success an HTTP 200 status is returned.  On failure an SDMX Error message is returned with the HTTP status code set to the appropriate code.  &lt;br /&gt;
&lt;br /&gt;
Example Error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;message:Error xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:message=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message&amp;quot; xmlns:com=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message:ErrorMessage code=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;com:Text&amp;gt;Could not resolve reference from structure Metadata Set 'MT:EXAMPLE1.0.0)' to structure Metadata Provision Agreement 'MT:MUK1_EXAMPLE(1.0)'&amp;lt;/com:Text&amp;gt;&lt;br /&gt;
  &amp;lt;/message:ErrorMessage&amp;gt;&lt;br /&gt;
 &amp;lt;/message:Error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DELETE Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| DELETE&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Deletes all reference metadata reports which match the query URL, the path parameters following the /metadata/ are used to create a filter on the Metadata Reports.  The path uses the same syntax as the &lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md GET parameters], it is therefore possible to delete by specific report identifiers, by metadataflow, or by structure query.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Delete specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all versions of report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/*&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Delete all reports against all BIS Codelists&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6708</id>
		<title>Reference Metadata API</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6708"/>
		<updated>2024-04-04T08:44:58Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* POST Reference Metadata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
[[Category:Reference_Metadata]]&lt;br /&gt;
&lt;br /&gt;
See [[Reference_Metadata|Reference Metadata]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
This API supports GET (retrieve reference metadata), POST (submit new or modified reports), and DELETE (remove existing reports) methods to maintain Reference Metadata Reports.  &lt;br /&gt;
&lt;br /&gt;
The GET methods conform to the [https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md SDMX REST Specification for reference metadata retrieval].&lt;br /&gt;
&lt;br /&gt;
== GET Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md See Specification].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Get specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Get all metadata sets for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT.PROVIDER/*/*&lt;br /&gt;
&lt;br /&gt;
Get all reports against Metadataflow as Stubs (only include basic details, not the actual reported content)&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0?detail=allStubs&lt;br /&gt;
&lt;br /&gt;
Get  all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Get all reports against any BIS Codelist&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;br /&gt;
&lt;br /&gt;
== POST Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:red'&amp;gt;&amp;lt;b&amp;gt;Secure&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| [https://github.com/sdmx-twg/sdmx-json/tree/master/metadata-message SDMX-JSON]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/json (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Submit a Reference Metadata report, on success an HTTP 200 status is returned.  On failure an SDMX Error message is returned with the HTTP status code set to the appropriate code.  &lt;br /&gt;
&lt;br /&gt;
Example Error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;message:Error xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:message=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message&amp;quot; xmlns:com=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message:ErrorMessage code=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;com:Text&amp;gt;Could not resolve reference from structure Metadata Set 'MT:EXAMPLE1.0.0)' to structure Metadata Provision Agreement 'MT:MUK1_EXAMPLE(1.0)'&amp;lt;/com:Text&amp;gt;&lt;br /&gt;
  &amp;lt;/message:ErrorMessage&amp;gt;&lt;br /&gt;
 &amp;lt;/message:Error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DELETE Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| DELETE&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Deletes all reference metadata reports which match the query URL, the path parameters following the /metadata/ are used to create a filter on the Metadata Reports.  The path uses the same syntax as the &lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md GET parameters], it is therefore possible to delete by specific report identifiers, by metadataflow, or by structure query.  &lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Delete specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all versions of report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/*&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Delete all reports against all BIS Codelists&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6707</id>
		<title>Reference Metadata API</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Reference_Metadata_API&amp;diff=6707"/>
		<updated>2024-04-04T08:43:03Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* POST Reference Metadata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
[[Category:Reference_Metadata]]&lt;br /&gt;
&lt;br /&gt;
See [[Reference_Metadata|Reference Metadata]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
This API supports GET (retrieve reference metadata), POST (submit new or modified reports), and DELETE (remove existing reports) methods to maintain Reference Metadata Reports.  &lt;br /&gt;
&lt;br /&gt;
The GET methods conform to the [https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md SDMX REST Specification for reference metadata retrieval].&lt;br /&gt;
&lt;br /&gt;
== GET Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md See Specification].&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Get specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Get all metadata sets for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT.PROVIDER/*/*&lt;br /&gt;
&lt;br /&gt;
Get all reports against Metadataflow as Stubs (only include basic details, not the actual reported content)&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0?detail=allStubs&lt;br /&gt;
&lt;br /&gt;
Get  all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Get all reports against any BIS Codelist&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;br /&gt;
&lt;br /&gt;
== POST Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/secure/sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| [https://github.com/sdmx-twg/sdmx-json/tree/master/metadata-message SDMX-JSON]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/json (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| N/A&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Submit a Reference Metadata report, on success an HTTP 200 status is returned.  On failure an SDMX Error message is returned with the HTTP status code set to the appropriate code.  &lt;br /&gt;
&lt;br /&gt;
Example Error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;message:Error xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:message=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message&amp;quot; xmlns:com=&amp;quot;http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;message:ErrorMessage code=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;com:Text&amp;gt;Could not resolve reference from structure Metadata Set 'MT:EXAMPLE1.0.0)' to structure Metadata Provision Agreement 'MT:MUK1_EXAMPLE(1.0)'&amp;lt;/com:Text&amp;gt;&lt;br /&gt;
  &amp;lt;/message:ErrorMessage&amp;gt;&lt;br /&gt;
 &amp;lt;/message:Error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DELETE Reference Metadata ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /sdmx/v2/metadata&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| DELETE&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Success&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Deletes all reference metadata reports which match the query URL, the path parameters following the /metadata/ are used to create a filter on the Metadata Reports.  The path uses the same syntax as the &lt;br /&gt;
[https://github.com/sdmx-twg/sdmx-rest/blob/master/doc/metadata.md GET parameters], it is therefore possible to delete by specific report identifiers, by metadataflow, or by structure query.  &lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Delete specific report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all versions of report&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataset/MT/REPORT1/*&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0&lt;br /&gt;
&lt;br /&gt;
Delete all reports against Metadataflow for a specific Metadata Provider&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/metadataflow/MT/MDF1/1.0/PROVIDER1&lt;br /&gt;
&lt;br /&gt;
Delete all reports against all BIS Codelists&lt;br /&gt;
 https://example.registry.com/sdmx/v2/metadata/strucure/codelist/BIS&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6687</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6687"/>
		<updated>2024-02-22T17:28:06Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6686</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6686"/>
		<updated>2024-02-22T17:25:02Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 10.9.6 (Released: 2024/02/22) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/21)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6685</id>
		<title>Change Log FR - V10</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V10&amp;diff=6685"/>
		<updated>2024-02-22T17:24:54Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 10=&lt;br /&gt;
'''Recommended Tomcat Setup Guide: https://wiki.sdmxcloud.org/Recommended_Tomcat_Setup'''&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.6 (Released: 2024/02/22)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[RF-50] - Prevent permanent 'Locked' files from persisting in the temporary directory&lt;br /&gt;
&lt;br /&gt;
==Version 10.9.5 (Released: 2024/01/18)==&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5170] - Update Vulnerable Third-Party Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5173] - Prevent Server-Side Request Forgery (SSRF) requests from Registry front page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5159] - Load Data from URL no longer supports any schemes other than &amp;quot;http&amp;quot; or &amp;quot;https&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5171] - Prevent Reflected Cross-Site Scripting (XSS) attack on Data Load Page&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5172] - Distribution of default Tomcat file &amp;quot;context.xml&amp;quot; with sameSiteCookies set to &amp;quot;strict&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.4 (Released: 2023/10/25) ==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5155] - Allow TIME_PERIOD mappings to be performed &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5163] - Update vulnerable third-party dependencies &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5166] - System Property to permit Hierarchical Codelists to be output using &amp;quot;Alias Ref&amp;quot; form    https://wiki.sdmxcloud.org/System_Properties#Properties_which_may_be_Dynamically_changed &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5162] - &amp;quot;Test Mapping&amp;quot; does not work in the UI when there is a Dataflow mapping&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5164] - Prevent EDI from producing blank series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5165] - FusionXL - Problem loading XLSX in Browse Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5167] - In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.3 (Released: 2023/06/23) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5157] - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5156] - Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Version 10.9.2 (Released: 2023/02/28) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5154] - SDMX-ML Hierarchical codelist output should be a consistent format&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.1 (Released: 2023/01/23) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5153] - Removal of redundant code&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.9.0 (Released: 2023/01/06) == &lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5151] - Removal of Alertify, JsColor and MySql Connector&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5152] - Updated further third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.10 (Released: 2022/11/04) == &lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5150] - Allow a v2.0 message to use a v2.1 half yearly TIME_PERIOD formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.9 (Released: 2022/08/31) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5148] - SQL Server does not delete temporary tables&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.8 (Released: 2022/08/10) ==&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Version 10.8.7 (Released: 2022/07/15) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset&amp;lt;br&amp;gt;&lt;br /&gt;
'''Bug fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5144] - Issue loading data into SQL Server in Registry managed table&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.6 (Released: 2022/05/26)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5136]  - New REST API arguments to control SDMX Header values - https://wiki.sdmxcloud.org/Data_Query_Web_Service#Extended_HTTP_Query_Parameters&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1223] - Updated third-party dependencies&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.5 (Released: 2022/05/11)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Updated Spring, log4j and slf4j dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1222]- Setting to specify group name when processing EDI data files&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[DEV-1195] - Corrected issue with OpenLDAP&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR-181]  - Address issue with loading external entity from malicious Excel file&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.4 (Released: 2022/01/07)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5084] - FusionXL 'createdataset' web Service - added an additional parameter to specify the maximum number of codes to return for each component&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5087] - Specifying a Custom Content Type throws a NullPointerException&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5083] - FusionXL 'createdataset' Web Service - typed attributes without constraints (e.g. max len) missing the fixed / default value in the output&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5082] - FusionXL 'createdataset' Web Service - request ignored to fix values for uncoded series attributes&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5079] - SDMX CSV: Series Key can contain unescaped commas if uncoded dimension used in series&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5078] - Reserve Proxy Mapping page: Unable to set values&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.3 (Released: 2021/11/19)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5075] - Fusion Cache is not honouring property &amp;quot;only when used with &amp;quot;includeMetrics&amp;quot; &lt;br /&gt;
&lt;br /&gt;
==Version 10.8.2 (Released: 2021/11/17)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5074] - Fusion Cache is not honouring &amp;quot;includeMetrics&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1.1 (Patch Released: 2021/11/16) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5142] - Improve constraint validation performance with Groups in dataset  (Added to Version 10.8.7)&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.1 (Released: 2021/06/08) ==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5066] - Carriage Returns in Constraint Values should be ignored&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5069] - Fixed inconsistencies in the structure cache&lt;br /&gt;
&lt;br /&gt;
==Version 10.8.0 (Released: 2021/11/08)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5064] - Support fusion cache for  structure web service&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5053] - HTTP Forward Proxy support in Fusion Registry&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5037] - JNDI database connection support&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5065] - Improve performance of constraint data validator with series constraints using plus operator&lt;br /&gt;
&lt;br /&gt;
[FR-5063] - Allow specification of Kafka behaviour on Registry Startup&lt;br /&gt;
&lt;br /&gt;
[FR-5060] - Add additional parameters to &amp;quot;Create Dataset&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5058] - Data Portal page to include more information on Dataflow&lt;br /&gt;
&lt;br /&gt;
[FR-5056] - Add SDMX 3.0 schemas to Fusion Registry&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5061] - Limit Registry to only generate first 1000 structure items for Fusion XL&lt;br /&gt;
&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5055] - Fusion Cache not purging when Data is provided&lt;br /&gt;
&lt;br /&gt;
[FR-5054] - On Data Source Manager page, broken Javascript can be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.8 (Released: 2021/10/16)==&lt;br /&gt;
'''Bug fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5051] - Constraints not being applied correctly &lt;br /&gt;
&lt;br /&gt;
[FR-5050] - Login dialog should not be displayed in error box&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.7 (Released: 2021/10/14)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5049] - Reporting Template - Read Obs Attributes when no Observation Value reported&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5048] - Stack Trace not produced for Structure and Data queries that provide no results&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.6 (Released: 2021/10/08)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5047] - Allow Cube Region Constraints to restrict on the Time Series&lt;br /&gt;
&lt;br /&gt;
[FR-5046] - Add Wildcards support to Content Constraints&lt;br /&gt;
&lt;br /&gt;
[FR-5044] - Update vulnerable Spring dependencies&lt;br /&gt;
&lt;br /&gt;
[FR-5043] - Registry CPU usage is higher than expected when using a cache&lt;br /&gt;
&lt;br /&gt;
[FR-5035] - Re-assigning Dataflow reference to DSD should check constraints&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.5 (Released: 2021/08/24)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5019] - Add additional parameters to &amp;quot;Generate Template&amp;quot; Web Service to allow for Fixed Values and Attribute Exclusion&lt;br /&gt;
&lt;br /&gt;
[FR-5039] - Add support for &amp;quot;dot&amp;quot; delimiter to Series Constraint Wizard&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5021] - Add Support for Querying for a Single Hierarchy in an HCL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5022] - &amp;quot;Valid To&amp;quot; Validity Code does not set date correctly&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5023] - Entering invalid dates on Step 2 of the Codelist Wizard hangs the User Interface&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5024] - Bad SQL error when running MERGE statement on SQL Server&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5025] - Value List Wizard Step 3 table rendering incorrectly&lt;br /&gt;
&lt;br /&gt;
[FR-5033] - NPE thrown during startup when checking database cache&lt;br /&gt;
&lt;br /&gt;
[FR-5034] - Registry Error Dialog can execute scripts which can lead to XSS attacks&lt;br /&gt;
&lt;br /&gt;
[FR-5036] - Quieten Stack Trace when &amp;quot;illegal&amp;quot; Contact ID specified in EDI file&lt;br /&gt;
&lt;br /&gt;
[FR-5038] - Ensure Data Deletion Methods trigger synchronization for Load Balanced Registries&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.4 (Released: 2021/07/30)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FR-5017] - Add functionality so that Oracle may be used as a &amp;quot;Registry Managed&amp;quot; Database&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5018] - Correct Transaction ID generated on Kafka notification&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.3 (Released: 2021/06/26)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5011] - Ensure the CORS setting is set to fully permissive when the Install Wizard starts&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.2 (Released: 2021/05/27)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5006] - Web Service data query builder UI - Sub-Format selection not working&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.1 (Released: 2021/05/21)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5003] - Web Services Data page: for CSV output add new drop-down for selecting ID and / or Name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5004] - Kafka Structure Producer page, message detail drop-down not set correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.7.0 (Released: 2021/05/11)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[DEV-113] - Update of third-party dependencies&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4997] - EDI Writer only writes a maximum of 3 contacts&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4998] - Generated OBS_KEY in SDMX-CSV output incorrectly when no obs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4999] - Environmental Sync is unable to resolve Codelists which extend other Codelists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5000] - Comparing ContentConstraints does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-5001] - Comparing ReportingTemplates does not give correct report&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4842] - Support for RDF formats dropped&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.13 (Released: 2021/04/23)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4993] - Support the creation of the series attribute TIME_FORMAT from an EDI file&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4984] - Mapping should be allowed to be applied to multiple datasets if they refer to the same dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4980] - Codelist Wizard - adding a validity period caused Show CSV button to become inactive&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4981] - Attempting to convert data file with multiple datatsets to SDMX CSV throws error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4982] - Unable to specify a DSD Dimension as both Coded and with restriction of Year&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4986] - Enumerations of GregorianYearMonth are not present when viewing DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4988] - SDMX CSV file contains rows of different lengths&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4989] - Group Level Attributes Lost in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4990] - Dataset Level Attributes Lost writing to SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4992] - Allow Excel-TS to honour values from Admin Setting &amp;quot;XLSX Format&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4994] - Enumerated Items should not have DateTime and Time as Data Format options&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4995] - GregorianYearMonth is not shown when viewing the DSD&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.12 (Released: 2021/04/14)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4977] - Option to send structures as stubs on Kafka&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4979] - Data Validation new Option to supply the Sender Id&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4978] - SDMX CSV validation: output DataSetId should be the Dataflow ID value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.11 (Released: 2021/04/01)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4972] - Comparing Reporting Constraints does not show differences&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4973] - Reporting Template - trailing white-space on HEX value causes obs attributes reported using colour to be missed&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.10 (Released: 2021/03/26)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4971] - Environment Sync - Version information on Item list set to 1.0 when maintainable parent is not 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.9 (Released: 2021/03/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4967] - Environment Sync - Javascript error when connecting to endpoint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.8 (Released: 2021/03/14)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4964] - Tableau - Chunk Data to support higher volumes&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.7 (Released: 2021/02/24)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4936] - Improve performance of import into Fusion Data Store wrt. merging into existing series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4933] - Ensure collections are thread safe on data import process&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4937] - Ensure stream is not closed when loading file from UI which is subsequently imported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.6 (Released: 2021/02/17)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4930] - Structure compare service can report structures are the same if the cross references differ &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4929] - Validation Scheme Step 3 ignores a number as the Output value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4928] - Changing Dataflow does not update Valid Calculations on Dataset Details page&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4927] - Unable to load a generated dataset if the OBS_VAL dimension has been changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4926] - Validation Rules Wizard displays data tables error on Step 2&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.5 (Released: 2021/02/15)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4923] - A colon &amp;quot;:&amp;quot; should always follow deptId, even when it's empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4922] - AD Group Change is not reflected in structure/data access permissions (caching issue)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4920] - Handle Large Loads in Reporting Constraint UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4916] - Loading SDMX 1.0 Concept Schemes, the Concepts have incorrect URNs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4915] - Bulk Export download of illegal EDI structures do not clearly report the error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4914] - Compare view not showing correct values for master and target&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4913] - Hierarchical CodeList does not update when order of hierarchy changed&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4910] - Extend EDI Lenience to Codelists and Concept Schemes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4909] - DatasetID should be output in a Data Load when the input is CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4919] - Modification of a Maintainable should occur in 2 Transactions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4918] - Fix Issues in Transaction Web Services&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4917] - Add &amp;quot;keys&amp;quot; and &amp;quot;action&amp;quot; parameter to SDMX CSV Web Service request&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.4 (Released: 2021/01/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4903] - Support application of security rules on mapped data query&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4904] - Change Kafka Service to allow status to be Publicly Available&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4907] - Saving a DSD with a non-standard Measure Dimension prevents the DSD from being subsequently edited&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4906] - Requesting an SDMX file which cannot be described in SDMX throws an error&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.3 (Released: 2020/12/23)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4893] - Activity -&amp;gt; Structure Submissions page show a spinner if item selected in table and user not logged in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.6.2 (Released: 2020/12/22)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[Fr-4891] - NPE on startup when extended Codelist no longer exists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.1 (Released: 2020/12/14)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4884] - DSD Wizard issues with re-assigning Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.6.0 (Released: 2020/12/11)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4863] - Kafka - add email user on forced producer termination \(when fatal error occurs\) &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4861] - Kafka - support filter structures from notification by structure type &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4860] - Kafka - record notificaiton status against registry transaction status. Restart structure producer from last tx.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4859] - Kafka - support all connection properties when defining kafka server connection&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4865] - Kaka - improve the test connection feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4864] - Kafka - Terminate structure producer on fatel error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4862] - Kafka - Do not flush all structures on startup or kafka configuration change&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4877] - Tableau - split time period column into 2 columns \(start period and end period\)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4879] - Schema Generation: Group Type does not match standards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4867] - UI delete and add TIME_PERIOD Concept with different Id causes Dimension to be misclassified &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4866] - DSD Measure can be lost when updating structure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.10 (Released: 2020/11/29)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4841] - Subscribe to structural changes error message is empty&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4840] - Loading an EDI file which has invalid values returns a 500 rather than throwing a FormatSpecific Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4837] - Ensure CSV Dump honours double quotes around values containing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4830] - Outputting JSON data with Annotations can result in a -1 being returned&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.8 (Released: 2020/11/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4787] - EDI File containing no department ID in CTA block cannot be validated&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4788] - Dataset ID is not copied to outputted SDMX JSON&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4789] - Activity -&amp;gt; Structure Submission Page - Compare button: nothing happens when clicked&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4790] - If a user with no permissions is created, attempting to log on results in a Stack Trace on the screen&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4792] - Unable to create a Dynamic DSD Attribute with multiple component inputs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4793] - EDI files are being created with message identity blocks greater than 35 characters and these are not erroring when read back in&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.7 (Released: 2020/10/29)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4780] - The Registry can unify monthly data so reading and writing comes out in a consistent fashion&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4771] - Temporary file not cleared away after reading Excel file&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.6 (Released: 2020/10/21)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4766] - csv-ts support exlcudeHeader, excludeBreakdown, and includeSeries parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4767] - Inmplement completecube REST data query parameter&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4768] - REST - normalise frequency support first in period and last in period functions&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4770] - Add support to Fusion CSV to load a CSV file declaring Dimensions and measure dimensions only&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.5 (Released: 2020/10/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4753] - Registry now has option to clean up temporary directory on startup&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4759] - Header ID can be incorrectly longer than 10 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4761] - Format 'CSV Dump' does not work from the browser in the manner intended&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4762] - Unable to publish Fusion CSV from Command Line&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4763] - CTA Segment should only be output in EDI if it is valid&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4755] - New Web Service to allow users to 'Close' loaded Data&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.4 (Released: 2020/10/05)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4732] - Adding Error Codes to Fusion Registry Validation Response&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4748] - Support Loading of Fusion CSV Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4750] - Report errors in EDI attribute validation more clearly&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4731] - InputStreams being incorrectly left open&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4733] - Temporary files being created and not cleared away&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4749] - POST requests ending with a slash prevent POST operation from completing successfully&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4751] - CTA Segment not being output when data requested in EDI format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4752] - Lower case Dimension ids cause data query issue due to incorrect assignment of database columns&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.5.3 (Released: 2020/09/16)==&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4730] - Enforce that the EDI FNS block is followed by the correct value&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4727] - Ensure logout after install of Fusion Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.5.1 (Released: 2020/09/14)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4712] - Format of Code IDs can be restricted for a Codelist&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4714] - Support new REST query filters to perform Aggregation, Interpolation, New Measures, Frequency Conversion, Round&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4715] - REST Data Query: Support Explicit inclusion/exclusion of specific attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4717] - New Data Format: CSV DUMP&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4707] - Structure Map - Value Map with Regular expression rejected as expression exceeds max length of Component&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4709] - Unify Rest API VND Headers&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4713] - Data Query - Accept-Encoding: identity intermittent HTTP 500 error on Tomcat 7.x&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4718] - Issue with format conversion to EDI when an observation level attribute is the only content of an observation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4720] - Reverse engineer Structure Map from Excel file - do not create source to target mapping if no mapping rules exist and the mapping is not implicit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.9 (Released: 2020/09/01)==&lt;br /&gt;
B'''ug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4701] - Codelist Wizard: re-ordering codes loses non-English languages for those codes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4702] - Codelist Wizard Step 4, clicking outside of the pop-up window dismisses window and reverts user changes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4703] - Saving a CSV Locale with 'no value' for the Group Separator value fails&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4704] - StaxReader keeping InputStream open preventing temp file deletion&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4705] - Codelist Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4706] - Concept Scheme Wizard Step 4 - Show CSV does not honour languages correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.4.8 (Released: 2020/08/24)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4694] - SQL Server issue with single external database table with FR_UPDATED_DATE&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4695] - SQL Server does not permit tables which start with numerics&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4696] - Output in Excel-Table format does not display observation when date has time period included&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4698] - Data Provider Constraint linked to Dimension which no longer exists causes registry startup to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.7 (Released: 2020/08/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4689] - Data Validation - support multiple structure references on header to inditify which Dataflows or Provisions to use in validation when multiple datasets are in file&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4686] - Ensure Edge Server can not include structures with broken references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4687] - Improve performance of Oracle and Sql Server data queries which include both firstN and lastN observations in query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4688] - Remove 'zombie structures' from registry content, enable users to export or delete via a separate API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4692] - Give joined dataset a meaningful Id (concat of joined dataflows)&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4685] - EDI - observations not included in output when a series is written which has a start date earlier then any previous series of the same freequency, AND an end date later then any series of the same frequency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4690] - Loading DSD in XLSX format does not create a Group when no Dimensions attach to it&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4691] - Data query parameters from POST queries does not pass details (i.e dataonly) to data format&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.6 (Released: 2020/08/12)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4673] - New parameter on Data Conversion to Merge Datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4677] - New data format: Fusion-Excel-TS&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4683] - New data format: Fusion-Excel-Series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4684] - New data format Fusion-Excel-Table&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4674] - SDMX 2.0 data incorrectly stating KeyFamilyURI is an invalid attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4681] - Change Id of a structure prevents Datasets from being deleted from Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4682] - Data query which join 2 datasets does not merge 2 different codelists for the same dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.5 (Released: 2020/07/30)==&lt;br /&gt;
'''New Features:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4666] - Add SSL support to Kafka connection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4670] - Add a System Property to ignore EDI Agency checks&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4303] - Kafka Connection Configuration - support multiple hosts&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4664] - Null pointer when saving a DSD with only 1 measure which does not have Id of OBS_VALUE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.4 (Released: 2020/07/25)==&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4660] - Support Quarterly and Half-Yearly formats in SDMX 1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4661] - Upgrade Excel to Structure Map creator to support Fusion Data Mapper v1.1.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.3 (Released: 2020/07/20)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4658] - EDI DSI block should not be permitted to be longer than 18 characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4657] - Addition of Multi-Lingual format to FUSION-CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.2 (Released: 2020/07/17)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4623] - Reporting Template: Hierarchy in row, codes with no data which have child codes with data to be displayed as a presentation node&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4640] - Reporting Template Wrap text if it exceeds 'n' characters&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4655] - Install page of Fusion Registry - entering an invalid server URL completes the installation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4656] - Unable to specify space as locale Group Separator on CSV Locale page&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.1 (Released: 2020/07/14)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4617] - Excel Reporting Template: Support Instruction sheets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4653] - Create property allowing DSI field in EDI file to be resolved to a Dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4652] - Report Templates: Conditional Colour on Attributes - make optional (opt in)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.4.0 (Released: 2020/07/09)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4618] - Excel Reporting Template: Support series attribute reporting&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4621] - Excel Reporting Template: Conditional formatting of the observation value based on the confidentiality value entered by the reporter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4632] - Improve Export Structures modal to warn if structures will not be exported in chosen format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4639] - Enhancement to calculation and interpretation of EDI DSI segment&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4625] - EDI and Dataset Header&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;                                                  &lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4468] - Provision Agreement – default linked data source should be ‘none’.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4469] - Mapped Data Store – turn off label Fusion Store Cache for Data Essentials.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4523] - Updating a DSD with optional Observation Attribute causes Index Out Of Bounds error if data already exists&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4624] - IndexOutOfBounds can be thrown by validating data file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4626] - SDMXJsonDataReaderEngine is not correctly parsing observations when data file has groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4629] - fusion-json data writer series keys only failure&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4630] - JSON Data Writer output of multiple datasets causes JSON error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4631] - Changing the ID of a structure does not allow it to be obtained by ETag&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4633] - Reporting Template - universe of series miscalculation when including a excluded series constraint with wildcards&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4637] - Cannot Modify Role Mappings&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.9 (Released: 2020/06/20)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4608] - CSV - Series per Column, support output of attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4616] - Excel Reporting Template: Display of Codes and Description in the same field&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4619] - Excel Reporting Templates: Protect the workbook so users cannot change the name of the worksheets or add/delete new worksheets&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4549] - Add 'Reference Partial' option to the export modal on bulk actions&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4604] - Improve performance of create Partial Lists&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Changes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4610] - Rename CSV format to csv-series&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4615] - Excel Reporting Template: Do not use color on attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4605] - CSV format (series per column) does not support hebrew characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4607] - SDMX JSON - Unknown Attributes at the Series Level should throw an error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4612] - Half-Yearly issue error in Data handling&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4613] - Issues with Monthly format and SDMX 2.1&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.8 (Released: 2020/06/12)==&lt;br /&gt;
'''New Feature''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4597] - Web Service for Modifying and Obtaining System Properties&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4581] - Add support for Groups in SDMX CSV&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4587] - SDMX JSON Does not support the writing of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4588] - SDMX JSON Does not support the reading of Groups&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4590] - Issues with Monthly format and SDMX 2.0&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4504] - Removed &amp;quot;Table Names&amp;quot; button does from Link Provision modal&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4554] - When editing DSD, unable to change OBS_VALUE to another agency&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4584] - EDI issue - FNS block must be followed by a REL&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4589] - Old CSV format requires trailing commas when observation values not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4596] - Recursive loop on reindex when 2 provisions linked to the same mapped dataflow&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4598] - Ensure SDMX JSON and SDMX CSV do not support the 1 digit week format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4599] - Creating Schema can throw Null Pointer Exception&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.7 (Released: 2020/06/02)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4555] - CSV Flat format does not support trailing commas&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4579] - Enhance the RSS feed to list URLs of added, modified and deleted structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4580] - Improved performance in EDI Data Reader&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.6 (Released: 2020/05/24)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4524] - Weekly format incorrect for single digit weeks&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4525] - Converting an SDMX Delete message to EDI retains the CDV sections&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4526] - Transforming data files with multiple Datasets should set the header action correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4527] - Converting file should create Group Type of SiblingType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4535] - Converting file to EDI loses Weekly Data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4537] - Ensure Generic Data Readers are version independant&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4545] - Support SDMX Dates for Monthly format with the &amp;quot;M&amp;quot; character&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.5 (Released: 2020/05/15)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4516] - EDI Delete message - reports &amp;quot;value is too short&amp;quot; when attribute value not present&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4517] - Empty IDE block following NAD+MS should not be treated as an error&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.4 (Released: 2020/05/13)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3281] - Organisations tab - Data Providers not properly sorted&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4496] - Format Specific Errors should not all be at Dataset Level&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4497] - EDI data file returning Format Specific Error rather than Representation error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4508] - Validation Service should return a 400 when supplied DSD is unknown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4510] - Role Mappings Organisations should be sorted alphabetically&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4513] - Memory leak when generating Reporting Templates&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4515] - Series Constraint Wizard - step 2 - requires the ability to select multiple Provision Agreements&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4511] - Change VND Header for EDI to be consistent with SDMX structure and data syntax&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4512] - Order Excel Report Template Colors in Legend by Codelist Code order&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.3 (Released: 2020/05/07)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4495] - JSON data file returning Format Specific error rather than Representation Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4501] - gracefully handle startup failures due to missing internal references&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4502] - Database Error: OptimisticLockException on delete maintainable operation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4506] - Intermittent import failure&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.3.1 (Released: 2020/05/04)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4472] - Mapping: Support creation of TIME_PERIOD value from source series data where source data has no Time Dimension&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4477] - Allow HTTP Read Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4478] - Allow HTTP Connect Timeout duration to be viewed and modified via UI&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4460] - View and modify User-Agent used in HTTP Requests from the Registry via the User Interface &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4474] - Editing a DSD can cause Series and Group information to be lost&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4479] - Hierarchical Codelist fusion-json level incorrectly outputs number, not the level Id that is referenced&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4401] - Validation service: Duplicate attribute values&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4458] - FormatSpecificError expected when reading CSV file&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4461] - JSON: Unknown Attribute at the Observation level should throw Structure Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4400] - EDI: Fix to reading of characters which fall outside of the Ascii range&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4459] - EDI: TimePeriodFormat exception should be thrown when analysing attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4462] - EDI: Extra FNS segment causes issues&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4463] - EDI: No IDE segment following the ARR one&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4464] - EDI: Data segment allowed in Attributes section&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4465] - SDMX-CSV data loaded via User Interface as Data Format: CSV with No DSD selected can cause Dataflow lookup error when enclosed in double quotes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4466] - Unable to load SDMX-CSV via UI when explicit DSD is selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4467] - Data files with Weekly frequency can fail to be processed by the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4471] - CSV - format conversion service is failing due to BOM issue&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4470] - JSON: Format conversion issue - dataset attributes are dropped when converting to JSON data format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4475] - JSON: Representation error expected due to facet violation but no error thrown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4480] - SDMX-JSON Hierarchical Codelist Level reference should be by URN - currently it is by Id&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4483] - User unable to create DSD when using &amp;quot;Reverse Engineer DSD from CSV Dataset&amp;quot; due to unclear Error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4487] - Bug in legacy mode (sdmx-json=fusion-json) for Reference Metadata&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4488] - Bug in legacy mode for availability API&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4482] - REST API references=all is returning descendants of parent structures, should only be children&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4489] - REST API -with Fusion Store: 'offset' parameter used in conjuntion with 'max' parmaeter, is not honoured when 'lastNObservations' is included in query&amp;lt;br/&amp;gt;&lt;br /&gt;
==Version 10.3.0 (Released: 2020/04/22)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4378] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4379] - REST API - Support path parameter: allowedconstraint&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4380] - REST API - Support query parameter: allcompletestubs&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4381] - REST API - Support query parameter: referencecompletestubs    &amp;lt;br/&amp;gt;   &lt;br /&gt;
[FR-4394] - Exporting a DSD to EDI - support feature to enforce Primary Measure [https://wiki.sdmxcloud.org/Edi_Enforce_Primary_Measure]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4409] - EDI Lenient mode - allow DSDs to be read and written with uncoded dimensions [https://wiki.sdmxcloud.org/Edi_Lenient_Mode]&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4408] - Add Value list to Bulk Export&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvements''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4214] - Add 'Export SDMX-ML' button to structure pages&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4411] - Improve performance of cross reference resolution&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4416] - Fusion-CSVTS output date frequencies in a predictable order (highest frequency first)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4269] - Do not validate mandatory attributes and ignore empty reported values when the dataset is action DELETE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4268] - Converting Data - timeFormat = &amp;quot;normalized&amp;quot; - should always return time in ISO 8601&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4292] - HCL Wizard formal Levels, resave causes error in level ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4391] - Default value for version not respected in SDMX 2.1 dataset - structure reference is changed to latest version (should be 1.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4392] - IDE segment should only be used to look up DataStructrure (previously defaulted to Dataflow if a match was found)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4393] - Regression - Data validation for Representation missing from on Group attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4395] - Generic 2.0 files must permit &amp;quot;DataSet&amp;quot; attribute to be in namespace &amp;quot;Generic&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4399] - EDI: Uncoded Attribute Values must be checked to ensure they are valid EDI characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4407] - WS Structure Query - Value List is not on dropdown&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4412] - REST API Delete Method does not support non-SDMX structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4413] - Content Security Data Rules broken JavaScript&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4420] - Value List - Export to Excel (from VL Page) not working&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4422] - Value List - Annotations - Post add - Page not found&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4423] - View Provision Agreement - Spinner does not disappear (intermittent)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4426] - Constraints - Cube - Wizard step 1 Validity Rules label does not align with other labels&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4430] - View Meta Data Report broken&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4436] - Bulk Actions - remove redundant publish (non-draft) option &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4441] - referencepartial to treat constraint references as a union, not intersection&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4448] - Reference Metadata against a data key - linked to a deleted dataflow causes edge server build to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4449] - EDI Delete messages should throw an error if they contain observations or observation attributes&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4453] - Constraint Wizard - edit constraint to add new attachment and remove another results in server side error&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4454] - Illegal Value in EDI contact not reported correctly&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4455] - Supplying an invalid DataStructure in EDI header causes a NullPointerException&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4456] - converting a version 1.0 dataset to a version 2.0 keeps the action as Update (should convert to replace)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.2 (Released: 2020/04/04)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4373] - EDI CTA segment should throw error if Contact Name contains invalid characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4376] - Display name and Username in AD and LDAP is wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4377] - Fusion-CSV-TS does not escape all commas in free text strings&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4386] - SDMX-JSON structures - some keys are the wrong case with respect to the schema&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4397] - SDMX-JSON syntax error on contact names, departments, and roles on Organisations&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4372] - Series Constraint wizard breaks for Provision Agreement constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.1 (Released: 2020/03/30)==&lt;br /&gt;
New Feature&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4369] - Support Constraints against Value List&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4363] - Throw HTTP 406 (Not Acceptable) if a structure query explicitly requests the response in a format which is understood but not supported by any structures in the output&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4361] - Simplify install wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4295] - UI - Dataset Details page - View data button should only view the data for the currently selected dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4344] - Validate SDMX-JSON data not reporting error with missing Sender ID&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4349] - Unable to save a DSD with a Primary Measure which uses a Value List for one of the Components&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4350] - Unable to create a DSD when there is no concept with OBS_VALUE in the Registry&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4351] - Primary Measure has incorrect URN with new DSD built through UI Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4352] - EDI - report error when writing output with unsupported characters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4354] - EDI file - CTA segment should not restrict contact-id and contact-name to be of IDType&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4358] - Server error when modifying report template from having an Attribute in a worksheet to becoming a fixed attribute&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4359] - Client side issue - unable to modify Report template Attribute from being included in worksheet to having a fixed value&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4360] - Node.zip export with included reference metadata can cause publication to Edge server to fail&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4362] - Do not output EDI structures with non-1.0 versions, or references to structures with non-1.0 versions, as they are not compatible with the EDI specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4365] - structure query, implement references=organisationscheme, currently returns HTTP 400&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4366] - structure query, references=all does not return children of parents&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.2.0 (Released: 2020/03/18)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4315] - EDI issue: Missing REL segment after FNS+Attributes is not detected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4317] - EDI issue: FTX segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4318] - EDI issue: CSV segments should not be present in EDI deletion messages but no error reported&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Feature'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3302] - DSD Changes: Support zero to many measures - as per SDMX 3.0 working specification&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4312] - Add button to UI to enable a user to create a Report Template with existing data&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4336] - Support Enumeration of items which can have non-SDMX valid IDs (Value List)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4337] - Reverse Engineer DSD from CSV Dataset&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Improvement'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4324] - Performance Improvements for Data Convert&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4331] - Show the Hierarchical Codelist Agency/ID/Version of available Hierarchies in Validation Rules Wizard&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4321] - EDI to treat DSI as Dataflow Identifier on Data Read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4322] - Report Template vnd header - if Data Provider Id is supplied and Ageny is not, default Agency to SDMX&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4329] - Remove formula embedded in Report Templates (replaced with checking table)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.1.0 (Released: 2020/03/09)==&lt;br /&gt;
'''Bug Fixes''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4267] - Environment Sync Not working when pushing to registry &amp;lt; 10&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4270] - EDI time formats are not set correctly when using EDIDataReader&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4290] - Changes to the authentication service are not being retained when changed to NONE&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4263] - Reporting Template Worksheets to be built from a Dataflow as oppose to a Content Constraint&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''New Features'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3300] - Excel Reporting Templates Client-Side Validation&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4276] - Bulk Download offers SDMX-JSON in addition to Fusion-JSON as a format&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3305] - Populate an Excel Reporting Template from an SDMX Data File&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.3 (Released: 2020/02/14)==&lt;br /&gt;
'''Bug Fixe'''s:&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4224] - Can not convert data to JSON format when no dataflow selected&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4225] - &amp;quot;304 Not Modified&amp;quot; no longer being returned when header includes &amp;quot;If-Modified-Since&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4226] - Issue with reading SDMX-CSV with very large datasets&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4228] - ByteOrderMark (BOM UTF8) preventing CSV read&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4238] - SDMX JSON should report error when attribute indexes are wrong&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Change'''&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4227] - Sdmx JSON meta tag needs to have required node of &amp;quot;sender&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.2 (Released: 2020/02/04)==&lt;br /&gt;
'''Bug Fixe'''s: &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4215] - Enable a dataflow mapping to be saved which is linked to a database, even if there is no data available&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.1 (Released: 2020/02/03)==&lt;br /&gt;
'''Bug Fixes''': &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4205] - ws/fusion/info/product web service to include link for current user details&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 10.0.0 (Released: 2020/01/31)==&lt;br /&gt;
'''New Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3502] - New Web Data Browser - stand alone web tool for data search, visualisation and analysis.&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-2879] - full support for the official SDMX-JSON 1.0 standard &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4114] - AD role mappings CSV import and export&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3304] - Codelist inheritance&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4115] - External table name mapping &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4029] - CORS policy improvements&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3946] - Stronger AES256 encryption &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4025] - SDMX ‘availability’ queries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3561] - Kafka integration – Fusion Registry producer for structural metadata (including Kerberos integration for security)&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4159] - Change the ID and Agency of existing structures &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4086] - Auto-link provision agreements on mapped datastore &amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4072] - Secondary level caching for External SQL datastores, and mapped Dataflows&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4099] - Environment Synchronisation accepts user log in allowing it to work with private or content-restricted registries&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4032] - REST API enhancement to limit the series returned from a data query using ‘max’ and ‘offset’ parameters&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4045] - REST API enhancement first ‘n’ and last ‘n’ observations support for external read-only database data sources&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4068] - REST API enhancement to join multiple datasets with a POST query&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4041] - Support Fusion Registry login from third party applications via the REST API without a redirect&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-3967] - Active Directory configuration custom search filter&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Removed Features''':&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4139] - Remove: Draft structures&amp;lt;br/&amp;gt;&lt;br /&gt;
[FR-4081] - Remove: In-memory structures storage&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Asynchronous_Data_Validation_and_Transformation&amp;diff=6662</id>
		<title>Asynchronous Data Validation and Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Asynchronous_Data_Validation_and_Transformation&amp;diff=6662"/>
		<updated>2024-02-16T15:38:34Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Data Load Response */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The Asynchronous Data Load web service consumes a submitted file for Validation.  On receipt of the file, the service returns a UID (token), which can be used to track the validation process, and perform further actions such as transformation to another format, or publish to a database once validation has completed.&lt;br /&gt;
&lt;br /&gt;
The Fusion Registry stores the data on the instance it was sent to, so in a load balanced system, the same server must be accessed, if there is no activity on the file for 15 minutes, the registry will automatically remove the file from its cache.&lt;br /&gt;
&lt;br /&gt;
= Asynchronous Data Load =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/load&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| CSV, XLSX, SDMX-ML, SDMX-EDI (any format for which there is a Data Reader)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Compression&amp;lt;/b&amp;gt; || Zip files supported, if loading from URL gzip responses supported&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/xml (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Data file recieved&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Trasformation could not be performed (either an unreadable dataset, or unresolvable reference to a required structure)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Data Load Response ==&lt;br /&gt;
The response to a data load is a token, which can be used in subsequent calls to track the data load and validation process and, once validation is complete, the token can be used to perform actions such as a publish, obtain validation report, export in a different format, or export with mapping.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;Success&amp;quot; : true,&lt;br /&gt;
    &amp;quot;uid&amp;quot;     : &amp;quot;unique token&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Request Load Status =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/loadStatus&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Query Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;uid&amp;lt;/b&amp;gt;|| Unique identifier for the loaded dataset, returned from the data load operation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load Status Response ==&lt;br /&gt;
The response is a validation report, to either indicate [[/Data_Validation_Web_Service#Valid_Dataset|validation success]] or [[Data_Validation_Web_Service#Dataset_with_Errors|validation with errors]].  &lt;br /&gt;
&lt;br /&gt;
The report '''Status''' indicates how far into the validation process the server has reached. The following table shows the various stages:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Initialising || Initial status&lt;br /&gt;
|-&lt;br /&gt;
| Analysing || The dataset is being analysed for series and obs count, and which dsd's it references&lt;br /&gt;
|-&lt;br /&gt;
| Validating || The dataset is being validated&lt;br /&gt;
|-&lt;br /&gt;
| Complete || The dataset validation process has finished, there may/may not be errors&lt;br /&gt;
|-&lt;br /&gt;
| Consolidating || The dataset is being consolidated, duplicate series and observations are being merged into one final dataset&lt;br /&gt;
|-&lt;br /&gt;
| IncorrectDSD || The dataset references a DSD that can not be used to validate the data&lt;br /&gt;
|-&lt;br /&gt;
| InvalidRef || The dataset references a DSD/Dataflow/Provision that does not exist in the Registry&lt;br /&gt;
|-&lt;br /&gt;
| MissingDSD|| The dataset does not not reference any structure so the system can not read the dataset&lt;br /&gt;
|-&lt;br /&gt;
| Error|| The dataset can not be read at all&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=  Data export/transform =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/download&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| Determined by [[Data_Formats#HTTP_Accept_Headers|Accept Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Query Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Query Parmeter !! Format !! Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;uid&amp;lt;/b&amp;gt;&lt;br /&gt;
|| string&lt;br /&gt;
|| Unique identifier for the loaded dataset, returned from the data load operation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;datasetIndex&amp;lt;/b&amp;gt; &lt;br /&gt;
|| integer&lt;br /&gt;
||  If multiple datasets are in the data file, identifies which one to export, zero indexed&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;map&amp;lt;/b&amp;gt;&lt;br /&gt;
|| string&lt;br /&gt;
|| URN of Dataflow or DataStucture to map to, there must be a Structure Map which describes the mapping from the source to target&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;zip&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| Zips the respone&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;includeMetrics&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| Include Metrics in the response see [[Data_Transformation_Web_Service|Data Transformation]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;unmapped&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| If the map parameter is supplied, and some series or observation can not be mapped, the unmapped data will be included in either the zip file (if zip is true) or in a multipart-form boundry (if zip is false) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=  Revalidate =&lt;br /&gt;
A Re-validation service is provided if there is more information that can be provided to the dataset(s) loaded against the token.  The reason to revalidate is if the dataset is to be attached to a different Dataflow or Provision Agreement.  When this link changes, it may impact the validation results due to the application of different Constraints or Validation Schemes.  The underlying datasaet will be updated to refer to this different Dataflow/.Provision Agreement, which will be reflected in the exported dataset if the data format supports this information (for example SDMX-ML contains the linked structure in the Header section of the dataset).&lt;br /&gt;
&lt;br /&gt;
Revalidation will be faster than the initial load and validate process because there is not as much work to do.  The dataset is already consolidated, and has already had parts of it validated that will not change even if linked to a different Dataflow.  The revalidation service only revalidates parts of the dataset that will change due to a different structure link, for example it would revalidate against constraints if these are different, and validation schemes (mathematical validation rules) if there are different rules based on changing the linked structure for the dataset.&lt;br /&gt;
&lt;br /&gt;
Revalidation is an asynchronous action, whose progress can be tracked using the same token and tracking web services provided. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/revalidate&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| application/json&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - request received and being processed&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - request could not be performed (possibly due to bad syntax of JSON POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Post Body ==&lt;br /&gt;
The POST request must contain the token of the dataset to revalidate, this is the same token that was provided by the server on data load.  The SRef is an array of URNs, one for each Dataset that was present in the data file loaded to the server.  Each URN refers to which structure to use to validate the dataset against.  The URN can either be to a Data Structure Definition, Dataflow, or Provision Agreement.&lt;br /&gt;
 {&lt;br /&gt;
   UID : &amp;quot;datasetdetailsuid&amp;quot;,&lt;br /&gt;
  SRef : [&amp;quot;urn1&amp;quot;, &amp;quot;urn2&amp;quot;, urn3&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Revalidate Response ==&lt;br /&gt;
The response is a JSON message with a success message.  The validation progress should be tracked using the token that was used in the re-validation request against the [[Asynchronous_Data_Validation_and_Transformation#Request_Load_Status|Load Status]] web service.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;Success&amp;quot; : true,&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Data Publish =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/publish&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Publish request accepted&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Bad request&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publishes the dataset loaded against the uid the expected json is as follows&lt;br /&gt;
 {&lt;br /&gt;
   UID : &amp;quot;datasetdetailsuid&amp;quot;,&lt;br /&gt;
   Action : &amp;quot;Append|Replace|Delete&amp;quot;,&lt;br /&gt;
   DeleteAction : &amp;quot;DEFAULT|OBSERVATIONS|SERIES&amp;quot;,&lt;br /&gt;
   Dataset: int&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The If the action is Delete, then there are three different options for Delete Action.  The DEFAULT option is to use the SDMX Delete rules, OBSERVATION will delete all the observations in the loaded dataset from the database, SERIES will delete all the series in the dataset from the database (including all the observations that belong to the series).&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Asynchronous_Data_Validation_and_Transformation&amp;diff=6661</id>
		<title>Asynchronous Data Validation and Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Asynchronous_Data_Validation_and_Transformation&amp;diff=6661"/>
		<updated>2024-02-16T15:21:23Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Load Status Response */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The Asynchronous Data Load web service consumes a submitted file for Validation.  On receipt of the file, the service returns a UID (token), which can be used to track the validation process, and perform further actions such as transformation to another format, or publish to a database once validation has completed.&lt;br /&gt;
&lt;br /&gt;
The Fusion Registry stores the data on the instance it was sent to, so in a load balanced system, the same server must be accessed, if there is no activity on the file for 15 minutes, the registry will automatically remove the file from its cache.&lt;br /&gt;
&lt;br /&gt;
= Asynchronous Data Load =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/load&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| CSV, XLSX, SDMX-ML, SDMX-EDI (any format for which there is a Data Reader)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Compression&amp;lt;/b&amp;gt; || Zip files supported, if loading from URL gzip responses supported&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/xml (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Data file recieved&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Trasformation could not be performed (either an unreadable dataset, or unresolvable reference to a required structure)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Data Load Response ==&lt;br /&gt;
The response to a data load is a token, which can be used in subsequent calls to track the data load and validation process and, once validation is complete, the token can be used to perform actions such as a publish, obtain validation report, export in a different format, or export with mapping.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;Success&amp;quot; : true,&lt;br /&gt;
    &amp;quot;uid&amp;quot;    : &amp;quot;unique token&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Request Load Status =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/loadStatus&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Query Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;uid&amp;lt;/b&amp;gt;|| Unique identifier for the loaded dataset, returned from the data load operation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load Status Response ==&lt;br /&gt;
The response is a validation report, to either indicate [[/Data_Validation_Web_Service#Valid_Dataset|validation success]] or [[Data_Validation_Web_Service#Dataset_with_Errors|validation with errors]].  &lt;br /&gt;
&lt;br /&gt;
The report '''Status''' indicates how far into the validation process the server has reached. The following table shows the various stages:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Initialising || Initial status&lt;br /&gt;
|-&lt;br /&gt;
| Analysing || The dataset is being analysed for series and obs count, and which dsd's it references&lt;br /&gt;
|-&lt;br /&gt;
| Validating || The dataset is being validated&lt;br /&gt;
|-&lt;br /&gt;
| Complete || The dataset validation process has finished, there may/may not be errors&lt;br /&gt;
|-&lt;br /&gt;
| Consolidating || The dataset is being consolidated, duplicate series and observations are being merged into one final dataset&lt;br /&gt;
|-&lt;br /&gt;
| IncorrectDSD || The dataset references a DSD that can not be used to validate the data&lt;br /&gt;
|-&lt;br /&gt;
| InvalidRef || The dataset references a DSD/Dataflow/Provision that does not exist in the Registry&lt;br /&gt;
|-&lt;br /&gt;
| MissingDSD|| The dataset does not not reference any structure so the system can not read the dataset&lt;br /&gt;
|-&lt;br /&gt;
| Error|| The dataset can not be read at all&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=  Data export/transform =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/download&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| Determined by [[Data_Formats#HTTP_Accept_Headers|Accept Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Query Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Query Parmeter !! Format !! Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;uid&amp;lt;/b&amp;gt;&lt;br /&gt;
|| string&lt;br /&gt;
|| Unique identifier for the loaded dataset, returned from the data load operation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;datasetIndex&amp;lt;/b&amp;gt; &lt;br /&gt;
|| integer&lt;br /&gt;
||  If multiple datasets are in the data file, identifies which one to export, zero indexed&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;map&amp;lt;/b&amp;gt;&lt;br /&gt;
|| string&lt;br /&gt;
|| URN of Dataflow or DataStucture to map to, there must be a Structure Map which describes the mapping from the source to target&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;zip&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| Zips the respone&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;includeMetrics&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| Include Metrics in the response see [[Data_Transformation_Web_Service|Data Transformation]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;unmapped&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| If the map parameter is supplied, and some series or observation can not be mapped, the unmapped data will be included in either the zip file (if zip is true) or in a multipart-form boundry (if zip is false) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=  Revalidate =&lt;br /&gt;
A Re-validation service is provided if there is more information that can be provided to the dataset(s) loaded against the token.  The reason to revalidate is if the dataset is to be attached to a different Dataflow or Provision Agreement.  When this link changes, it may impact the validation results due to the application of different Constraints or Validation Schemes.  The underlying datasaet will be updated to refer to this different Dataflow/.Provision Agreement, which will be reflected in the exported dataset if the data format supports this information (for example SDMX-ML contains the linked structure in the Header section of the dataset).&lt;br /&gt;
&lt;br /&gt;
Revalidation will be faster than the initial load and validate process because there is not as much work to do.  The dataset is already consolidated, and has already had parts of it validated that will not change even if linked to a different Dataflow.  The revalidation service only revalidates parts of the dataset that will change due to a different structure link, for example it would revalidate against constraints if these are different, and validation schemes (mathematical validation rules) if there are different rules based on changing the linked structure for the dataset.&lt;br /&gt;
&lt;br /&gt;
Revalidation is an asynchronous action, whose progress can be tracked using the same token and tracking web services provided. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/revalidate&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| application/json&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - request received and being processed&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - request could not be performed (possibly due to bad syntax of JSON POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Post Body ==&lt;br /&gt;
The POST request must contain the token of the dataset to revalidate, this is the same token that was provided by the server on data load.  The SRef is an array of URNs, one for each Dataset that was present in the data file loaded to the server.  Each URN refers to which structure to use to validate the dataset against.  The URN can either be to a Data Structure Definition, Dataflow, or Provision Agreement.&lt;br /&gt;
 {&lt;br /&gt;
   UID : &amp;quot;datasetdetailsuid&amp;quot;,&lt;br /&gt;
  SRef : [&amp;quot;urn1&amp;quot;, &amp;quot;urn2&amp;quot;, urn3&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Revalidate Response ==&lt;br /&gt;
The response is a JSON message with a success message.  The validation progress should be tracked using the token that was used in the re-validation request against the [[Asynchronous_Data_Validation_and_Transformation#Request_Load_Status|Load Status]] web service.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;Success&amp;quot; : true,&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Data Publish =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/publish&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Publish request accepted&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Bad request&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publishes the dataset loaded against the uid the expected json is as follows&lt;br /&gt;
 {&lt;br /&gt;
   UID : &amp;quot;datasetdetailsuid&amp;quot;,&lt;br /&gt;
   Action : &amp;quot;Append|Replace|Delete&amp;quot;,&lt;br /&gt;
   DeleteAction : &amp;quot;DEFAULT|OBSERVATIONS|SERIES&amp;quot;,&lt;br /&gt;
   Dataset: int&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The If the action is Delete, then there are three different options for Delete Action.  The DEFAULT option is to use the SDMX Delete rules, OBSERVATION will delete all the observations in the loaded dataset from the database, SERIES will delete all the series in the dataset from the database (including all the observations that belong to the series).&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Asynchronous_Data_Validation_and_Transformation&amp;diff=6660</id>
		<title>Asynchronous Data Validation and Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Asynchronous_Data_Validation_and_Transformation&amp;diff=6660"/>
		<updated>2024-02-16T15:19:53Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Data Load Response */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebService]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
The Asynchronous Data Load web service consumes a submitted file for Validation.  On receipt of the file, the service returns a UID (token), which can be used to track the validation process, and perform further actions such as transformation to another format, or publish to a database once validation has completed.&lt;br /&gt;
&lt;br /&gt;
The Fusion Registry stores the data on the instance it was sent to, so in a load balanced system, the same server must be accessed, if there is no activity on the file for 15 minutes, the registry will automatically remove the file from its cache.&lt;br /&gt;
&lt;br /&gt;
= Asynchronous Data Load =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/load&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| CSV, XLSX, SDMX-ML, SDMX-EDI (any format for which there is a Data Reader)&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Compression&amp;lt;/b&amp;gt; || Zip files supported, if loading from URL gzip responses supported&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;1.	multipart/form-data (if attaching file) – the attached file must be in field name of uploadFile&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.	application/text or application/xml (if submitting data in the body of the POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Data file recieved&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Trasformation could not be performed (either an unreadable dataset, or unresolvable reference to a required structure)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Data Load Response ==&lt;br /&gt;
The response to a data load is a token, which can be used in subsequent calls to track the data load and validation process and, once validation is complete, the token can be used to perform actions such as a publish, obtain validation report, export in a different format, or export with mapping.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;Success&amp;quot; : true,&lt;br /&gt;
    &amp;quot;uid&amp;quot;    : &amp;quot;unique token&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Request Load Status =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/loadStatus&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Query Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;uid&amp;lt;/b&amp;gt;|| Unique identifier for the loaded dataset, returned from the data load operation&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Load Status Response ==&lt;br /&gt;
The response is a validation report, to either indicate [[/Data_Validation_Web_Service#Valid_Dataset|validation success]] or [[Data_Validation_Web_Service#Dataset_with_Errors|validation with errors]].  &lt;br /&gt;
&lt;br /&gt;
The report '''Status''' indicates how far into the validation process the server has reached. The following table shows the various stages:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Initialising || Initial status&lt;br /&gt;
|-&lt;br /&gt;
| Analysing || The dataset is being analysed for series and obs count, and which dsd's it references&lt;br /&gt;
|-&lt;br /&gt;
| Validating || The dataset is being validated&lt;br /&gt;
|-&lt;br /&gt;
| Complete || The dataset validation process has finished, there may/man not be errors&lt;br /&gt;
|-&lt;br /&gt;
| Consolidating || The dataset is being consolidated, duplicate series and observations are being merged into one final dataset&lt;br /&gt;
|-&lt;br /&gt;
| IncorrectDSD || The dataset references a DSD that can not be used to validate the data&lt;br /&gt;
|-&lt;br /&gt;
| InvalidRef || The dataset references a DSD/Dataflow/Provision that does not exist in the Registry&lt;br /&gt;
|-&lt;br /&gt;
| MissingDSD|| The dataset does not not reference any structure so the system can not read the dataset&lt;br /&gt;
|-&lt;br /&gt;
| Error|| The dataset can not be read at all&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=  Data export/transform =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/download&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| GET&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| Determined by [[Data_Formats#HTTP_Accept_Headers|Accept Header]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Query Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Query Parmeter !! Format !! Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;uid&amp;lt;/b&amp;gt;&lt;br /&gt;
|| string&lt;br /&gt;
|| Unique identifier for the loaded dataset, returned from the data load operation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;datasetIndex&amp;lt;/b&amp;gt; &lt;br /&gt;
|| integer&lt;br /&gt;
||  If multiple datasets are in the data file, identifies which one to export, zero indexed&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;map&amp;lt;/b&amp;gt;&lt;br /&gt;
|| string&lt;br /&gt;
|| URN of Dataflow or DataStucture to map to, there must be a Structure Map which describes the mapping from the source to target&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;zip&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| Zips the respone&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;includeMetrics&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| Include Metrics in the response see [[Data_Transformation_Web_Service|Data Transformation]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;unmapped&amp;lt;/b&amp;gt;&lt;br /&gt;
|| boolean (default is false)&lt;br /&gt;
|| If the map parameter is supplied, and some series or observation can not be mapped, the unmapped data will be included in either the zip file (if zip is true) or in a multipart-form boundry (if zip is false) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=  Revalidate =&lt;br /&gt;
A Re-validation service is provided if there is more information that can be provided to the dataset(s) loaded against the token.  The reason to revalidate is if the dataset is to be attached to a different Dataflow or Provision Agreement.  When this link changes, it may impact the validation results due to the application of different Constraints or Validation Schemes.  The underlying datasaet will be updated to refer to this different Dataflow/.Provision Agreement, which will be reflected in the exported dataset if the data format supports this information (for example SDMX-ML contains the linked structure in the Header section of the dataset).&lt;br /&gt;
&lt;br /&gt;
Revalidation will be faster than the initial load and validate process because there is not as much work to do.  The dataset is already consolidated, and has already had parts of it validated that will not change even if linked to a different Dataflow.  The revalidation service only revalidates parts of the dataset that will change due to a different structure link, for example it would revalidate against constraints if these are different, and validation schemes (mathematical validation rules) if there are different rules based on changing the linked structure for the dataset.&lt;br /&gt;
&lt;br /&gt;
Revalidation is an asynchronous action, whose progress can be tracked using the same token and tracking web services provided. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/revalidate&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Content-Type&amp;lt;/b&amp;gt;|| application/json&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - request received and being processed&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - request could not be performed (possibly due to bad syntax of JSON POST)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Post Body ==&lt;br /&gt;
The POST request must contain the token of the dataset to revalidate, this is the same token that was provided by the server on data load.  The SRef is an array of URNs, one for each Dataset that was present in the data file loaded to the server.  Each URN refers to which structure to use to validate the dataset against.  The URN can either be to a Data Structure Definition, Dataflow, or Provision Agreement.&lt;br /&gt;
 {&lt;br /&gt;
   UID : &amp;quot;datasetdetailsuid&amp;quot;,&lt;br /&gt;
  SRef : [&amp;quot;urn1&amp;quot;, &amp;quot;urn2&amp;quot;, urn3&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Revalidate Response ==&lt;br /&gt;
The response is a JSON message with a success message.  The validation progress should be tracked using the token that was used in the re-validation request against the [[Asynchronous_Data_Validation_and_Transformation#Request_Load_Status|Load Status]] web service.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;Success&amp;quot; : true,&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Data Publish =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Entry Point&amp;lt;/b&amp;gt;|| &amp;lt;b&amp;gt; /ws/public/data/publish&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Access&amp;lt;/b&amp;gt;|| &amp;lt;span style='color:green'&amp;gt;&amp;lt;b&amp;gt;Public&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; (default). Configurable to Private&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Http Method&amp;lt;/b&amp;gt;|| POST&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Accepts&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Format&amp;lt;/b&amp;gt;|| JSON&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#eaecf0&amp;quot;|&amp;lt;b&amp;gt;Response Statuses&amp;lt;/b&amp;gt;|| &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;200&amp;lt;/b&amp;gt; - Publish request accepted&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;400&amp;lt;/b&amp;gt; - Bad request&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;401&amp;lt;/b&amp;gt; - Unauthorized (if access has been restricted)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt; - Server Error&amp;lt;/p&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publishes the dataset loaded against the uid the expected json is as follows&lt;br /&gt;
 {&lt;br /&gt;
   UID : &amp;quot;datasetdetailsuid&amp;quot;,&lt;br /&gt;
   Action : &amp;quot;Append|Replace|Delete&amp;quot;,&lt;br /&gt;
   DeleteAction : &amp;quot;DEFAULT|OBSERVATIONS|SERIES&amp;quot;,&lt;br /&gt;
   Dataset: int&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The If the action is Delete, then there are three different options for Delete Action.  The DEFAULT option is to use the SDMX Delete rules, OBSERVATION will delete all the observations in the loaded dataset from the database, SERIES will delete all the series in the dataset from the database (including all the observations that belong to the series).&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6659</id>
		<title>Change Log FR - V11 and subsequent releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6659"/>
		<updated>2024-02-12T09:37:55Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Changelog for Fusion Registry Version 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 11=&lt;br /&gt;
&lt;br /&gt;
==Version 11.13.0 (Released: 2023/02/08)==&lt;br /&gt;
Based on FMR 11.14.1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-22: Creating &amp;quot;flat CSV&amp;quot; no longer includes unecessary Sibling Group entries at the start of the file&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-181: Support for SDMX-ML v3.0 Data&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-39: Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-163: Data Web Service contains duplicate entry for &amp;quot;Excel&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-164: Data Web Service contains unstyled text label&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-76:  &amp;quot;lastUpdated&amp;quot; parameter not working correctly on Data Query for external databases&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.3 (Released: 2023/11/24)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-217: Concurrent modification exception in cache&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.2 (Released: 2023/11/22)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-216: REST query which results in no data now returns a 404 with an SDMX error message, was previously an empty dataset&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-215: Publication Tables: 'includePeriod' REST query parameter returns no data when multiple Dataflows are used and 1 has no data&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.1 (Released: 2023/11/21)==&lt;br /&gt;
Based on  FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-211: Improvements to the &amp;quot;Test Mapping&amp;quot; feature&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-214: Registry can consume all connections to an External Data Store&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.0 (Released: 2023/11/20)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-210: Publication Table: Calculation expression to support default value when no Observation found&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-213: Publication Tables: Calculation expression to support default value if no reported value found&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-212: Publication Table: Formatting issue using partial keys - returns 400 exception&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.11.0 (Released: 2023/11/03)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-206: Create aggregate series using linked Hierarchy&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-207: Data Query detail parameter; added 'raw' as a new value to support export of data with no calcualted values via hierarchical aggregations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-208: In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-209: Publication Table: Issue applying formatting rules across multiple Dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.1 (Released: 2023/09/15)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-205: saveas=[filename].zip from v1 SDMX web service results in a corrupt zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.0 (Released: 2023/09/11)==&lt;br /&gt;
Based on  FMR 11.10.1&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-195: Publication Tables: Allow dependant variables to be overridden from the API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-197: Default response formats in v2 web service are now configurable&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-203: Kafa: new topic to publish structure transaction events to&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-204: Kafa: new topic to publish reference metadata events to&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-202: Structure Format response is no longer auto detected if not explicitly set (takes value from default setting)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-198: Querying for data by observation attributes&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-199: saveas=zip is not working on v2 API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-200: Publication table: Formatting cells ignores UNIT_MULT when it is reported as a dataset level attribute&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-201: Publication table: Conditional Formatting being applied when condition references a Component which is not present in DSD&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.6 (Released: 2023/08/25)==&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-163: Validator: &amp;quot;Missing Attributes&amp;quot; renamed to &amp;quot;Missing Components&amp;quot; and reports on missing Measures&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-164: Add &amp;quot;Output Required&amp;quot; UI control to Structure Mapping&amp;lt;br&amp;gt;&lt;br /&gt;
FR110188: Adding a observation formatting rule treats comma separeted component ids as an AND operator (was OR)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-146: Update Apache POI to version 5&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-147: Update Commons-fileupload third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-148: Update Spring dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-149: Update Jettison third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-150: Web Service to refresh caches&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-158: Merging a Codelist should merge Locale information&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-160: Update Spring and Jackson Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-161: Implment caching on publication tables&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-167: Improve Mapping functionality so that it can perform Validation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-171: Portal File system sweep - allow files to be placed in root of sweep directory&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-173: Update Kryo to version 5.5.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-174: Publication Tables - not formatting numbers with scientific notation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-175: Components with Time based Mappings cannot be edited in the Structure Map Wizard&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-176: Support Custom Plugins&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-190: Add SDMX-JSON v2 to the UI&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-191: Restore Fusion Security as an authentication mechanism&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-192: FMR#481: Duplicated group IDs for schema queries in SDMX-JSON&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-193: Mapped Datasets Configuration - new option &amp;quot;Output Required&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-151: Item Validity not returning most recent entry prior to today's date&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-152: Subscript out of range error with FusionXL when carriage return is in the name of a structure&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-153: No transactions returned on SDMX Transactions page when using date slider&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-155: Publicaiton Table Editor: Dependent Variables, remove variable button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-156: Publication Table availabililty algorithm modified to better calculate default values when using multiple dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-157: FusionXL resolve carriage returns in concept names&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-159: Cross references not updated correctly when structure already exists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-162: Update Vulnerable Dependencies for FMR 11.7.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-165: Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-166: FMR#418 - Conversion and mapping services fail to read SDMX CSV 2.0 format files with BOM&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-168: CSV-TS data format outputting names as labels does not output labels in last Dimension/Attribute column&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-169: RegEx Capture Groups for Representation Map only support 0-9 (\10 and above does not work)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.5 (Released: 2023/03/08)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-140: Modification of interpration of SDMX-CSV V2 row https://github.com/bis-med-it/fmr/issues/349&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-145: Fusion Excel Export Data API now takes an additional 'attachment' parameter&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-137: Removal of dependencies: gson, protobuf, closure, args4j&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-138: Unable to load Structure File when Mapping refers to DSD with ValueList coded dimension https://github.com/bis-med-it/fmr/issues/359&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-141: Caching in reference metadata requests https://github.com/bis-med-it/fmr/issues/356&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-142: Parsing EDI fails to detect malformed period https://github.com/bis-med-it/fmr/issues/362&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-143: EDI REL segment must be followed by ARR segment https://github.com/bis-med-it/fmr/issues/322&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-144: Publication Table - Calculations which contain missing values should not output a value&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.4 (Released: 2023/02/17)==&lt;br /&gt;
'''Bug Fixes'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-135: Publication Table - calculated values could come back as enginnering string when standard form is requested&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-136: Regression mapped data store was not mapping rows with null attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.3 (Released: 2023/02/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-129: Temporary &amp;quot;MV&amp;quot; files not being cleared up after data transformation https://github.com/bis-med-it/fmr/issues/346 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-131: Improve Performance of large Codelists which have Item Validity https://github.com/bis-med-it/fmr/issues/353 &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-133: Improve linking to external datasource by auto detecting foreign key &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.2 (Released: 2023/02/13)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-132: Supported 'latest' in v2 query to prevent errors in connected tools&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.1 (Released: 2023/02/10)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-128: Security rule on OBS Attribute blocks observation when value is null&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.0 (Released: 2023/02/03)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-117: Provide option to skip Validation phase in Transform Web Service https://github.com/bis-med-it/fmr/issues/237&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-120: Publication Table - apply number formatting to calculated cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-121: Publication Table - Apply number scaling before calculations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-118: Use the public fastUtil library https://github.com/bis-med-it/fmr/issues/338&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-116: Timezone issue with REST API resulting in no data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-119: Codelists with Annotations not being correctly parsed in SDMX-JSON  https://github.com/bis-med-it/fmr/issues/345&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-123: EDI should prevent Quadruplet attributes in Footnote Section https://github.com/bis-med-it/fmr/issues/347&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-124: EDI file missing mandatory Period Information validates successfully  https://github.com/bis-med-it/fmr/issues/348&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-125: Improve validation of EDI DTM segment https://github.com/bis-med-it/fmr/issues/351&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-126: Publication Table - decimal places (fixed) truncated trailing zero places when locale was also set&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-127: Duplicate elements in SDMX CSV result in unexpected output    https://github.com/bis-med-it/fmr/issues/342 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.2 (Released: 2023/01/17)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-108: Prevent contradictory excel mappings (generted from Fame Metadata Manager) worksheets being uploaded to Registry&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-109: Flag contradictory excel mappings (generted from Fame Metadata Manager) in generated worksheet  &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-134: Improve Metrics Report with IncUnmappedReport option &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-111: Change ID Generation of Representation Map from FusionFameMapper xlsx files.&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-115: Ensure Implicit Mappings in Structure Maps validate codelists for valid intersection &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-107: Parent codes should be included in reference partial&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-110: Complete Cube web service feature outputs empty measure values (not 0 values)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-112: Data export formats excel-ts and excel-series can miss observations in output series if series contains observations with no measure values and no attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-113: Fix 'too much recursion' error with reverse engineer data structure with large number of Dimensions&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-114: Validate submission of Structure Map's Implicit mappings to ensure Coded mappings have a valid intersection from source to target &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.1 (Released: 2023/01/11)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-101: Unable to import Codelists with multiple levels of inheritence in same submission as structures that use inherited codes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-102: Bulk actions - detail=raw is ignored&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-103: REST query: detail=raw is not applied to referenced codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-104: IncValid output may contain empty series when it should not be generated&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-105: Annotations are ignored when importing 2.1 XML Hierarchical Codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-106: format=csv-series null pointer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.0 (Released: 2022/12/21)==&lt;br /&gt;
'''Important Note for MySQL users:''' due to changes in the distribution of the MySQL connector (change FR11-94 below), please read [[Install_MySQL#Installing_MySQL_5.7|this article]].&lt;br /&gt;
&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-98: Publication Table - support a scaling function applied to numerical observations&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-93: Improve Performance of Viewing a Hierarchy https://wiki.sdmxcloud.org/Publication_Table#Formatting_Numerical_Observation_Values&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-91: Validation and Transformation should preserve original format unless output format specified &amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Validation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-94: Remove MySQL Connector https://wiki.sdmxcloud.org/Install_MySQL#Installing_MySQL_5.7&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-89: Support dataset attribute consolidation (detection of duplicates)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-90: Observation deletions are no longer written in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-92: NPE when publishing EDI data from Command Line&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-95: Publication Table - UI changes table definition (looses column) when clicking preview table &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-96: Publication Table - Preview table error when table heading Rowspan &amp;gt; 1&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-97: Publication Table - bug fix on formatting obs which removed values from output table&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-99: Publication Table - Scientific Notation shows NaN in UI and is not applied to observation values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-100: Refreshable workbook - issue security challenge when connecting to private server&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-207: Transforming Data with &amp;quot;Delete&amp;quot; action can leave erroneous output in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-217: Publication Tables: Numerical Observation, &amp;quot;Add Rule&amp;quot; button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-224: Failure to report unmapped data when using TIME_PERIOD mapping&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.2 (Released: 2022/11/22)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-84 - In SDMX CSV, SERIES_KEY and OBS_KEY will output with the quote marks around the whole key&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-82 - Size of column in Portal Table not large enough to contain Data Source ID&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-85 - When loading via Registry UI, Data file with Duplicate Series results in MV Store Error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-86 - Viewing a Representation Map has issue with &amp;quot;valid from&amp;quot; on Mappings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.1 (Released: 2022/11/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-83 - Support Categorise Publication Table via the UI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.0 (Released: 2022/11/11)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-78 - Publication Table Support Numerical Observation formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-79 - Fix an issue when &amp;quot;edi.datagroup.identifier&amp;quot; specified with value of asterisk&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-81 - Data Portal - ESTAT Connector fix&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.6.0 (Released: 2022/11/31)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-76 - [[Audit_Web_Services#Search_Structure_Queries|Audit Structure Queries]]&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-77 - [[Audit_Web_Services#Search_Data_Queries|Audit Data Queries]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-75 - Support for extended UTF-8 characters https://github.com/MEDIT-Org/fmr/issues/297 &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update FontAwesome to use Version 6&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-71 - Corrected issue with Dynamic Attributes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-72 - Version Drop-Down not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-74 - Security Group Web Service does not output UTF-8 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update Web Services &amp;quot;structure&amp;quot; page so the plus symbol is used for &amp;quot;latest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.2 (Released: 2022/10/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-194 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-202 - Update dependencies: Hibernate, Spring-Kafka, Jettison and Jersey https://github.com/MEDIT-Org/fmr/issues/294&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-66 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-67 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-68 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-69 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue)&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-189 - Behaviour of web service resolving multiple Codelist inheritance with &amp;quot;details=raw&amp;quot; https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-196 - Unable to read Excel Spreadsheet where all Frequencies are Formulas&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-197 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;children&amp;quot; doesn't return children as raw https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-198 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;descendants&amp;quot; doesn't return descendants https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-199 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-200 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-201 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-203 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue) &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-205 - Version Number not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1.1 (Released: 2022/10/10)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-73 - Modify SQL to ensure GMT Timezone is used&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1 (Released: 2022/10/05)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-60 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-61 - orderMeasure web service parameter to sort observations by date asc/desc&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.0 (Released: 2022/09/28)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-187/FR11-53 - Support recovery of structure transactions from backup on installation https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-52 - Support variable number of max arguments to a SQL IN statement&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-58 - Support import of datafile containing mulitple datasets&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-183 - Update dependencies https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-48 - Update third-party dependencies: apache-jstl, commons-dcp2, joda-time, spring, tika-core&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-45 - Add Version Number to Provision Agreement Selector in Data Source Manager Modal&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-181/FR11-46 - SDMX CSV v 2.0 Data Format does not report its format https://github.com/MEDIT-Org/fmr/issues/110&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-184/FR11-49 - Support '*' for structure type in REST API https://github.com/MEDIT-Org/fmr/issues/273&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-185/FR11-51 - Failure on Compare Revision shows Stack Trace https://github.com/MEDIT-Org/fmr/issues/278&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-186/FR11-55 - SDMX-JSON Writer not outputting DSD as stub https://github.com/MEDIT-Org/fmr/issues/274&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-50 - FameMapper code is creating Excel files in temporary storage which are not deleted&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-54 - EDI data not fully consolidated when publishing data via web service&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Version 11.4.3 (Released: 2022/09/13)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-174 - Publication Tables: Formatting of Missing Values support ObsValue=NaN https://github.com/MEDIT-Org/fmr/issues/253&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-175 - Support Reading of Reference Metadata  (with restrictions) in version 2.1 SDMX   https://github.com/MEDIT-Org/fmr/issues/250&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-182 - Modify ID generation strategy for importing Reference Metadata at v2.1&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-39 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-43 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot;&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-44 - SQL Server does not delete temporary tables&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-169 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-170 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-171 - Order of revisions not as expected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-176 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-178 - Quadruplet in EDI vs the other formats in the context of data consolidation or integration https://github.com/MEDIT-Org/fmr/issues/118&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-179 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot; https://github.com/MEDIT-Org/fmr/issues/255&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.2 (Released: 2022/08/19)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-30 - Fusion Security Manager will not accept AD group names longer than 30 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-34 - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.1 (Released: 2022/08/10)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-21 - Issue loading data into SQL Server in Registry managed table &lt;br /&gt;
FR11-26 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-27 - Order of revisions not as expected&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-28 - JNDI Registry Managed Database - unable to load data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-25 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.0 (Released: 2022/07/22)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-18 - Support Reference Metadata https://wiki.sdmxcloud.org/Reference_Metadata&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-146 - Dependency updates&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-159 - Add &amp;quot;Raw&amp;quot; option to Download structures and remove &amp;quot;Include internal settings&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-160 - Allow a Concept Representation to be a ValueList&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-14 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-17 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-19 - Increase max size of security group ID from 30 to 100 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-162 - SERIES_KEY column should be reserved for series keys&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-161 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-163 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-166 - Duplicate attribute is not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-167 - Publication Table - Array Variables fail to save&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-168 - Error encountered whist attempting to deserialize structure&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.3.0 (Released: 2022/07/06)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-10/FMR11-153 - [[Synchronise_structural_metadata_between_environments|Environment Synchronisation - compare the structural metadata content with that from another Registry, push or pull changes]]&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-158 - [[Publication_Table#Footnotes|Publication Table: Footnotes support]]&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-152 - Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-154 - Unexpected structure validation error from FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-155 - Structure validation errors are not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-156 - v2 structure REST API does not support queries for multiple items using the comma syntax&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-157 - Typo in header of Representation Maps page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.2.0 (Released: 2022/06/27)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-150] Specify the validation and transformation behaviour when duplicate observations are found - [[Data_Transformation_Web_Service#HTTP_Headers|https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-3] Schema Query in structure format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-4] Fusion Cache ignoring parameters like normalise freq on V1 data queries&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-5] Data Point Security - allow rule against a series attribute value that does not exist in the dataset restricts all data&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-8] Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-141] Re-opening of Alternate Half year Issue&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-143] TIME_FORMAT not being generated correctly&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-144] Problem with Date data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-145] Problem with Description data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-147] DSD Wizard step 3 - not allowing Enumerated Representation &amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-148] Schema Query in Structure Format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:&amp;lt;br&amp;gt;'''&lt;br /&gt;
[FMR11-140] Revert xsi:type=SiblingType, change the schema to output the Group as Sibling not SiblingType -&lt;br /&gt;
&lt;br /&gt;
==Version 11.1.0 (Released: 2022/06/01)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Publication_Table|Publication Tables]]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5130] [https://wiki.sdmxcloud.org/Publication_Table#Looping_Rows Publication Table - Support Dynamic Rows]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5131] [https://wiki.sdmxcloud.org/Publication_Table#Formatting_Missing_Observations Publication Table - Format rules on cells with no data ]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5132] [https://wiki.sdmxcloud.org/Publication_Table#Dependent_Dimension_Variable Publication Table - Rules to derive a Dimension Value from another Dimenison's value]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5133] [https://wiki.sdmxcloud.org/Publication_Table#Anchor_Rows Publication Table - Option to output rows with no data ] &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5134] [https://wiki.sdmxcloud.org/Publication_Table_Web_Services#Materialise_Publication_Table Publication Table - Ouput Materialised Table in Excel ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5129] - Support for MySQL 8 and above&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.0.0 (Released: 2022/05/22)==&lt;br /&gt;
'''Changes and New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the SDMX 3.0 information model as Fusion Registry’s internal metadata object model&lt;br /&gt;
* SDMX 3.0 REST API support&lt;br /&gt;
* Backward compatibility for SDMX 2.1 and 2.0 structures and formats&lt;br /&gt;
* Backward compatibility with SDMX 2.1 REST API (REST API v1 specification)&lt;br /&gt;
* Improved data and metadata access control&lt;br /&gt;
* Granular control over admin rights&lt;br /&gt;
* Fusion Portal – scheduled and on demand data and structure loads&lt;br /&gt;
* Refreshable Excel data format&lt;br /&gt;
* JNDI database connection option&lt;br /&gt;
* Publication Tables - publish curated but dynamic user interactive web data tables that show precisely the statistics required even if they come from multiple different data sets&lt;br /&gt;
&lt;br /&gt;
'''Breaking Changes from Fusion Registry 10:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the operating database schema - upgrading from Fusion Registry 10 to Fusion Registry 11 requires a fresh install and migration of the metadata, data and settings&lt;br /&gt;
* Environment sync function temporarily removed&lt;br /&gt;
* Fusion Security support deprecated - Active Directory and LDAP are the supported authentication services in Fusion Registry 11&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6658</id>
		<title>Change Log FR - V11 and subsequent releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6658"/>
		<updated>2024-02-12T09:34:45Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 11.13.0 (Released: 2023/02/08) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 11=&lt;br /&gt;
&lt;br /&gt;
==Version 11.13.0 (Released: 2023/02/08)==&lt;br /&gt;
Based on FMR 11.14.1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-22 - Creating &amp;quot;flat CSV&amp;quot; no longer includes unecessary Sibling Group entries at the start of the file&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-181 - Support for SDMX-ML v3.0 Data&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-39 - Update vulnerable third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-163 - Data Web Service contains duplicate entry for &amp;quot;Excel&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-164 - Data Web Service contains unstyled text label&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-76 - &amp;quot;lastUpdated&amp;quot; parameter not working correctly on Data Query for external databases&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.3 (Released: 2023/11/24)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-217: Concurrent modification exception in cache&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.2 (Released: 2023/11/22)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-216: REST query which results in no data now returns a 404 with an SDMX error message, was previously an empty dataset&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-215: Publication Tables: 'includePeriod' REST query parameter returns no data when multiple Dataflows are used and 1 has no data&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.1 (Released: 2023/11/21)==&lt;br /&gt;
Based on  FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-211: Improvements to the &amp;quot;Test Mapping&amp;quot; feature&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-214: Registry can consume all connections to an External Data Store&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.0 (Released: 2023/11/20)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-210: Publication Table: Calculation expression to support default value when no Observation found&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-213: Publication Tables: Calculation expression to support default value if no reported value found&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-212: Publication Table: Formatting issue using partial keys - returns 400 exception&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.11.0 (Released: 2023/11/03)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-206: Create aggregate series using linked Hierarchy&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-207: Data Query detail parameter; added 'raw' as a new value to support export of data with no calcualted values via hierarchical aggregations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-208: In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-209: Publication Table: Issue applying formatting rules across multiple Dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.1 (Released: 2023/09/15)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-205: saveas=[filename].zip from v1 SDMX web service results in a corrupt zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.0 (Released: 2023/09/11)==&lt;br /&gt;
Based on  FMR 11.10.1&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-195: Publication Tables: Allow dependant variables to be overridden from the API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-197: Default response formats in v2 web service are now configurable&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-203: Kafa: new topic to publish structure transaction events to&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-204: Kafa: new topic to publish reference metadata events to&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-202: Structure Format response is no longer auto detected if not explicitly set (takes value from default setting)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-198: Querying for data by observation attributes&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-199: saveas=zip is not working on v2 API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-200: Publication table: Formatting cells ignores UNIT_MULT when it is reported as a dataset level attribute&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-201: Publication table: Conditional Formatting being applied when condition references a Component which is not present in DSD&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.6 (Released: 2023/08/25)==&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-163: Validator: &amp;quot;Missing Attributes&amp;quot; renamed to &amp;quot;Missing Components&amp;quot; and reports on missing Measures&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-164: Add &amp;quot;Output Required&amp;quot; UI control to Structure Mapping&amp;lt;br&amp;gt;&lt;br /&gt;
FR110188: Adding a observation formatting rule treats comma separeted component ids as an AND operator (was OR)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-146: Update Apache POI to version 5&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-147: Update Commons-fileupload third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-148: Update Spring dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-149: Update Jettison third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-150: Web Service to refresh caches&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-158: Merging a Codelist should merge Locale information&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-160: Update Spring and Jackson Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-161: Implment caching on publication tables&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-167: Improve Mapping functionality so that it can perform Validation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-171: Portal File system sweep - allow files to be placed in root of sweep directory&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-173: Update Kryo to version 5.5.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-174: Publication Tables - not formatting numbers with scientific notation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-175: Components with Time based Mappings cannot be edited in the Structure Map Wizard&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-176: Support Custom Plugins&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-190: Add SDMX-JSON v2 to the UI&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-191: Restore Fusion Security as an authentication mechanism&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-192: FMR#481: Duplicated group IDs for schema queries in SDMX-JSON&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-193: Mapped Datasets Configuration - new option &amp;quot;Output Required&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-151: Item Validity not returning most recent entry prior to today's date&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-152: Subscript out of range error with FusionXL when carriage return is in the name of a structure&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-153: No transactions returned on SDMX Transactions page when using date slider&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-155: Publicaiton Table Editor: Dependent Variables, remove variable button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-156: Publication Table availabililty algorithm modified to better calculate default values when using multiple dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-157: FusionXL resolve carriage returns in concept names&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-159: Cross references not updated correctly when structure already exists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-162: Update Vulnerable Dependencies for FMR 11.7.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-165: Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-166: FMR#418 - Conversion and mapping services fail to read SDMX CSV 2.0 format files with BOM&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-168: CSV-TS data format outputting names as labels does not output labels in last Dimension/Attribute column&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-169: RegEx Capture Groups for Representation Map only support 0-9 (\10 and above does not work)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.5 (Released: 2023/03/08)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-140: Modification of interpration of SDMX-CSV V2 row https://github.com/bis-med-it/fmr/issues/349&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-145: Fusion Excel Export Data API now takes an additional 'attachment' parameter&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-137: Removal of dependencies: gson, protobuf, closure, args4j&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-138: Unable to load Structure File when Mapping refers to DSD with ValueList coded dimension https://github.com/bis-med-it/fmr/issues/359&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-141: Caching in reference metadata requests https://github.com/bis-med-it/fmr/issues/356&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-142: Parsing EDI fails to detect malformed period https://github.com/bis-med-it/fmr/issues/362&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-143: EDI REL segment must be followed by ARR segment https://github.com/bis-med-it/fmr/issues/322&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-144: Publication Table - Calculations which contain missing values should not output a value&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.4 (Released: 2023/02/17)==&lt;br /&gt;
'''Bug Fixes'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-135: Publication Table - calculated values could come back as enginnering string when standard form is requested&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-136: Regression mapped data store was not mapping rows with null attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.3 (Released: 2023/02/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-129: Temporary &amp;quot;MV&amp;quot; files not being cleared up after data transformation https://github.com/bis-med-it/fmr/issues/346 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-131: Improve Performance of large Codelists which have Item Validity https://github.com/bis-med-it/fmr/issues/353 &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-133: Improve linking to external datasource by auto detecting foreign key &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.2 (Released: 2023/02/13)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-132: Supported 'latest' in v2 query to prevent errors in connected tools&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.1 (Released: 2023/02/10)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-128: Security rule on OBS Attribute blocks observation when value is null&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.0 (Released: 2023/02/03)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-117: Provide option to skip Validation phase in Transform Web Service https://github.com/bis-med-it/fmr/issues/237&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-120: Publication Table - apply number formatting to calculated cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-121: Publication Table - Apply number scaling before calculations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-118: Use the public fastUtil library https://github.com/bis-med-it/fmr/issues/338&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-116: Timezone issue with REST API resulting in no data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-119: Codelists with Annotations not being correctly parsed in SDMX-JSON  https://github.com/bis-med-it/fmr/issues/345&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-123: EDI should prevent Quadruplet attributes in Footnote Section https://github.com/bis-med-it/fmr/issues/347&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-124: EDI file missing mandatory Period Information validates successfully  https://github.com/bis-med-it/fmr/issues/348&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-125: Improve validation of EDI DTM segment https://github.com/bis-med-it/fmr/issues/351&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-126: Publication Table - decimal places (fixed) truncated trailing zero places when locale was also set&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-127: Duplicate elements in SDMX CSV result in unexpected output    https://github.com/bis-med-it/fmr/issues/342 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.2 (Released: 2023/01/17)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-108: Prevent contradictory excel mappings (generted from Fame Metadata Manager) worksheets being uploaded to Registry&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-109: Flag contradictory excel mappings (generted from Fame Metadata Manager) in generated worksheet  &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-134: Improve Metrics Report with IncUnmappedReport option &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-111: Change ID Generation of Representation Map from FusionFameMapper xlsx files.&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-115: Ensure Implicit Mappings in Structure Maps validate codelists for valid intersection &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-107: Parent codes should be included in reference partial&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-110: Complete Cube web service feature outputs empty measure values (not 0 values)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-112: Data export formats excel-ts and excel-series can miss observations in output series if series contains observations with no measure values and no attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-113: Fix 'too much recursion' error with reverse engineer data structure with large number of Dimensions&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-114: Validate submission of Structure Map's Implicit mappings to ensure Coded mappings have a valid intersection from source to target &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.1 (Released: 2023/01/11)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-101: Unable to import Codelists with multiple levels of inheritence in same submission as structures that use inherited codes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-102: Bulk actions - detail=raw is ignored&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-103: REST query: detail=raw is not applied to referenced codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-104: IncValid output may contain empty series when it should not be generated&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-105: Annotations are ignored when importing 2.1 XML Hierarchical Codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-106: format=csv-series null pointer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.0 (Released: 2022/12/21)==&lt;br /&gt;
'''Important Note for MySQL users:''' due to changes in the distribution of the MySQL connector (change FR11-94 below), please read [[Install_MySQL#Installing_MySQL_5.7|this article]].&lt;br /&gt;
&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-98: Publication Table - support a scaling function applied to numerical observations&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-93: Improve Performance of Viewing a Hierarchy https://wiki.sdmxcloud.org/Publication_Table#Formatting_Numerical_Observation_Values&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-91: Validation and Transformation should preserve original format unless output format specified &amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Validation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-94: Remove MySQL Connector https://wiki.sdmxcloud.org/Install_MySQL#Installing_MySQL_5.7&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-89: Support dataset attribute consolidation (detection of duplicates)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-90: Observation deletions are no longer written in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-92: NPE when publishing EDI data from Command Line&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-95: Publication Table - UI changes table definition (looses column) when clicking preview table &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-96: Publication Table - Preview table error when table heading Rowspan &amp;gt; 1&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-97: Publication Table - bug fix on formatting obs which removed values from output table&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-99: Publication Table - Scientific Notation shows NaN in UI and is not applied to observation values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-100: Refreshable workbook - issue security challenge when connecting to private server&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-207: Transforming Data with &amp;quot;Delete&amp;quot; action can leave erroneous output in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-217: Publication Tables: Numerical Observation, &amp;quot;Add Rule&amp;quot; button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-224: Failure to report unmapped data when using TIME_PERIOD mapping&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.2 (Released: 2022/11/22)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-84 - In SDMX CSV, SERIES_KEY and OBS_KEY will output with the quote marks around the whole key&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-82 - Size of column in Portal Table not large enough to contain Data Source ID&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-85 - When loading via Registry UI, Data file with Duplicate Series results in MV Store Error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-86 - Viewing a Representation Map has issue with &amp;quot;valid from&amp;quot; on Mappings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.1 (Released: 2022/11/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-83 - Support Categorise Publication Table via the UI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.0 (Released: 2022/11/11)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-78 - Publication Table Support Numerical Observation formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-79 - Fix an issue when &amp;quot;edi.datagroup.identifier&amp;quot; specified with value of asterisk&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-81 - Data Portal - ESTAT Connector fix&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.6.0 (Released: 2022/11/31)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-76 - [[Audit_Web_Services#Search_Structure_Queries|Audit Structure Queries]]&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-77 - [[Audit_Web_Services#Search_Data_Queries|Audit Data Queries]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-75 - Support for extended UTF-8 characters https://github.com/MEDIT-Org/fmr/issues/297 &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update FontAwesome to use Version 6&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-71 - Corrected issue with Dynamic Attributes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-72 - Version Drop-Down not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-74 - Security Group Web Service does not output UTF-8 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update Web Services &amp;quot;structure&amp;quot; page so the plus symbol is used for &amp;quot;latest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.2 (Released: 2022/10/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-194 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-202 - Update dependencies: Hibernate, Spring-Kafka, Jettison and Jersey https://github.com/MEDIT-Org/fmr/issues/294&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-66 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-67 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-68 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-69 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue)&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-189 - Behaviour of web service resolving multiple Codelist inheritance with &amp;quot;details=raw&amp;quot; https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-196 - Unable to read Excel Spreadsheet where all Frequencies are Formulas&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-197 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;children&amp;quot; doesn't return children as raw https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-198 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;descendants&amp;quot; doesn't return descendants https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-199 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-200 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-201 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-203 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue) &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-205 - Version Number not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1.1 (Released: 2022/10/10)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-73 - Modify SQL to ensure GMT Timezone is used&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1 (Released: 2022/10/05)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-60 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-61 - orderMeasure web service parameter to sort observations by date asc/desc&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.0 (Released: 2022/09/28)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-187/FR11-53 - Support recovery of structure transactions from backup on installation https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-52 - Support variable number of max arguments to a SQL IN statement&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-58 - Support import of datafile containing mulitple datasets&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-183 - Update dependencies https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-48 - Update third-party dependencies: apache-jstl, commons-dcp2, joda-time, spring, tika-core&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-45 - Add Version Number to Provision Agreement Selector in Data Source Manager Modal&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-181/FR11-46 - SDMX CSV v 2.0 Data Format does not report its format https://github.com/MEDIT-Org/fmr/issues/110&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-184/FR11-49 - Support '*' for structure type in REST API https://github.com/MEDIT-Org/fmr/issues/273&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-185/FR11-51 - Failure on Compare Revision shows Stack Trace https://github.com/MEDIT-Org/fmr/issues/278&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-186/FR11-55 - SDMX-JSON Writer not outputting DSD as stub https://github.com/MEDIT-Org/fmr/issues/274&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-50 - FameMapper code is creating Excel files in temporary storage which are not deleted&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-54 - EDI data not fully consolidated when publishing data via web service&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Version 11.4.3 (Released: 2022/09/13)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-174 - Publication Tables: Formatting of Missing Values support ObsValue=NaN https://github.com/MEDIT-Org/fmr/issues/253&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-175 - Support Reading of Reference Metadata  (with restrictions) in version 2.1 SDMX   https://github.com/MEDIT-Org/fmr/issues/250&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-182 - Modify ID generation strategy for importing Reference Metadata at v2.1&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-39 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-43 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot;&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-44 - SQL Server does not delete temporary tables&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-169 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-170 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-171 - Order of revisions not as expected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-176 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-178 - Quadruplet in EDI vs the other formats in the context of data consolidation or integration https://github.com/MEDIT-Org/fmr/issues/118&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-179 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot; https://github.com/MEDIT-Org/fmr/issues/255&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.2 (Released: 2022/08/19)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-30 - Fusion Security Manager will not accept AD group names longer than 30 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-34 - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.1 (Released: 2022/08/10)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-21 - Issue loading data into SQL Server in Registry managed table &lt;br /&gt;
FR11-26 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-27 - Order of revisions not as expected&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-28 - JNDI Registry Managed Database - unable to load data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-25 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.0 (Released: 2022/07/22)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-18 - Support Reference Metadata https://wiki.sdmxcloud.org/Reference_Metadata&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-146 - Dependency updates&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-159 - Add &amp;quot;Raw&amp;quot; option to Download structures and remove &amp;quot;Include internal settings&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-160 - Allow a Concept Representation to be a ValueList&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-14 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-17 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-19 - Increase max size of security group ID from 30 to 100 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-162 - SERIES_KEY column should be reserved for series keys&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-161 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-163 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-166 - Duplicate attribute is not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-167 - Publication Table - Array Variables fail to save&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-168 - Error encountered whist attempting to deserialize structure&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.3.0 (Released: 2022/07/06)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-10/FMR11-153 - [[Synchronise_structural_metadata_between_environments|Environment Synchronisation - compare the structural metadata content with that from another Registry, push or pull changes]]&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-158 - [[Publication_Table#Footnotes|Publication Table: Footnotes support]]&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-152 - Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-154 - Unexpected structure validation error from FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-155 - Structure validation errors are not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-156 - v2 structure REST API does not support queries for multiple items using the comma syntax&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-157 - Typo in header of Representation Maps page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.2.0 (Released: 2022/06/27)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-150] Specify the validation and transformation behaviour when duplicate observations are found - [[Data_Transformation_Web_Service#HTTP_Headers|https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-3] Schema Query in structure format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-4] Fusion Cache ignoring parameters like normalise freq on V1 data queries&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-5] Data Point Security - allow rule against a series attribute value that does not exist in the dataset restricts all data&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-8] Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-141] Re-opening of Alternate Half year Issue&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-143] TIME_FORMAT not being generated correctly&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-144] Problem with Date data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-145] Problem with Description data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-147] DSD Wizard step 3 - not allowing Enumerated Representation &amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-148] Schema Query in Structure Format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:&amp;lt;br&amp;gt;'''&lt;br /&gt;
[FMR11-140] Revert xsi:type=SiblingType, change the schema to output the Group as Sibling not SiblingType -&lt;br /&gt;
&lt;br /&gt;
==Version 11.1.0 (Released: 2022/06/01)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Publication_Table|Publication Tables]]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5130] [https://wiki.sdmxcloud.org/Publication_Table#Looping_Rows Publication Table - Support Dynamic Rows]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5131] [https://wiki.sdmxcloud.org/Publication_Table#Formatting_Missing_Observations Publication Table - Format rules on cells with no data ]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5132] [https://wiki.sdmxcloud.org/Publication_Table#Dependent_Dimension_Variable Publication Table - Rules to derive a Dimension Value from another Dimenison's value]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5133] [https://wiki.sdmxcloud.org/Publication_Table#Anchor_Rows Publication Table - Option to output rows with no data ] &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5134] [https://wiki.sdmxcloud.org/Publication_Table_Web_Services#Materialise_Publication_Table Publication Table - Ouput Materialised Table in Excel ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5129] - Support for MySQL 8 and above&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.0.0 (Released: 2022/05/22)==&lt;br /&gt;
'''Changes and New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the SDMX 3.0 information model as Fusion Registry’s internal metadata object model&lt;br /&gt;
* SDMX 3.0 REST API support&lt;br /&gt;
* Backward compatibility for SDMX 2.1 and 2.0 structures and formats&lt;br /&gt;
* Backward compatibility with SDMX 2.1 REST API (REST API v1 specification)&lt;br /&gt;
* Improved data and metadata access control&lt;br /&gt;
* Granular control over admin rights&lt;br /&gt;
* Fusion Portal – scheduled and on demand data and structure loads&lt;br /&gt;
* Refreshable Excel data format&lt;br /&gt;
* JNDI database connection option&lt;br /&gt;
* Publication Tables - publish curated but dynamic user interactive web data tables that show precisely the statistics required even if they come from multiple different data sets&lt;br /&gt;
&lt;br /&gt;
'''Breaking Changes from Fusion Registry 10:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the operating database schema - upgrading from Fusion Registry 10 to Fusion Registry 11 requires a fresh install and migration of the metadata, data and settings&lt;br /&gt;
* Environment sync function temporarily removed&lt;br /&gt;
* Fusion Security support deprecated - Active Directory and LDAP are the supported authentication services in Fusion Registry 11&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6657</id>
		<title>Change Log FR - V11 and subsequent releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6657"/>
		<updated>2024-02-12T09:31:14Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Version 11.13.0 (Released: 2023/02/12) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 11=&lt;br /&gt;
&lt;br /&gt;
==Version 11.13.0 (Released: 2023/02/08)==&lt;br /&gt;
Based on FMR 11.14.1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-22 - Creating &amp;quot;flat CSV&amp;quot; with unecessary Sibling Group entries at the start of the file&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-181 - Support for SDMX-ML v3.0 Data&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-39 - Fix software vulnerabilities&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-163 - Data Web Service contains duplicate entry for &amp;quot;Excel&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-164 - Data Web Service contains unstyled text label&amp;lt;br&amp;gt;&lt;br /&gt;
RFS-76 - &amp;quot;lastUpdated&amp;quot; parameter not working correctly on Data Query for external databases&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.3 (Released: 2023/11/24)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-217: Concurrent modification exception in cache&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.2 (Released: 2023/11/22)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-216: REST query which results in no data now returns a 404 with an SDMX error message, was previously an empty dataset&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-215: Publication Tables: 'includePeriod' REST query parameter returns no data when multiple Dataflows are used and 1 has no data&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.1 (Released: 2023/11/21)==&lt;br /&gt;
Based on  FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-211: Improvements to the &amp;quot;Test Mapping&amp;quot; feature&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-214: Registry can consume all connections to an External Data Store&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.0 (Released: 2023/11/20)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-210: Publication Table: Calculation expression to support default value when no Observation found&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-213: Publication Tables: Calculation expression to support default value if no reported value found&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-212: Publication Table: Formatting issue using partial keys - returns 400 exception&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.11.0 (Released: 2023/11/03)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-206: Create aggregate series using linked Hierarchy&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-207: Data Query detail parameter; added 'raw' as a new value to support export of data with no calcualted values via hierarchical aggregations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-208: In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-209: Publication Table: Issue applying formatting rules across multiple Dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.1 (Released: 2023/09/15)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-205: saveas=[filename].zip from v1 SDMX web service results in a corrupt zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.0 (Released: 2023/09/11)==&lt;br /&gt;
Based on  FMR 11.10.1&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-195: Publication Tables: Allow dependant variables to be overridden from the API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-197: Default response formats in v2 web service are now configurable&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-203: Kafa: new topic to publish structure transaction events to&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-204: Kafa: new topic to publish reference metadata events to&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-202: Structure Format response is no longer auto detected if not explicitly set (takes value from default setting)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-198: Querying for data by observation attributes&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-199: saveas=zip is not working on v2 API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-200: Publication table: Formatting cells ignores UNIT_MULT when it is reported as a dataset level attribute&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-201: Publication table: Conditional Formatting being applied when condition references a Component which is not present in DSD&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.6 (Released: 2023/08/25)==&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-163: Validator: &amp;quot;Missing Attributes&amp;quot; renamed to &amp;quot;Missing Components&amp;quot; and reports on missing Measures&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-164: Add &amp;quot;Output Required&amp;quot; UI control to Structure Mapping&amp;lt;br&amp;gt;&lt;br /&gt;
FR110188: Adding a observation formatting rule treats comma separeted component ids as an AND operator (was OR)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-146: Update Apache POI to version 5&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-147: Update Commons-fileupload third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-148: Update Spring dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-149: Update Jettison third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-150: Web Service to refresh caches&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-158: Merging a Codelist should merge Locale information&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-160: Update Spring and Jackson Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-161: Implment caching on publication tables&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-167: Improve Mapping functionality so that it can perform Validation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-171: Portal File system sweep - allow files to be placed in root of sweep directory&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-173: Update Kryo to version 5.5.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-174: Publication Tables - not formatting numbers with scientific notation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-175: Components with Time based Mappings cannot be edited in the Structure Map Wizard&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-176: Support Custom Plugins&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-190: Add SDMX-JSON v2 to the UI&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-191: Restore Fusion Security as an authentication mechanism&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-192: FMR#481: Duplicated group IDs for schema queries in SDMX-JSON&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-193: Mapped Datasets Configuration - new option &amp;quot;Output Required&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-151: Item Validity not returning most recent entry prior to today's date&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-152: Subscript out of range error with FusionXL when carriage return is in the name of a structure&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-153: No transactions returned on SDMX Transactions page when using date slider&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-155: Publicaiton Table Editor: Dependent Variables, remove variable button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-156: Publication Table availabililty algorithm modified to better calculate default values when using multiple dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-157: FusionXL resolve carriage returns in concept names&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-159: Cross references not updated correctly when structure already exists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-162: Update Vulnerable Dependencies for FMR 11.7.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-165: Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-166: FMR#418 - Conversion and mapping services fail to read SDMX CSV 2.0 format files with BOM&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-168: CSV-TS data format outputting names as labels does not output labels in last Dimension/Attribute column&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-169: RegEx Capture Groups for Representation Map only support 0-9 (\10 and above does not work)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.5 (Released: 2023/03/08)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-140: Modification of interpration of SDMX-CSV V2 row https://github.com/bis-med-it/fmr/issues/349&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-145: Fusion Excel Export Data API now takes an additional 'attachment' parameter&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-137: Removal of dependencies: gson, protobuf, closure, args4j&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-138: Unable to load Structure File when Mapping refers to DSD with ValueList coded dimension https://github.com/bis-med-it/fmr/issues/359&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-141: Caching in reference metadata requests https://github.com/bis-med-it/fmr/issues/356&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-142: Parsing EDI fails to detect malformed period https://github.com/bis-med-it/fmr/issues/362&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-143: EDI REL segment must be followed by ARR segment https://github.com/bis-med-it/fmr/issues/322&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-144: Publication Table - Calculations which contain missing values should not output a value&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.4 (Released: 2023/02/17)==&lt;br /&gt;
'''Bug Fixes'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-135: Publication Table - calculated values could come back as enginnering string when standard form is requested&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-136: Regression mapped data store was not mapping rows with null attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.3 (Released: 2023/02/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-129: Temporary &amp;quot;MV&amp;quot; files not being cleared up after data transformation https://github.com/bis-med-it/fmr/issues/346 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-131: Improve Performance of large Codelists which have Item Validity https://github.com/bis-med-it/fmr/issues/353 &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-133: Improve linking to external datasource by auto detecting foreign key &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.2 (Released: 2023/02/13)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-132: Supported 'latest' in v2 query to prevent errors in connected tools&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.1 (Released: 2023/02/10)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-128: Security rule on OBS Attribute blocks observation when value is null&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.0 (Released: 2023/02/03)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-117: Provide option to skip Validation phase in Transform Web Service https://github.com/bis-med-it/fmr/issues/237&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-120: Publication Table - apply number formatting to calculated cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-121: Publication Table - Apply number scaling before calculations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-118: Use the public fastUtil library https://github.com/bis-med-it/fmr/issues/338&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-116: Timezone issue with REST API resulting in no data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-119: Codelists with Annotations not being correctly parsed in SDMX-JSON  https://github.com/bis-med-it/fmr/issues/345&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-123: EDI should prevent Quadruplet attributes in Footnote Section https://github.com/bis-med-it/fmr/issues/347&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-124: EDI file missing mandatory Period Information validates successfully  https://github.com/bis-med-it/fmr/issues/348&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-125: Improve validation of EDI DTM segment https://github.com/bis-med-it/fmr/issues/351&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-126: Publication Table - decimal places (fixed) truncated trailing zero places when locale was also set&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-127: Duplicate elements in SDMX CSV result in unexpected output    https://github.com/bis-med-it/fmr/issues/342 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.2 (Released: 2023/01/17)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-108: Prevent contradictory excel mappings (generted from Fame Metadata Manager) worksheets being uploaded to Registry&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-109: Flag contradictory excel mappings (generted from Fame Metadata Manager) in generated worksheet  &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-134: Improve Metrics Report with IncUnmappedReport option &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-111: Change ID Generation of Representation Map from FusionFameMapper xlsx files.&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-115: Ensure Implicit Mappings in Structure Maps validate codelists for valid intersection &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-107: Parent codes should be included in reference partial&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-110: Complete Cube web service feature outputs empty measure values (not 0 values)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-112: Data export formats excel-ts and excel-series can miss observations in output series if series contains observations with no measure values and no attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-113: Fix 'too much recursion' error with reverse engineer data structure with large number of Dimensions&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-114: Validate submission of Structure Map's Implicit mappings to ensure Coded mappings have a valid intersection from source to target &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.1 (Released: 2023/01/11)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-101: Unable to import Codelists with multiple levels of inheritence in same submission as structures that use inherited codes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-102: Bulk actions - detail=raw is ignored&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-103: REST query: detail=raw is not applied to referenced codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-104: IncValid output may contain empty series when it should not be generated&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-105: Annotations are ignored when importing 2.1 XML Hierarchical Codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-106: format=csv-series null pointer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.0 (Released: 2022/12/21)==&lt;br /&gt;
'''Important Note for MySQL users:''' due to changes in the distribution of the MySQL connector (change FR11-94 below), please read [[Install_MySQL#Installing_MySQL_5.7|this article]].&lt;br /&gt;
&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-98: Publication Table - support a scaling function applied to numerical observations&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-93: Improve Performance of Viewing a Hierarchy https://wiki.sdmxcloud.org/Publication_Table#Formatting_Numerical_Observation_Values&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-91: Validation and Transformation should preserve original format unless output format specified &amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Validation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-94: Remove MySQL Connector https://wiki.sdmxcloud.org/Install_MySQL#Installing_MySQL_5.7&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-89: Support dataset attribute consolidation (detection of duplicates)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-90: Observation deletions are no longer written in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-92: NPE when publishing EDI data from Command Line&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-95: Publication Table - UI changes table definition (looses column) when clicking preview table &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-96: Publication Table - Preview table error when table heading Rowspan &amp;gt; 1&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-97: Publication Table - bug fix on formatting obs which removed values from output table&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-99: Publication Table - Scientific Notation shows NaN in UI and is not applied to observation values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-100: Refreshable workbook - issue security challenge when connecting to private server&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-207: Transforming Data with &amp;quot;Delete&amp;quot; action can leave erroneous output in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-217: Publication Tables: Numerical Observation, &amp;quot;Add Rule&amp;quot; button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-224: Failure to report unmapped data when using TIME_PERIOD mapping&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.2 (Released: 2022/11/22)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-84 - In SDMX CSV, SERIES_KEY and OBS_KEY will output with the quote marks around the whole key&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-82 - Size of column in Portal Table not large enough to contain Data Source ID&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-85 - When loading via Registry UI, Data file with Duplicate Series results in MV Store Error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-86 - Viewing a Representation Map has issue with &amp;quot;valid from&amp;quot; on Mappings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.1 (Released: 2022/11/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-83 - Support Categorise Publication Table via the UI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.0 (Released: 2022/11/11)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-78 - Publication Table Support Numerical Observation formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-79 - Fix an issue when &amp;quot;edi.datagroup.identifier&amp;quot; specified with value of asterisk&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-81 - Data Portal - ESTAT Connector fix&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.6.0 (Released: 2022/11/31)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-76 - [[Audit_Web_Services#Search_Structure_Queries|Audit Structure Queries]]&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-77 - [[Audit_Web_Services#Search_Data_Queries|Audit Data Queries]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-75 - Support for extended UTF-8 characters https://github.com/MEDIT-Org/fmr/issues/297 &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update FontAwesome to use Version 6&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-71 - Corrected issue with Dynamic Attributes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-72 - Version Drop-Down not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-74 - Security Group Web Service does not output UTF-8 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update Web Services &amp;quot;structure&amp;quot; page so the plus symbol is used for &amp;quot;latest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.2 (Released: 2022/10/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-194 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-202 - Update dependencies: Hibernate, Spring-Kafka, Jettison and Jersey https://github.com/MEDIT-Org/fmr/issues/294&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-66 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-67 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-68 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-69 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue)&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-189 - Behaviour of web service resolving multiple Codelist inheritance with &amp;quot;details=raw&amp;quot; https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-196 - Unable to read Excel Spreadsheet where all Frequencies are Formulas&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-197 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;children&amp;quot; doesn't return children as raw https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-198 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;descendants&amp;quot; doesn't return descendants https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-199 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-200 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-201 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-203 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue) &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-205 - Version Number not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1.1 (Released: 2022/10/10)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-73 - Modify SQL to ensure GMT Timezone is used&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1 (Released: 2022/10/05)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-60 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-61 - orderMeasure web service parameter to sort observations by date asc/desc&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.0 (Released: 2022/09/28)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-187/FR11-53 - Support recovery of structure transactions from backup on installation https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-52 - Support variable number of max arguments to a SQL IN statement&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-58 - Support import of datafile containing mulitple datasets&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-183 - Update dependencies https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-48 - Update third-party dependencies: apache-jstl, commons-dcp2, joda-time, spring, tika-core&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-45 - Add Version Number to Provision Agreement Selector in Data Source Manager Modal&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-181/FR11-46 - SDMX CSV v 2.0 Data Format does not report its format https://github.com/MEDIT-Org/fmr/issues/110&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-184/FR11-49 - Support '*' for structure type in REST API https://github.com/MEDIT-Org/fmr/issues/273&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-185/FR11-51 - Failure on Compare Revision shows Stack Trace https://github.com/MEDIT-Org/fmr/issues/278&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-186/FR11-55 - SDMX-JSON Writer not outputting DSD as stub https://github.com/MEDIT-Org/fmr/issues/274&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-50 - FameMapper code is creating Excel files in temporary storage which are not deleted&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-54 - EDI data not fully consolidated when publishing data via web service&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Version 11.4.3 (Released: 2022/09/13)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-174 - Publication Tables: Formatting of Missing Values support ObsValue=NaN https://github.com/MEDIT-Org/fmr/issues/253&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-175 - Support Reading of Reference Metadata  (with restrictions) in version 2.1 SDMX   https://github.com/MEDIT-Org/fmr/issues/250&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-182 - Modify ID generation strategy for importing Reference Metadata at v2.1&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-39 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-43 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot;&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-44 - SQL Server does not delete temporary tables&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-169 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-170 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-171 - Order of revisions not as expected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-176 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-178 - Quadruplet in EDI vs the other formats in the context of data consolidation or integration https://github.com/MEDIT-Org/fmr/issues/118&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-179 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot; https://github.com/MEDIT-Org/fmr/issues/255&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.2 (Released: 2022/08/19)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-30 - Fusion Security Manager will not accept AD group names longer than 30 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-34 - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.1 (Released: 2022/08/10)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-21 - Issue loading data into SQL Server in Registry managed table &lt;br /&gt;
FR11-26 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-27 - Order of revisions not as expected&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-28 - JNDI Registry Managed Database - unable to load data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-25 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.0 (Released: 2022/07/22)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-18 - Support Reference Metadata https://wiki.sdmxcloud.org/Reference_Metadata&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-146 - Dependency updates&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-159 - Add &amp;quot;Raw&amp;quot; option to Download structures and remove &amp;quot;Include internal settings&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-160 - Allow a Concept Representation to be a ValueList&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-14 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-17 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-19 - Increase max size of security group ID from 30 to 100 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-162 - SERIES_KEY column should be reserved for series keys&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-161 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-163 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-166 - Duplicate attribute is not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-167 - Publication Table - Array Variables fail to save&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-168 - Error encountered whist attempting to deserialize structure&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.3.0 (Released: 2022/07/06)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-10/FMR11-153 - [[Synchronise_structural_metadata_between_environments|Environment Synchronisation - compare the structural metadata content with that from another Registry, push or pull changes]]&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-158 - [[Publication_Table#Footnotes|Publication Table: Footnotes support]]&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-152 - Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-154 - Unexpected structure validation error from FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-155 - Structure validation errors are not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-156 - v2 structure REST API does not support queries for multiple items using the comma syntax&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-157 - Typo in header of Representation Maps page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.2.0 (Released: 2022/06/27)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-150] Specify the validation and transformation behaviour when duplicate observations are found - [[Data_Transformation_Web_Service#HTTP_Headers|https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-3] Schema Query in structure format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-4] Fusion Cache ignoring parameters like normalise freq on V1 data queries&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-5] Data Point Security - allow rule against a series attribute value that does not exist in the dataset restricts all data&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-8] Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-141] Re-opening of Alternate Half year Issue&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-143] TIME_FORMAT not being generated correctly&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-144] Problem with Date data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-145] Problem with Description data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-147] DSD Wizard step 3 - not allowing Enumerated Representation &amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-148] Schema Query in Structure Format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:&amp;lt;br&amp;gt;'''&lt;br /&gt;
[FMR11-140] Revert xsi:type=SiblingType, change the schema to output the Group as Sibling not SiblingType -&lt;br /&gt;
&lt;br /&gt;
==Version 11.1.0 (Released: 2022/06/01)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Publication_Table|Publication Tables]]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5130] [https://wiki.sdmxcloud.org/Publication_Table#Looping_Rows Publication Table - Support Dynamic Rows]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5131] [https://wiki.sdmxcloud.org/Publication_Table#Formatting_Missing_Observations Publication Table - Format rules on cells with no data ]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5132] [https://wiki.sdmxcloud.org/Publication_Table#Dependent_Dimension_Variable Publication Table - Rules to derive a Dimension Value from another Dimenison's value]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5133] [https://wiki.sdmxcloud.org/Publication_Table#Anchor_Rows Publication Table - Option to output rows with no data ] &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5134] [https://wiki.sdmxcloud.org/Publication_Table_Web_Services#Materialise_Publication_Table Publication Table - Ouput Materialised Table in Excel ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5129] - Support for MySQL 8 and above&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.0.0 (Released: 2022/05/22)==&lt;br /&gt;
'''Changes and New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the SDMX 3.0 information model as Fusion Registry’s internal metadata object model&lt;br /&gt;
* SDMX 3.0 REST API support&lt;br /&gt;
* Backward compatibility for SDMX 2.1 and 2.0 structures and formats&lt;br /&gt;
* Backward compatibility with SDMX 2.1 REST API (REST API v1 specification)&lt;br /&gt;
* Improved data and metadata access control&lt;br /&gt;
* Granular control over admin rights&lt;br /&gt;
* Fusion Portal – scheduled and on demand data and structure loads&lt;br /&gt;
* Refreshable Excel data format&lt;br /&gt;
* JNDI database connection option&lt;br /&gt;
* Publication Tables - publish curated but dynamic user interactive web data tables that show precisely the statistics required even if they come from multiple different data sets&lt;br /&gt;
&lt;br /&gt;
'''Breaking Changes from Fusion Registry 10:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the operating database schema - upgrading from Fusion Registry 10 to Fusion Registry 11 requires a fresh install and migration of the metadata, data and settings&lt;br /&gt;
* Environment sync function temporarily removed&lt;br /&gt;
* Fusion Security support deprecated - Active Directory and LDAP are the supported authentication services in Fusion Registry 11&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6656</id>
		<title>Change Log FR - V11 and subsequent releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Change_Log_FR_-_V11_and_subsequent_releases&amp;diff=6656"/>
		<updated>2024-02-12T09:12:49Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Registry Change Logs]]&lt;br /&gt;
[[Category:ChangeLogFR]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Changelog for Fusion Registry Version 11=&lt;br /&gt;
&lt;br /&gt;
==Version 11.13.0 (Released: 2023/02/12)==&lt;br /&gt;
Based on FMR 11.14.1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.3 (Released: 2023/11/24)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-217: Concurrent modification exception in cache&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.2 (Released: 2023/11/22)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-216: REST query which results in no data now returns a 404 with an SDMX error message, was previously an empty dataset&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-215: Publication Tables: 'includePeriod' REST query parameter returns no data when multiple Dataflows are used and 1 has no data&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.1 (Released: 2023/11/21)==&lt;br /&gt;
Based on  FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-211: Improvements to the &amp;quot;Test Mapping&amp;quot; feature&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-214: Registry can consume all connections to an External Data Store&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.12.0 (Released: 2023/11/20)==&lt;br /&gt;
Based on FMR 11.13.0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-210: Publication Table: Calculation expression to support default value when no Observation found&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-213: Publication Tables: Calculation expression to support default value if no reported value found&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-212: Publication Table: Formatting issue using partial keys - returns 400 exception&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.11.0 (Released: 2023/11/03)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-206: Create aggregate series using linked Hierarchy&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-207: Data Query detail parameter; added 'raw' as a new value to support export of data with no calcualted values via hierarchical aggregations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-208: In a Generated Reporting Template permit format modification on Observation Cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-209: Publication Table: Issue applying formatting rules across multiple Dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.1 (Released: 2023/09/15)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-205: saveas=[filename].zip from v1 SDMX web service results in a corrupt zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.10.0 (Released: 2023/09/11)==&lt;br /&gt;
Based on  FMR 11.10.1&lt;br /&gt;
&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-195: Publication Tables: Allow dependant variables to be overridden from the API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-197: Default response formats in v2 web service are now configurable&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-203: Kafa: new topic to publish structure transaction events to&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-204: Kafa: new topic to publish reference metadata events to&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-202: Structure Format response is no longer auto detected if not explicitly set (takes value from default setting)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-198: Querying for data by observation attributes&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-199: saveas=zip is not working on v2 API&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-200: Publication table: Formatting cells ignores UNIT_MULT when it is reported as a dataset level attribute&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-201: Publication table: Conditional Formatting being applied when condition references a Component which is not present in DSD&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.6 (Released: 2023/08/25)==&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-163: Validator: &amp;quot;Missing Attributes&amp;quot; renamed to &amp;quot;Missing Components&amp;quot; and reports on missing Measures&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-164: Add &amp;quot;Output Required&amp;quot; UI control to Structure Mapping&amp;lt;br&amp;gt;&lt;br /&gt;
FR110188: Adding a observation formatting rule treats comma separeted component ids as an AND operator (was OR)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-146: Update Apache POI to version 5&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-147: Update Commons-fileupload third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-148: Update Spring dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-149: Update Jettison third-party dependency&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-150: Web Service to refresh caches&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-158: Merging a Codelist should merge Locale information&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-160: Update Spring and Jackson Dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-161: Implment caching on publication tables&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-167: Improve Mapping functionality so that it can perform Validation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-171: Portal File system sweep - allow files to be placed in root of sweep directory&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-173: Update Kryo to version 5.5.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-174: Publication Tables - not formatting numbers with scientific notation&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-175: Components with Time based Mappings cannot be edited in the Structure Map Wizard&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-176: Support Custom Plugins&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-190: Add SDMX-JSON v2 to the UI&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-191: Restore Fusion Security as an authentication mechanism&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-192: FMR#481: Duplicated group IDs for schema queries in SDMX-JSON&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-193: Mapped Datasets Configuration - new option &amp;quot;Output Required&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-151: Item Validity not returning most recent entry prior to today's date&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-152: Subscript out of range error with FusionXL when carriage return is in the name of a structure&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-153: No transactions returned on SDMX Transactions page when using date slider&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-155: Publicaiton Table Editor: Dependent Variables, remove variable button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-156: Publication Table availabililty algorithm modified to better calculate default values when using multiple dataflows&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-157: FusionXL resolve carriage returns in concept names&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-159: Cross references not updated correctly when structure already exists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-162: Update Vulnerable Dependencies for FMR 11.7.0&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-165: Validating Generic Data can result in IllegalElement error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-166: FMR#418 - Conversion and mapping services fail to read SDMX CSV 2.0 format files with BOM&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-168: CSV-TS data format outputting names as labels does not output labels in last Dimension/Attribute column&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-169: RegEx Capture Groups for Representation Map only support 0-9 (\10 and above does not work)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.5 (Released: 2023/03/08)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-140: Modification of interpration of SDMX-CSV V2 row https://github.com/bis-med-it/fmr/issues/349&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-145: Fusion Excel Export Data API now takes an additional 'attachment' parameter&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-137: Removal of dependencies: gson, protobuf, closure, args4j&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-138: Unable to load Structure File when Mapping refers to DSD with ValueList coded dimension https://github.com/bis-med-it/fmr/issues/359&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-141: Caching in reference metadata requests https://github.com/bis-med-it/fmr/issues/356&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-142: Parsing EDI fails to detect malformed period https://github.com/bis-med-it/fmr/issues/362&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-143: EDI REL segment must be followed by ARR segment https://github.com/bis-med-it/fmr/issues/322&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-144: Publication Table - Calculations which contain missing values should not output a value&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.4 (Released: 2023/02/17)==&lt;br /&gt;
'''Bug Fixes'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-135: Publication Table - calculated values could come back as enginnering string when standard form is requested&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-136: Regression mapped data store was not mapping rows with null attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.3 (Released: 2023/02/16)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-129: Temporary &amp;quot;MV&amp;quot; files not being cleared up after data transformation https://github.com/bis-med-it/fmr/issues/346 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-131: Improve Performance of large Codelists which have Item Validity https://github.com/bis-med-it/fmr/issues/353 &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-133: Improve linking to external datasource by auto detecting foreign key &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.2 (Released: 2023/02/13)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-132: Supported 'latest' in v2 query to prevent errors in connected tools&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.1 (Released: 2023/02/10)==&lt;br /&gt;
'''Bug Fix:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-128: Security rule on OBS Attribute blocks observation when value is null&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.9.0 (Released: 2023/02/03)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-117: Provide option to skip Validation phase in Transform Web Service https://github.com/bis-med-it/fmr/issues/237&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-120: Publication Table - apply number formatting to calculated cells&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-121: Publication Table - Apply number scaling before calculations&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-118: Use the public fastUtil library https://github.com/bis-med-it/fmr/issues/338&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-116: Timezone issue with REST API resulting in no data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-119: Codelists with Annotations not being correctly parsed in SDMX-JSON  https://github.com/bis-med-it/fmr/issues/345&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-123: EDI should prevent Quadruplet attributes in Footnote Section https://github.com/bis-med-it/fmr/issues/347&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-124: EDI file missing mandatory Period Information validates successfully  https://github.com/bis-med-it/fmr/issues/348&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-125: Improve validation of EDI DTM segment https://github.com/bis-med-it/fmr/issues/351&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-126: Publication Table - decimal places (fixed) truncated trailing zero places when locale was also set&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-127: Duplicate elements in SDMX CSV result in unexpected output    https://github.com/bis-med-it/fmr/issues/342 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.2 (Released: 2023/01/17)==&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-108: Prevent contradictory excel mappings (generted from Fame Metadata Manager) worksheets being uploaded to Registry&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-109: Flag contradictory excel mappings (generted from Fame Metadata Manager) in generated worksheet  &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-134: Improve Metrics Report with IncUnmappedReport option &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-111: Change ID Generation of Representation Map from FusionFameMapper xlsx files.&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-115: Ensure Implicit Mappings in Structure Maps validate codelists for valid intersection &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-107: Parent codes should be included in reference partial&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-110: Complete Cube web service feature outputs empty measure values (not 0 values)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-112: Data export formats excel-ts and excel-series can miss observations in output series if series contains observations with no measure values and no attribute values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-113: Fix 'too much recursion' error with reverse engineer data structure with large number of Dimensions&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-114: Validate submission of Structure Map's Implicit mappings to ensure Coded mappings have a valid intersection from source to target &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.1 (Released: 2023/01/11)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-101: Unable to import Codelists with multiple levels of inheritence in same submission as structures that use inherited codes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-102: Bulk actions - detail=raw is ignored&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-103: REST query: detail=raw is not applied to referenced codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-104: IncValid output may contain empty series when it should not be generated&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-105: Annotations are ignored when importing 2.1 XML Hierarchical Codelists&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-106: format=csv-series null pointer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.8.0 (Released: 2022/12/21)==&lt;br /&gt;
'''Important Note for MySQL users:''' due to changes in the distribution of the MySQL connector (change FR11-94 below), please read [[Install_MySQL#Installing_MySQL_5.7|this article]].&lt;br /&gt;
&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-98: Publication Table - support a scaling function applied to numerical observations&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-93: Improve Performance of Viewing a Hierarchy https://wiki.sdmxcloud.org/Publication_Table#Formatting_Numerical_Observation_Values&lt;br /&gt;
&lt;br /&gt;
'''Changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-91: Validation and Transformation should preserve original format unless output format specified &amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Validation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers  see Accept Header&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-94: Remove MySQL Connector https://wiki.sdmxcloud.org/Install_MySQL#Installing_MySQL_5.7&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-89: Support dataset attribute consolidation (detection of duplicates)&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-90: Observation deletions are no longer written in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-92: NPE when publishing EDI data from Command Line&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-95: Publication Table - UI changes table definition (looses column) when clicking preview table &amp;lt;br&amp;gt;&lt;br /&gt;
FR11-96: Publication Table - Preview table error when table heading Rowspan &amp;gt; 1&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-97: Publication Table - bug fix on formatting obs which removed values from output table&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-99: Publication Table - Scientific Notation shows NaN in UI and is not applied to observation values&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-100: Refreshable workbook - issue security challenge when connecting to private server&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-207: Transforming Data with &amp;quot;Delete&amp;quot; action can leave erroneous output in EDI format&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-217: Publication Tables: Numerical Observation, &amp;quot;Add Rule&amp;quot; button does not work&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-224: Failure to report unmapped data when using TIME_PERIOD mapping&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.2 (Released: 2022/11/22)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-84 - In SDMX CSV, SERIES_KEY and OBS_KEY will output with the quote marks around the whole key&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-82 - Size of column in Portal Table not large enough to contain Data Source ID&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-85 - When loading via Registry UI, Data file with Duplicate Series results in MV Store Error&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-86 - Viewing a Representation Map has issue with &amp;quot;valid from&amp;quot; on Mappings&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.1 (Released: 2022/11/15)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-83 - Support Categorise Publication Table via the UI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.7.0 (Released: 2022/11/11)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-78 - Publication Table Support Numerical Observation formatting&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-79 - Fix an issue when &amp;quot;edi.datagroup.identifier&amp;quot; specified with value of asterisk&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-80 - Validation on Group ID should ignore case&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-81 - Data Portal - ESTAT Connector fix&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.6.0 (Released: 2022/11/31)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-76 - [[Audit_Web_Services#Search_Structure_Queries|Audit Structure Queries]]&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-77 - [[Audit_Web_Services#Search_Data_Queries|Audit Data Queries]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-75 - Support for extended UTF-8 characters https://github.com/MEDIT-Org/fmr/issues/297 &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update FontAwesome to use Version 6&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-71 - Corrected issue with Dynamic Attributes&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-72 - Version Drop-Down not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-74 - Security Group Web Service does not output UTF-8 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-65 - Update Web Services &amp;quot;structure&amp;quot; page so the plus symbol is used for &amp;quot;latest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.2 (Released: 2022/10/14)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-194 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-202 - Update dependencies: Hibernate, Spring-Kafka, Jettison and Jersey https://github.com/MEDIT-Org/fmr/issues/294&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-66 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-67 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-68 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-69 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue)&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-189 - Behaviour of web service resolving multiple Codelist inheritance with &amp;quot;details=raw&amp;quot; https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-196 - Unable to read Excel Spreadsheet where all Frequencies are Formulas&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-197 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;children&amp;quot; doesn't return children as raw https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-198 - Request for Codelist in SDMX-JSON, &amp;quot;details=raw&amp;quot;, references=&amp;quot;descendants&amp;quot; doesn't return descendants https://github.com/MEDIT-Org/fmr/issues/257&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-199 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Web Service -&amp;gt; Structures page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-200 - &amp;quot;Metadata Provider Wizard&amp;quot; does not allow Providers to start with a numeric yet the SDMX Standard allows this&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-201 - &amp;quot;Metadata Provider Scheme&amp;quot; not listed on Cross References page &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-203 - Attaching Reference Metadata to Items in an item scheme fails to add link (cache issue) &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-205 - Version Number not Displayed when Selected Item on Page Load&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1.1 (Released: 2022/10/10)==&lt;br /&gt;
'''Change:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-73 - Modify SQL to ensure GMT Timezone is used&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.1 (Released: 2022/10/05)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-60 - Publication Table - support casting dates more then once in same expression&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-61 - orderMeasure web service parameter to sort observations by date asc/desc&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.5.0 (Released: 2022/09/28)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-187/FR11-53 - Support recovery of structure transactions from backup on installation https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-52 - Support variable number of max arguments to a SQL IN statement&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-58 - Support import of datafile containing mulitple datasets&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvements:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-183 - Update dependencies https://github.com/MEDIT-Org/fmr/issues/277&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-48 - Update third-party dependencies: apache-jstl, commons-dcp2, joda-time, spring, tika-core&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-45 - Add Version Number to Provision Agreement Selector in Data Source Manager Modal&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-181/FR11-46 - SDMX CSV v 2.0 Data Format does not report its format https://github.com/MEDIT-Org/fmr/issues/110&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-184/FR11-49 - Support '*' for structure type in REST API https://github.com/MEDIT-Org/fmr/issues/273&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-185/FR11-51 - Failure on Compare Revision shows Stack Trace https://github.com/MEDIT-Org/fmr/issues/278&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-186/FR11-55 - SDMX-JSON Writer not outputting DSD as stub https://github.com/MEDIT-Org/fmr/issues/274&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-50 - FameMapper code is creating Excel files in temporary storage which are not deleted&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-54 - EDI data not fully consolidated when publishing data via web service&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Version 11.4.3 (Released: 2022/09/13)==&lt;br /&gt;
'''New Features:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-174 - Publication Tables: Formatting of Missing Values support ObsValue=NaN https://github.com/MEDIT-Org/fmr/issues/253&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-175 - Support Reading of Reference Metadata  (with restrictions) in version 2.1 SDMX   https://github.com/MEDIT-Org/fmr/issues/250&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-182 - Modify ID generation strategy for importing Reference Metadata at v2.1&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-39 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-43 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot;&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-44 - SQL Server does not delete temporary tables&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-169 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted &amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-170 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-171 - Order of revisions not as expected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-176 - OBS_PRE_BREAK validation corrected&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-178 - Quadruplet in EDI vs the other formats in the context of data consolidation or integration https://github.com/MEDIT-Org/fmr/issues/118&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-179 - SDMX DSD output may include invalid attribute &amp;quot;isMultiLingual&amp;quot; https://github.com/MEDIT-Org/fmr/issues/255&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.2 (Released: 2022/08/19)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-30 - Fusion Security Manager will not accept AD group names longer than 30 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-34 - Updated third-party dependencies&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.1 (Released: 2022/08/10)==&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-21 - Issue loading data into SQL Server in Registry managed table &lt;br /&gt;
FR11-26 - Bulk Export - spelling mistake on Raw help text&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-27 - Order of revisions not as expected&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-28 - JNDI Registry Managed Database - unable to load data&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-25 - SDMX CSV v1 Data Reader does not allow header fields (row 1) to be double quoted&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.4.0 (Released: 2022/07/22)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-18 - Support Reference Metadata https://wiki.sdmxcloud.org/Reference_Metadata&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-146 - Dependency updates&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-159 - Add &amp;quot;Raw&amp;quot; option to Download structures and remove &amp;quot;Include internal settings&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-160 - Allow a Concept Representation to be a ValueList&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-14 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-17 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FR11-19 - Increase max size of security group ID from 30 to 100 characters&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-162 - SERIES_KEY column should be reserved for series keys&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-161 - Issue loading Data Constraint with a Component element under Cube Region element&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-163 - Attribute variable does not work in table heading&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-166 - Duplicate attribute is not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-167 - Publication Table - Array Variables fail to save&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-168 - Error encountered whist attempting to deserialize structure&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.3.0 (Released: 2022/07/06)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt; &lt;br /&gt;
FR11-10/FMR11-153 - [[Synchronise_structural_metadata_between_environments|Environment Synchronisation - compare the structural metadata content with that from another Registry, push or pull changes]]&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-158 - [[Publication_Table#Footnotes|Publication Table: Footnotes support]]&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-152 - Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt; &lt;br /&gt;
FMR11-154 - Unexpected structure validation error from FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-155 - Structure validation errors are not detected anymore in FMR&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-156 - v2 structure REST API does not support queries for multiple items using the comma syntax&amp;lt;br&amp;gt;&lt;br /&gt;
FMR11-157 - Typo in header of Representation Maps page&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.2.0 (Released: 2022/06/27)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-150] Specify the validation and transformation behaviour when duplicate observations are found - [[Data_Transformation_Web_Service#HTTP_Headers|https://wiki.sdmxcloud.org/Data_Transformation_Web_Service#HTTP_Headers]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bug Fixes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-3] Schema Query in structure format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-4] Fusion Cache ignoring parameters like normalise freq on V1 data queries&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-5] Data Point Security - allow rule against a series attribute value that does not exist in the dataset restricts all data&amp;lt;br&amp;gt;&lt;br /&gt;
[FR11-8] Comma not being processed correctly in Web Service query for ItemBeans&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-141] Re-opening of Alternate Half year Issue&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-143] TIME_FORMAT not being generated correctly&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-144] Problem with Date data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-145] Problem with Description data type when reverse engineering a DSD from a CSV dataset&amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-147] DSD Wizard step 3 - not allowing Enumerated Representation &amp;lt;br&amp;gt;&lt;br /&gt;
[FMR11-148] Schema Query in Structure Format does not work&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:&amp;lt;br&amp;gt;'''&lt;br /&gt;
[FMR11-140] Revert xsi:type=SiblingType, change the schema to output the Group as Sibling not SiblingType -&lt;br /&gt;
&lt;br /&gt;
==Version 11.1.0 (Released: 2022/06/01)==&lt;br /&gt;
'''New Feature:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Publication_Table|Publication Tables]]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5130] [https://wiki.sdmxcloud.org/Publication_Table#Looping_Rows Publication Table - Support Dynamic Rows]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5131] [https://wiki.sdmxcloud.org/Publication_Table#Formatting_Missing_Observations Publication Table - Format rules on cells with no data ]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5132] [https://wiki.sdmxcloud.org/Publication_Table#Dependent_Dimension_Variable Publication Table - Rules to derive a Dimension Value from another Dimenison's value]&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5133] [https://wiki.sdmxcloud.org/Publication_Table#Anchor_Rows Publication Table - Option to output rows with no data ] &amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5134] [https://wiki.sdmxcloud.org/Publication_Table_Web_Services#Materialise_Publication_Table Publication Table - Ouput Materialised Table in Excel ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Improvement:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[FR-5129] - Support for MySQL 8 and above&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version 11.0.0 (Released: 2022/05/22)==&lt;br /&gt;
'''Changes and New Features:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the SDMX 3.0 information model as Fusion Registry’s internal metadata object model&lt;br /&gt;
* SDMX 3.0 REST API support&lt;br /&gt;
* Backward compatibility for SDMX 2.1 and 2.0 structures and formats&lt;br /&gt;
* Backward compatibility with SDMX 2.1 REST API (REST API v1 specification)&lt;br /&gt;
* Improved data and metadata access control&lt;br /&gt;
* Granular control over admin rights&lt;br /&gt;
* Fusion Portal – scheduled and on demand data and structure loads&lt;br /&gt;
* Refreshable Excel data format&lt;br /&gt;
* JNDI database connection option&lt;br /&gt;
* Publication Tables - publish curated but dynamic user interactive web data tables that show precisely the statistics required even if they come from multiple different data sets&lt;br /&gt;
&lt;br /&gt;
'''Breaking Changes from Fusion Registry 10:'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Change to the operating database schema - upgrading from Fusion Registry 10 to Fusion Registry 11 requires a fresh install and migration of the metadata, data and settings&lt;br /&gt;
* Environment sync function temporarily removed&lt;br /&gt;
* Fusion Security support deprecated - Active Directory and LDAP are the supported authentication services in Fusion Registry 11&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6653</id>
		<title>Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6653"/>
		<updated>2024-02-02T09:29:19Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Fusion Registry logs information regarding the requests made to it and the work that it is performing.  These logs can be long and complicated, but this document aims to explain the logging process.&lt;br /&gt;
&lt;br /&gt;
Logging information is stored in the filesystem. The files on your system are temporary, and without intervention, they could be overwritten by more recent log data. This measure is in place to avoid log files occupying your entire disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=File-based logging=&lt;br /&gt;
&lt;br /&gt;
During operation the Fusion Registry writes information to its logs. The level of logging is controlled by a system setting in the Fusion Registry which directly relates to the logging tool that the Fusion Registry uses, which is called Logback. The files generated are also affected by the Java Web-Application Server you are running (for example Apache Tomcat). For the rest of this section, only the scenario when running on Tomcat will be detailed.&lt;br /&gt;
&lt;br /&gt;
Since log files will naturally grow larger over time, if allowed to grow indefinitely, their size would become a problem consuming all the available disk space. This is addressed using rolling file appenders, which automatically “roll” or archive the current log file, and resume logging in a new file when certain predefined conditions occur.&lt;br /&gt;
&lt;br /&gt;
==Tomcat files==&lt;br /&gt;
&lt;br /&gt;
In Apache Tomcat, various log files are generated during the execution of a Java web application. These log files provide valuable information about the application's behavior, errors, and performance. Here's a summary of some common log files in Tomcat:&lt;br /&gt;
&lt;br /&gt;
    catalina.log:&lt;br /&gt;
        Purpose: General logging for the Tomcat server.&lt;br /&gt;
        Contents: Includes information about server startup, shutdown, and any errors that occur during the server's operation.&lt;br /&gt;
&lt;br /&gt;
    catalina.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for Catalina.&lt;br /&gt;
        Contents: Includes information specific to the Catalina component of Tomcat. Useful for troubleshooting Catalina-related issues.&lt;br /&gt;
&lt;br /&gt;
    localhost.log:&lt;br /&gt;
        Purpose: Logs information related to the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Records information about the deployment and undeployment of web applications under the default context.&lt;br /&gt;
&lt;br /&gt;
    localhost.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Contains information specific to the default web application context. Useful for troubleshooting application-specific issues.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.txt:&lt;br /&gt;
        Purpose: Records access information, such as requests made to the Tomcat server.&lt;br /&gt;
        Contents: Contains details like client IP address, request date and time, HTTP status, and bytes sent.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.&amp;lt;date&amp;gt;.txt:&lt;br /&gt;
        Purpose: Daily rotating log file for localhost_access_log&lt;br /&gt;
        Contents: The daily rotation of the localhost_access_log&lt;br /&gt;
&lt;br /&gt;
    manager.log:&lt;br /&gt;
        Purpose: Logs information about the Tomcat Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Tomcat Manager.&lt;br /&gt;
&lt;br /&gt;
    host-manager.log:&lt;br /&gt;
        Purpose: Logs information about the Host Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Host Manager.&lt;br /&gt;
&lt;br /&gt;
    FusionRegistry.log:&lt;br /&gt;
        Purpose: Logs Specific information about the Fusion Registry&lt;br /&gt;
        Contents: This is the most useful log file when debugging an issue with the Fusion Registry.&lt;br /&gt;
&lt;br /&gt;
==Logback==&lt;br /&gt;
&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. For example this could be: C:\tomcats\apache-tomcat-9.0.58\webapps\FusionRegistry\WEB-INF\classes&lt;br /&gt;
&lt;br /&gt;
Configuration can be performed by modifying this file. There are different levels of logging:&lt;br /&gt;
&lt;br /&gt;
'''TRACE''': This is for extremely detailed and potentially high volume logs that you don’t typically want enabled even during normal development.&amp;lt;br&amp;gt;&lt;br /&gt;
'''DEBUG''': Helpful in tracking the flow through the system and isolating issues, especially during the development and QA phases.&amp;lt;br&amp;gt;&lt;br /&gt;
'''INFO''': Used for system lifecycle events (system start, stop) and significant boundary events (e.g., database calls, remote API calls). Typical business exceptions can go here.&amp;lt;br&amp;gt;&lt;br /&gt;
'''WARN''': An unexpected technical or business event happened, customers may be affected, but probably no immediate human intervention is required.&amp;lt;br&amp;gt;&lt;br /&gt;
'''ERROR''': The system is in distress, customers are probably being affected (or will soon be) and the fix probably requires human intervention.&amp;lt;br&amp;gt;&lt;br /&gt;
'''OFF''': This level is intended to turn off logging.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''It is not recommended to switch to TRACE or DEBUG level unless specifically requested to by the development team, since the amount of logging produced can be excessive and can cause performance issues.'''&lt;br /&gt;
&lt;br /&gt;
[[File:LoggingLevels.png||]]&lt;br /&gt;
&lt;br /&gt;
===Logback Configuration===&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. The file consists of multiple options that can be configured by the user. Some of the more useful parts of this file are:&lt;br /&gt;
&lt;br /&gt;
  Line 2: &amp;lt;configuration scan=&amp;quot;true&amp;quot; scanPeriod=&amp;quot;30 seconds&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This configuration tells Logback to automatically check for changes in the configuration file every 30 seconds, and if any changes are detected, Logback will reload the configuration.&lt;br /&gt;
&lt;br /&gt;
  Line 8: &amp;lt;appender name=&amp;quot;fileout&amp;quot; class=&amp;quot;ch.qos.logback.core.rolling.RollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start of file appender, responsible for writing logs to the file&lt;br /&gt;
&lt;br /&gt;
  Line 9: &amp;lt;file&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log&amp;lt;/file&amp;gt;&lt;br /&gt;
This line tells Logback the directory and filename to store Registry information into. The default is &amp;quot;FusionRegistry.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Line 10: &amp;lt;encoder&amp;gt; &amp;lt;pattern&amp;gt;%d{yyyy-MM-dd HH:mm:ss.SSS} %p %t %c - %m%n&amp;lt;/pattern&amp;gt; &amp;lt;/encoder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encoder is responsible for formatting log messages. Current configuration tells logback to format logs like the following:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
  Line 13: &lt;br /&gt;
  &amp;lt;rollingPolicy class=&amp;quot;ch.qos.logback.core.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;maxIndex&amp;gt;4&amp;lt;/maxIndex&amp;gt;&lt;br /&gt;
    &amp;lt;FileNamePattern&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log.%i&lt;br /&gt;
    &amp;lt;/FileNamePattern&amp;gt;&lt;br /&gt;
  &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rolling policy is responsible for creating multiple log files with archived logs.&lt;br /&gt;
Current configuration tells logback to create up to 4 files named FusionRegistry.log.1 FusionRegistry.log.2 and so on.&lt;br /&gt;
When a new log file is created (due to a rollover event), the oldest file (if the maximum of 4 is reached) will be deleted, and the other files will be renamed to increment their index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Line 18: &lt;br /&gt;
  &amp;lt;triggeringPolicy class=&amp;quot;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MaxFileSize&amp;gt;10024KB&amp;lt;/MaxFileSize&amp;gt;&lt;br /&gt;
  &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Triggering policy is responsible for defining when the file will rollover. In current configuration it is around 10MBs.  Log file rollover and removal of old logs is necessary to prevent logs consuming all the available disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next appender tells logback to create additional file FusionRegistryWarnings.log and store there log messages with levels WARN and ERROR, all other configurations align with the first appender &lt;br /&gt;
  Line 49:  &lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.metadatatechnology&amp;quot; level=&amp;quot;INFO&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fileout&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;STDOUT&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fusionaudit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;warnout&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logger provides an option to select what is the minimal level of logging and which appenders to use for specified package and all its subpackages. In this case it tells to set minimal level of logging to INFO, and use all  4 appenders specified in file for &amp;quot;com.metadatatechnology&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  Line 63: &amp;lt;root level=&amp;quot;INFO&amp;quot;&amp;gt;&lt;br /&gt;
Similar options for all remaining packages in the project, and third party libraries.&lt;br /&gt;
&lt;br /&gt;
==Log Detail==&lt;br /&gt;
&lt;br /&gt;
Sample log entry:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
Every log entry consists of the following parts:&lt;br /&gt;
# Timestamp when error occurred (eg. 2024-01-30 13:34:41.123)&lt;br /&gt;
# Log level  (eg. INFO)&lt;br /&gt;
# Thread on which log was produced (eg. main)&lt;br /&gt;
# Class that produced the log (eg.  com.example.MyClass)&lt;br /&gt;
# Content of the log (eg. This is a log message)&lt;br /&gt;
&lt;br /&gt;
There are multiple types of logs stored in FusionRegistry.log file. Some are more helpful for the end user than others.&lt;br /&gt;
&lt;br /&gt;
===System Information Logs===&lt;br /&gt;
Those log entries inform about the state of the system, services being started or system settings being set. Examples:&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.187 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.utils.spring.ApplicationStarterImpl - Starting class io.sdmx.core.dao.base.PersistableMaintainableDao&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.137 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.core.fmr.manager.settings.RegistryPropertiesFileManagerImpl - Set up Email Server Settings&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.115 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.fusion.audit.manager.log.LogManagerImpl - Max Age for Transactional Log Events set to -1 hours&lt;br /&gt;
&lt;br /&gt;
===Loading Structural Metadata===&lt;br /&gt;
When loading structural metadata into the registry, many log entries are created. They have an INFO level and may contain the url from which the metadata is loaded, identifiers of loaded metadata as well as process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 10:54:55.998 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.624 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL Complete: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.754 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse structures&lt;br /&gt;
  2024-01-29 10:54:57.755 INFO http-nio-8080-exec-3 io.sdmx.format.ml.factory.structure.SdmxMLStructureReaderFactory - Read SdmxBeans using io.sdmx.format.ml.engine.structure.reader.v3.StaxStructureReaderEngineV3&lt;br /&gt;
  2024-01-29 10:54:57.925 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Build Beans Complete&lt;br /&gt;
  2024-01-29 10:54:57.926 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Post-Process Beans&lt;br /&gt;
  2024-01-29 10:54:57.927 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse Structures Complete&lt;br /&gt;
  2024-01-29 10:54:57.948 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:57.949 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate structures for insertion&lt;br /&gt;
  2024-01-29 10:54:58.021 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate Structure for Insertion:urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)&lt;br /&gt;
  ...&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - structures valid, save to database&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.manager.persistence.AbstractPersistenceManager - Process Cross References&lt;br /&gt;
  2024-01-29 10:54:58.060 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:58.065 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - Save Successful - Publish Message&lt;br /&gt;
  2024-01-29 10:55:02.287 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)'&lt;br /&gt;
  2024-01-29 10:55:02.332 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.codelist.Codelist=ISO:COUNTRY_ALPHA3(1.0)'&lt;br /&gt;
&lt;br /&gt;
===Saving Time-Series Data===&lt;br /&gt;
When inserting/modifying/replacing data using url or file there are many log entries created. They have an INFO level and contain step by step process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:03:26.258 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.generic.GenericDataLoadDao - Start Loading Dataset '-2662089662959301465' valid from '2024-01-29 11:03:26.0' valid to '2999-12-31 01:00:00.0'&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 1.0011855% complete&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-33 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 1%&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 2.002371% complete&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-35 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 2%&lt;br /&gt;
  2024-01-29 11:03:26.273 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 3.0035567% complete&lt;br /&gt;
  ...&lt;br /&gt;
  com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 99.11737% complete&lt;br /&gt;
  2024-01-29 11:03:26.386 INFO Thread-229 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 99%&lt;br /&gt;
  2024-01-29 11:03:26.387 INFO Thread-231 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 100%&lt;br /&gt;
  2024-01-29 11:03:26.402 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.engine.TransactionalDataWriterEngine - Commit data&lt;br /&gt;
  2024-01-29 11:03:27.264 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Perform Commit&lt;br /&gt;
  2024-01-29 11:03:27.287 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Final Commit&lt;br /&gt;
  2024-01-29 11:03:27.289 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Bulk Load Complete&lt;br /&gt;
&lt;br /&gt;
===Creating a Data Store===&lt;br /&gt;
When creating data storage from an admin panel in the system there are many log entries created. They have an INFO level, and contain information about database configuration provided by the user. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:00:05.245 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Create datasource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.247 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.328 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Cache DataSource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.330 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.355 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - SQL In Argument Limit: 1000&lt;br /&gt;
&lt;br /&gt;
=== Requesting Structural Metadata===&lt;br /&gt;
When requesting for metadata in the system there are log entries created. They have an INFO level, and contain information about what resource was requested, and if the result was returned from the database or from the cache. &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  2024-01-26 13:35:27.894 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/provisionagreement/*/*/*&lt;br /&gt;
  2024-01-26 13:35:27.939 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/provisionagreement/*/*/*?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-26 13:35:27.980 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 08:31:34.651 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/datastructure/*/*/*&lt;br /&gt;
  2024-01-29 08:31:34.674 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/datastructure/*/*/*?detail=allstubs&amp;amp;format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 08:31:34.710 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB&lt;br /&gt;
  2024-01-29 10:56:24.812 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 10:56:24.843 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Requesting Time-Series Data===&lt;br /&gt;
When requesting for time series in the system there are log entries created. They have an INFO level, and contain information about what resource was requested. If the request is against an external database the query may well include SQL statements showing the database queries performed.&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:43:42.911 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/data/dataflow/BIS/WS_SPP/1.0/&lt;br /&gt;
  2024-01-29 13:43:42.933 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss data/dataflow/BIS/WS_SPP/1.0?c[FREQ]=Q&amp;amp;c[REF_AREA]=5R&amp;amp;c[UNIT_MEASURE]=771&amp;amp;c[VALUE]=N&amp;amp;format=sdmx-compact-2.1&amp;amp;saveAs=BIS property prices: selected series&lt;br /&gt;
  2024-01-29 13:43:42.934 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.core.data.manager.index.IndexRetrievalManagerImpl - Data Query By Provision Agreement:urn:sdmx:org.sdmx.infomodel.registry.ProvisionAgreement=BIS:WS_SPP_BIS(1.0)&lt;br /&gt;
  2024-01-29 13:43:42.950 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.954 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.957 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:42.962 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:43.032 ERROR http-nio-8080-exec-7 io.sdmx.format.ml.engine.error.ErrorWriterEngineV21 - No results for query&lt;br /&gt;
  2024-01-29 13:43:43.033 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Error/Warn Information Logs===&lt;br /&gt;
If any issues were encountered, please attach logs to your report. Error log entities usually contain stack-trace which may be helpful to the development team to locate the issue in the code. Examples: &lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:05:12.475 ERROR Thread-457 io.sdmx.api.exception.SdmxException - Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
  io.sdmx.api.exception.SdmxException: Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validateAttributes(ImportPreProcessorEngine.java:298)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validate(ImportPreProcessorEngine.java:253)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.run(ImportPreProcessorEngine.java:99)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.lambda$new$0(ImportPreProcessorEngine.java:75)&lt;br /&gt;
      at io.sdmx.fusion.audit.manager.event.AuditEventManager.lambda$startNewThread$7(AuditEventManager.java:308)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:47:38.233 ERROR http-nio-8080-exec-5 io.sdmx.api.exception.SdmxException - unauthorised&lt;br /&gt;
  io.sdmx.api.exception.SdmxUnauthorisedException: unauthorised&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:33)&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:45)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.checkAuth(AbstractFusionSecurityRulesManager.java:138)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.saveRule(AbstractFusionSecurityRulesManager.java:87)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.service.GenericFusionSecurityRuleServiceActivator.saveRule(GenericFusionSecurityRuleServiceActivator.java:39)&lt;br /&gt;
      ...&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6652</id>
		<title>Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6652"/>
		<updated>2024-02-02T09:29:10Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Fusion Registry logs information regarding the requests made to it and the work that it is performing.  These logs can be long and complicated, but this document aims to explain the logging process.&lt;br /&gt;
&lt;br /&gt;
Logging information is stored in the filesystem. The files on your system are temporary, and without intervention, they could be overwritten by more recent log data. This measure is in place to avoid log files occupying your entire disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=File-based logging=&lt;br /&gt;
&lt;br /&gt;
During operation the Fusion Registry writes information to its logs. The level of logging is controlled by a system setting in the Fusion Registry which directly relates to the logging tool that the Fusion Registry uses, which is called Logback. The files generated are also affected by the Java Web-Application Server you are running (for example Apache Tomcat). For the rest of this section, only the scenario when running on Tomcat will be detailed.&lt;br /&gt;
&lt;br /&gt;
Since log files will naturally grow larger over time, if allowed to grow indefinitely, their size would become a problem consuming all the available disk space. This is addressed using rolling file appenders, which automatically “roll” or archive the current log file, and resume logging in a new file when certain predefined conditions occur.&lt;br /&gt;
&lt;br /&gt;
==Tomcat files==&lt;br /&gt;
&lt;br /&gt;
In Apache Tomcat, various log files are generated during the execution of a Java web application. These log files provide valuable information about the application's behavior, errors, and performance. Here's a summary of some common log files in Tomcat:&lt;br /&gt;
&lt;br /&gt;
    catalina.log:&lt;br /&gt;
        Purpose: General logging for the Tomcat server.&lt;br /&gt;
        Contents: Includes information about server startup, shutdown, and any errors that occur during the server's operation.&lt;br /&gt;
&lt;br /&gt;
    catalina.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for Catalina.&lt;br /&gt;
        Contents: Includes information specific to the Catalina component of Tomcat. Useful for troubleshooting Catalina-related issues.&lt;br /&gt;
&lt;br /&gt;
    localhost.log:&lt;br /&gt;
        Purpose: Logs information related to the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Records information about the deployment and undeployment of web applications under the default context.&lt;br /&gt;
&lt;br /&gt;
    localhost.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Contains information specific to the default web application context. Useful for troubleshooting application-specific issues.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.txt:&lt;br /&gt;
        Purpose: Records access information, such as requests made to the Tomcat server.&lt;br /&gt;
        Contents: Contains details like client IP address, request date and time, HTTP status, and bytes sent.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.&amp;lt;date&amp;gt;.txt:&lt;br /&gt;
        Purpose: Daily rotating log file for localhost_access_log&lt;br /&gt;
        Contents: The daily rotation of the localhost_access_log&lt;br /&gt;
&lt;br /&gt;
    manager.log:&lt;br /&gt;
        Purpose: Logs information about the Tomcat Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Tomcat Manager.&lt;br /&gt;
&lt;br /&gt;
    host-manager.log:&lt;br /&gt;
        Purpose: Logs information about the Host Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Host Manager.&lt;br /&gt;
&lt;br /&gt;
    FusionRegistry.log:&lt;br /&gt;
        Purpose: Logs Specific information about the Fusion Registry&lt;br /&gt;
        Contents: This is the most useful log file when debugging an issue with the Fusion Registry.&lt;br /&gt;
&lt;br /&gt;
==Logback==&lt;br /&gt;
&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. For example this could be: C:\tomcats\apache-tomcat-9.0.58\webapps\FusionRegistry\WEB-INF\classes&lt;br /&gt;
&lt;br /&gt;
Configuration can be performed by modifying this file. There are different levels of logging:&lt;br /&gt;
&lt;br /&gt;
'''TRACE''': This is for extremely detailed and potentially high volume logs that you don’t typically want enabled even during normal development.&amp;lt;br&amp;gt;&lt;br /&gt;
'''DEBUG''': Helpful in tracking the flow through the system and isolating issues, especially during the development and QA phases.&amp;lt;br&amp;gt;&lt;br /&gt;
'''INFO''': Used for system lifecycle events (system start, stop) and significant boundary events (e.g., database calls, remote API calls). Typical business exceptions can go here.&amp;lt;br&amp;gt;&lt;br /&gt;
'''WARN''': An unexpected technical or business event happened, customers may be affected, but probably no immediate human intervention is required.&amp;lt;br&amp;gt;&lt;br /&gt;
'''ERROR''': The system is in distress, customers are probably being affected (or will soon be) and the fix probably requires human intervention.&amp;lt;br&amp;gt;&lt;br /&gt;
'''OFF''': This level is intended to turn off logging.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''It is not recommended to switch to TRACE or DEBUG level unless specifically requested to by the development team, since the amount of logging produced can be excessive and can cause performance issues.'''&lt;br /&gt;
&lt;br /&gt;
[[File:LoggingLevels.png||]]&lt;br /&gt;
&lt;br /&gt;
===Logback Configuration===&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. The file consists of multiple options that can be configured by the user. Some of the more useful parts of this file are:&lt;br /&gt;
&lt;br /&gt;
  Line 2: &amp;lt;configuration scan=&amp;quot;true&amp;quot; scanPeriod=&amp;quot;30 seconds&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This configuration tells Logback to automatically check for changes in the configuration file every 30 seconds, and if any changes are detected, Logback will reload the configuration.&lt;br /&gt;
&lt;br /&gt;
  Line 8: &amp;lt;appender name=&amp;quot;fileout&amp;quot; class=&amp;quot;ch.qos.logback.core.rolling.RollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start of file appender, responsible for writing logs to the file&lt;br /&gt;
&lt;br /&gt;
  Line 9: &amp;lt;file&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log&amp;lt;/file&amp;gt;&lt;br /&gt;
This line tells Logback the directory and filename to store Registry information into. The default is &amp;quot;FusionRegistry.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Line 10: &amp;lt;encoder&amp;gt; &amp;lt;pattern&amp;gt;%d{yyyy-MM-dd HH:mm:ss.SSS} %p %t %c - %m%n&amp;lt;/pattern&amp;gt; &amp;lt;/encoder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encoder is responsible for formatting log messages. Current configuration tells logback to format logs like the following:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
  Line 13: &lt;br /&gt;
  &amp;lt;rollingPolicy class=&amp;quot;ch.qos.logback.core.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;maxIndex&amp;gt;4&amp;lt;/maxIndex&amp;gt;&lt;br /&gt;
    &amp;lt;FileNamePattern&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log.%i&lt;br /&gt;
    &amp;lt;/FileNamePattern&amp;gt;&lt;br /&gt;
  &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rolling policy is responsible for creating multiple log files with archived logs.&lt;br /&gt;
Current configuration tells logback to create up to 4 files named FusionRegistry.log.1 FusionRegistry.log.2 and so on.&lt;br /&gt;
When a new log file is created (due to a rollover event), the oldest file (if the maximum of 4 is reached) will be deleted, and the other files will be renamed to increment their index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Line 18: &lt;br /&gt;
  &amp;lt;triggeringPolicy class=&amp;quot;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MaxFileSize&amp;gt;10024KB&amp;lt;/MaxFileSize&amp;gt;&lt;br /&gt;
  &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Triggering policy is responsible for defining when the file will rollover. In current configuration it is around 10MBs.  Log file rollover and removal of old logs is necessary to prevent logs consuming all the available disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next appender tells logback to create additional file FusionRegistryWarnings.log and store there log messages with levels WARN and ERROR, all other configurations align with the first appender &lt;br /&gt;
  Line 49:  &lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.metadatatechnology&amp;quot; level=&amp;quot;INFO&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fileout&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;STDOUT&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fusionaudit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;warnout&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logger provides an option to select what is the minimal level of logging and which appenders to use for specified package and all its subpackages. In this case it tells to set minimal level of logging to INFO, and use all  4 appenders specified in file for &amp;quot;com.metadatatechnology&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  Line 63: &amp;lt;root level=&amp;quot;INFO&amp;quot;&amp;gt;&lt;br /&gt;
Similar options for all remaining packages in the project, and third party libraries.&lt;br /&gt;
&lt;br /&gt;
==Log Detail==&lt;br /&gt;
&lt;br /&gt;
Sample log entry:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
Every log entry consists of the following parts:&lt;br /&gt;
# Timestamp when error occurred (eg. 2024-01-30 13:34:41.123)&lt;br /&gt;
# Log level  (eg. INFO)&lt;br /&gt;
# Thread on which log was produced (eg. main)&lt;br /&gt;
# Class that produced the log (eg.  com.example.MyClass)&lt;br /&gt;
# Content of the log (eg. This is a log message)&lt;br /&gt;
&lt;br /&gt;
There are multiple types of logs stored in FusionRegistry.log file. Some are more helpful for the end user than others.&lt;br /&gt;
&lt;br /&gt;
===System Information Logs===&lt;br /&gt;
Those log entries inform about the state of the system, services being started or system settings being set. Examples:&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.187 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.utils.spring.ApplicationStarterImpl - Starting class io.sdmx.core.dao.base.PersistableMaintainableDao&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.137 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.core.fmr.manager.settings.RegistryPropertiesFileManagerImpl - Set up Email Server Settings&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.115 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.fusion.audit.manager.log.LogManagerImpl - Max Age for Transactional Log Events set to -1 hours&lt;br /&gt;
&lt;br /&gt;
===Loading Structural Metadata===&lt;br /&gt;
When loading structural metadata into the registry, many log entries are created. They have an INFO level and may contain the url from which the metadata is loaded, identifiers of loaded metadata as well as process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 10:54:55.998 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.624 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL Complete: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.754 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse structures&lt;br /&gt;
  2024-01-29 10:54:57.755 INFO http-nio-8080-exec-3 io.sdmx.format.ml.factory.structure.SdmxMLStructureReaderFactory - Read SdmxBeans using io.sdmx.format.ml.engine.structure.reader.v3.StaxStructureReaderEngineV3&lt;br /&gt;
  2024-01-29 10:54:57.925 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Build Beans Complete&lt;br /&gt;
  2024-01-29 10:54:57.926 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Post-Process Beans&lt;br /&gt;
  2024-01-29 10:54:57.927 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse Structures Complete&lt;br /&gt;
  2024-01-29 10:54:57.948 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:57.949 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate structures for insertion&lt;br /&gt;
  2024-01-29 10:54:58.021 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate Structure for Insertion:urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)&lt;br /&gt;
  ...&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - structures valid, save to database&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.manager.persistence.AbstractPersistenceManager - Process Cross References&lt;br /&gt;
  2024-01-29 10:54:58.060 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:58.065 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - Save Successful - Publish Message&lt;br /&gt;
  2024-01-29 10:55:02.287 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)'&lt;br /&gt;
  2024-01-29 10:55:02.332 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.codelist.Codelist=ISO:COUNTRY_ALPHA3(1.0)'&lt;br /&gt;
&lt;br /&gt;
===Saving Time-Series Data===&lt;br /&gt;
When inserting/modifying/replacing data using url or file there are many log entries created. They have an INFO level and contain step by step process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:03:26.258 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.generic.GenericDataLoadDao - Start Loading Dataset '-2662089662959301465' valid from '2024-01-29 11:03:26.0' valid to '2999-12-31 01:00:00.0'&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 1.0011855% complete&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-33 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 1%&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 2.002371% complete&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-35 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 2%&lt;br /&gt;
  2024-01-29 11:03:26.273 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 3.0035567% complete&lt;br /&gt;
  ...&lt;br /&gt;
  com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 99.11737% complete&lt;br /&gt;
  2024-01-29 11:03:26.386 INFO Thread-229 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 99%&lt;br /&gt;
  2024-01-29 11:03:26.387 INFO Thread-231 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 100%&lt;br /&gt;
  2024-01-29 11:03:26.402 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.engine.TransactionalDataWriterEngine - Commit data&lt;br /&gt;
  2024-01-29 11:03:27.264 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Perform Commit&lt;br /&gt;
  2024-01-29 11:03:27.287 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Final Commit&lt;br /&gt;
  2024-01-29 11:03:27.289 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Bulk Load Complete&lt;br /&gt;
&lt;br /&gt;
===Creating a Data Store===&lt;br /&gt;
When creating data storage from an admin panel in the system there are many log entries created. They have an INFO level, and contain information about database configuration provided by the user. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:00:05.245 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Create datasource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.247 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.328 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Cache DataSource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.330 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.355 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - SQL In Argument Limit: 1000&lt;br /&gt;
&lt;br /&gt;
=== Requesting Structural Metadata===&lt;br /&gt;
When requesting for metadata in the system there are log entries created. They have an INFO level, and contain information about what resource was requested, and if the result was returned from the database or from the cache. &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  2024-01-26 13:35:27.894 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/provisionagreement/*/*/*&lt;br /&gt;
  2024-01-26 13:35:27.939 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/provisionagreement/*/*/*?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-26 13:35:27.980 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 08:31:34.651 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/datastructure/*/*/*&lt;br /&gt;
  2024-01-29 08:31:34.674 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/datastructure/*/*/*?detail=allstubs&amp;amp;format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 08:31:34.710 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB&lt;br /&gt;
  2024-01-29 10:56:24.812 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 10:56:24.843 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Requesting Time-Series Data===&lt;br /&gt;
When requesting for time series in the system there are log entries created. They have an INFO level, and contain information about what resource was requested. If the request is against an external database the query may well include SQL statements showing the database queries performed.&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:43:42.911 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/data/dataflow/BIS/WS_SPP/1.0/&lt;br /&gt;
  2024-01-29 13:43:42.933 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss data/dataflow/BIS/WS_SPP/1.0?c[FREQ]=Q&amp;amp;c[REF_AREA]=5R&amp;amp;c[UNIT_MEASURE]=771&amp;amp;c[VALUE]=N&amp;amp;format=sdmx-compact-2.1&amp;amp;saveAs=BIS property prices: selected series&lt;br /&gt;
  2024-01-29 13:43:42.934 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.core.data.manager.index.IndexRetrievalManagerImpl - Data Query By Provision Agreement:urn:sdmx:org.sdmx.infomodel.registry.ProvisionAgreement=BIS:WS_SPP_BIS(1.0)&lt;br /&gt;
  2024-01-29 13:43:42.950 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.954 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.957 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:42.962 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:43.032 ERROR http-nio-8080-exec-7 io.sdmx.format.ml.engine.error.ErrorWriterEngineV21 - No results for query&lt;br /&gt;
  2024-01-29 13:43:43.033 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Error/Warn Information Logs===&lt;br /&gt;
If any issues were encountered, please attach logs to your report. Error log entities usually contain stack-trace which may be helpful to the development team to locate the issue in the code. Examples: &lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:05:12.475 ERROR Thread-457 io.sdmx.api.exception.SdmxException - Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
  io.sdmx.api.exception.SdmxException: Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validateAttributes(ImportPreProcessorEngine.java:298)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validate(ImportPreProcessorEngine.java:253)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.run(ImportPreProcessorEngine.java:99)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.lambda$new$0(ImportPreProcessorEngine.java:75)&lt;br /&gt;
      at io.sdmx.fusion.audit.manager.event.AuditEventManager.lambda$startNewThread$7(AuditEventManager.java:308)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:47:38.233 ERROR http-nio-8080-exec-5 io.sdmx.api.exception.SdmxException - unauthorised&lt;br /&gt;
  io.sdmx.api.exception.SdmxUnauthorisedException: unauthorised&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:33)&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:45)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.checkAuth(AbstractFusionSecurityRulesManager.java:138)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.saveRule(AbstractFusionSecurityRulesManager.java:87)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.service.GenericFusionSecurityRuleServiceActivator.saveRule(GenericFusionSecurityRuleServiceActivator.java:39)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
=Database Logging=&lt;br /&gt;
&lt;br /&gt;
There are also log tables within the database which persist some but not all of the logged information.&lt;br /&gt;
* Log Tables&lt;br /&gt;
* Audit Tables&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6651</id>
		<title>Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6651"/>
		<updated>2024-02-02T08:53:22Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Fusion Registry logs information regarding the requests made to it and the work that it is performing.  These logs can be long and complicated, but this document aims to explain the logging process.&lt;br /&gt;
&lt;br /&gt;
Logging information is stored in the filesystem as well as in database tables. The files on your system are possibly more transient so unless you take action these will likely be replaced with more recent log information. This is to prevent the size of the log files consuming all of your disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=File-based logging=&lt;br /&gt;
&lt;br /&gt;
During operation the Fusion Registry writes information to its logs. The level of logging is controlled by a system setting in the Fusion Registry which directly relates to the logging tool that the Fusion Registry uses, which is called Logback. The files generated are also affected by the Java Web-Application Server you are running (for example Apache Tomcat). For the rest of this section, only the scenario when running on Tomcat will be detailed.&lt;br /&gt;
&lt;br /&gt;
Since log files will naturally grow larger over time, if allowed to grow indefinitely, their size would become a problem consuming all the available disk space. This is addressed using rolling file appenders, which automatically “roll” or archive the current log file, and resume logging in a new file when certain predefined conditions occur.&lt;br /&gt;
&lt;br /&gt;
==Tomcat files==&lt;br /&gt;
&lt;br /&gt;
In Apache Tomcat, various log files are generated during the execution of a Java web application. These log files provide valuable information about the application's behavior, errors, and performance. Here's a summary of some common log files in Tomcat:&lt;br /&gt;
&lt;br /&gt;
    catalina.log:&lt;br /&gt;
        Purpose: General logging for the Tomcat server.&lt;br /&gt;
        Contents: Includes information about server startup, shutdown, and any errors that occur during the server's operation.&lt;br /&gt;
&lt;br /&gt;
    catalina.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for Catalina.&lt;br /&gt;
        Contents: Includes information specific to the Catalina component of Tomcat. Useful for troubleshooting Catalina-related issues.&lt;br /&gt;
&lt;br /&gt;
    localhost.log:&lt;br /&gt;
        Purpose: Logs information related to the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Records information about the deployment and undeployment of web applications under the default context.&lt;br /&gt;
&lt;br /&gt;
    localhost.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Contains information specific to the default web application context. Useful for troubleshooting application-specific issues.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.txt:&lt;br /&gt;
        Purpose: Records access information, such as requests made to the Tomcat server.&lt;br /&gt;
        Contents: Contains details like client IP address, request date and time, HTTP status, and bytes sent.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.&amp;lt;date&amp;gt;.txt:&lt;br /&gt;
        Purpose: Daily rotating log file for localhost_access_log&lt;br /&gt;
        Contents: The daily rotation of the localhost_access_log&lt;br /&gt;
&lt;br /&gt;
    manager.log:&lt;br /&gt;
        Purpose: Logs information about the Tomcat Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Tomcat Manager.&lt;br /&gt;
&lt;br /&gt;
    host-manager.log:&lt;br /&gt;
        Purpose: Logs information about the Host Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Host Manager.&lt;br /&gt;
&lt;br /&gt;
    FusionRegistry.log:&lt;br /&gt;
        Purpose: Logs Specific information about the Fusion Registry&lt;br /&gt;
        Contents: This is the most useful log file when debugging an issue with the Fusion Registry.&lt;br /&gt;
&lt;br /&gt;
==Logback==&lt;br /&gt;
&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. For example this could be: C:\tomcats\apache-tomcat-9.0.58\webapps\FusionRegistry\WEB-INF\classes&lt;br /&gt;
&lt;br /&gt;
Configuration can be performed by modifying this file. There are different levels of logging:&lt;br /&gt;
&lt;br /&gt;
'''TRACE''': This is for extremely detailed and potentially high volume logs that you don’t typically want enabled even during normal development.&amp;lt;br&amp;gt;&lt;br /&gt;
'''DEBUG''': Helpful in tracking the flow through the system and isolating issues, especially during the development and QA phases.&amp;lt;br&amp;gt;&lt;br /&gt;
'''INFO''': Used for system lifecycle events (system start, stop) and significant boundary events (e.g., database calls, remote API calls). Typical business exceptions can go here.&amp;lt;br&amp;gt;&lt;br /&gt;
'''WARN''': An unexpected technical or business event happened, customers may be affected, but probably no immediate human intervention is required.&amp;lt;br&amp;gt;&lt;br /&gt;
'''ERROR''': The system is in distress, customers are probably being affected (or will soon be) and the fix probably requires human intervention.&amp;lt;br&amp;gt;&lt;br /&gt;
'''OFF''': This level is intended to turn off logging.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''It is not recommended to switch to TRACE or DEBUG level unless specifically requested to by the development team, since the amount of logging produced can be excessive and can cause performance issues.'''&lt;br /&gt;
&lt;br /&gt;
[[File:LoggingLevels.png||]]&lt;br /&gt;
&lt;br /&gt;
===Logback Configuration===&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. The file consists of multiple options that can be configured by the user. Some of the more useful parts of this file are:&lt;br /&gt;
&lt;br /&gt;
  Line 2: &amp;lt;configuration scan=&amp;quot;true&amp;quot; scanPeriod=&amp;quot;30 seconds&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This configuration tells Logback to automatically check for changes in the configuration file every 30 seconds, and if any changes are detected, Logback will reload the configuration.&lt;br /&gt;
&lt;br /&gt;
  Line 8: &amp;lt;appender name=&amp;quot;fileout&amp;quot; class=&amp;quot;ch.qos.logback.core.rolling.RollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start of file appender, responsible for writing logs to the file&lt;br /&gt;
&lt;br /&gt;
  Line 9: &amp;lt;file&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log&amp;lt;/file&amp;gt;&lt;br /&gt;
This line tells Logback the directory and filename to store Registry information into. The default is &amp;quot;FusionRegistry.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Line 10: &amp;lt;encoder&amp;gt; &amp;lt;pattern&amp;gt;%d{yyyy-MM-dd HH:mm:ss.SSS} %p %t %c - %m%n&amp;lt;/pattern&amp;gt; &amp;lt;/encoder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encoder is responsible for formatting log messages. Current configuration tells logback to format logs like the following:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
  Line 13: &lt;br /&gt;
  &amp;lt;rollingPolicy class=&amp;quot;ch.qos.logback.core.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;maxIndex&amp;gt;4&amp;lt;/maxIndex&amp;gt;&lt;br /&gt;
    &amp;lt;FileNamePattern&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log.%i&lt;br /&gt;
    &amp;lt;/FileNamePattern&amp;gt;&lt;br /&gt;
  &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rolling policy is responsible for creating multiple log files with archived logs.&lt;br /&gt;
Current configuration tells logback to create up to 4 files named FusionRegistry.log.1 FusionRegistry.log.2 and so on.&lt;br /&gt;
When a new log file is created (due to a rollover event), the oldest file (if the maximum of 4 is reached) will be deleted, and the other files will be renamed to increment their index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Line 18: &lt;br /&gt;
  &amp;lt;triggeringPolicy class=&amp;quot;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MaxFileSize&amp;gt;10024KB&amp;lt;/MaxFileSize&amp;gt;&lt;br /&gt;
  &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Triggering policy is responsible for defining when the file will rollover. In current configuration it is around 10MBs.  Log file rollover and removal of old logs is necessary to prevent logs consuming all the available disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next appender tells logback to create additional file FusionRegistryWarnings.log and store there log messages with levels WARN and ERROR, all other configurations align with the first appender &lt;br /&gt;
  Line 49:  &lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.metadatatechnology&amp;quot; level=&amp;quot;INFO&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fileout&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;STDOUT&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fusionaudit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;warnout&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logger provides an option to select what is the minimal level of logging and which appenders to use for specified package and all its subpackages. In this case it tells to set minimal level of logging to INFO, and use all  4 appenders specified in file for &amp;quot;com.metadatatechnology&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  Line 63: &amp;lt;root level=&amp;quot;INFO&amp;quot;&amp;gt;&lt;br /&gt;
Similar options for all remaining packages in the project, and third party libraries.&lt;br /&gt;
&lt;br /&gt;
==Log Detail==&lt;br /&gt;
&lt;br /&gt;
Sample log entry:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
Every log entry consists of the following parts:&lt;br /&gt;
# Timestamp when error occurred (eg. 2024-01-30 13:34:41.123)&lt;br /&gt;
# Log level  (eg. INFO)&lt;br /&gt;
# Thread on which log was produced (eg. main)&lt;br /&gt;
# Class that produced the log (eg.  com.example.MyClass)&lt;br /&gt;
# Content of the log (eg. This is a log message)&lt;br /&gt;
&lt;br /&gt;
There are multiple types of logs stored in FusionRegistry.log file. Some are more helpful for the end user than others.&lt;br /&gt;
&lt;br /&gt;
===System Information Logs===&lt;br /&gt;
Those log entries inform about the state of the system, services being started or system settings being set. Examples:&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.187 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.utils.spring.ApplicationStarterImpl - Starting class io.sdmx.core.dao.base.PersistableMaintainableDao&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.137 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.core.fmr.manager.settings.RegistryPropertiesFileManagerImpl - Set up Email Server Settings&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.115 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.fusion.audit.manager.log.LogManagerImpl - Max Age for Transactional Log Events set to -1 hours&lt;br /&gt;
&lt;br /&gt;
===Loading Structural Metadata===&lt;br /&gt;
When loading structural metadata into the registry, many log entries are created. They have an INFO level and may contain the url from which the metadata is loaded, identifiers of loaded metadata as well as process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 10:54:55.998 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.624 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL Complete: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.754 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse structures&lt;br /&gt;
  2024-01-29 10:54:57.755 INFO http-nio-8080-exec-3 io.sdmx.format.ml.factory.structure.SdmxMLStructureReaderFactory - Read SdmxBeans using io.sdmx.format.ml.engine.structure.reader.v3.StaxStructureReaderEngineV3&lt;br /&gt;
  2024-01-29 10:54:57.925 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Build Beans Complete&lt;br /&gt;
  2024-01-29 10:54:57.926 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Post-Process Beans&lt;br /&gt;
  2024-01-29 10:54:57.927 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse Structures Complete&lt;br /&gt;
  2024-01-29 10:54:57.948 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:57.949 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate structures for insertion&lt;br /&gt;
  2024-01-29 10:54:58.021 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate Structure for Insertion:urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)&lt;br /&gt;
  ...&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - structures valid, save to database&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.manager.persistence.AbstractPersistenceManager - Process Cross References&lt;br /&gt;
  2024-01-29 10:54:58.060 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:58.065 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - Save Successful - Publish Message&lt;br /&gt;
  2024-01-29 10:55:02.287 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)'&lt;br /&gt;
  2024-01-29 10:55:02.332 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.codelist.Codelist=ISO:COUNTRY_ALPHA3(1.0)'&lt;br /&gt;
&lt;br /&gt;
===Saving Time-Series Data===&lt;br /&gt;
When inserting/modifying/replacing data using url or file there are many log entries created. They have an INFO level and contain step by step process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:03:26.258 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.generic.GenericDataLoadDao - Start Loading Dataset '-2662089662959301465' valid from '2024-01-29 11:03:26.0' valid to '2999-12-31 01:00:00.0'&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 1.0011855% complete&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-33 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 1%&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 2.002371% complete&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-35 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 2%&lt;br /&gt;
  2024-01-29 11:03:26.273 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 3.0035567% complete&lt;br /&gt;
  ...&lt;br /&gt;
  com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 99.11737% complete&lt;br /&gt;
  2024-01-29 11:03:26.386 INFO Thread-229 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 99%&lt;br /&gt;
  2024-01-29 11:03:26.387 INFO Thread-231 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 100%&lt;br /&gt;
  2024-01-29 11:03:26.402 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.engine.TransactionalDataWriterEngine - Commit data&lt;br /&gt;
  2024-01-29 11:03:27.264 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Perform Commit&lt;br /&gt;
  2024-01-29 11:03:27.287 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Final Commit&lt;br /&gt;
  2024-01-29 11:03:27.289 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Bulk Load Complete&lt;br /&gt;
&lt;br /&gt;
===Creating a Data Store===&lt;br /&gt;
When creating data storage from an admin panel in the system there are many log entries created. They have an INFO level, and contain information about database configuration provided by the user. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:00:05.245 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Create datasource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.247 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.328 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Cache DataSource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.330 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.355 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - SQL In Argument Limit: 1000&lt;br /&gt;
&lt;br /&gt;
=== Requesting Structural Metadata===&lt;br /&gt;
When requesting for metadata in the system there are log entries created. They have an INFO level, and contain information about what resource was requested, and if the result was returned from the database or from the cache. &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  2024-01-26 13:35:27.894 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/provisionagreement/*/*/*&lt;br /&gt;
  2024-01-26 13:35:27.939 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/provisionagreement/*/*/*?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-26 13:35:27.980 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 08:31:34.651 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/datastructure/*/*/*&lt;br /&gt;
  2024-01-29 08:31:34.674 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/datastructure/*/*/*?detail=allstubs&amp;amp;format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 08:31:34.710 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB&lt;br /&gt;
  2024-01-29 10:56:24.812 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 10:56:24.843 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Requesting Time-Series Data===&lt;br /&gt;
When requesting for time series in the system there are log entries created. They have an INFO level, and contain information about what resource was requested. If the request is against an external database the query may well include SQL statements showing the database queries performed.&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:43:42.911 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/data/dataflow/BIS/WS_SPP/1.0/&lt;br /&gt;
  2024-01-29 13:43:42.933 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss data/dataflow/BIS/WS_SPP/1.0?c[FREQ]=Q&amp;amp;c[REF_AREA]=5R&amp;amp;c[UNIT_MEASURE]=771&amp;amp;c[VALUE]=N&amp;amp;format=sdmx-compact-2.1&amp;amp;saveAs=BIS property prices: selected series&lt;br /&gt;
  2024-01-29 13:43:42.934 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.core.data.manager.index.IndexRetrievalManagerImpl - Data Query By Provision Agreement:urn:sdmx:org.sdmx.infomodel.registry.ProvisionAgreement=BIS:WS_SPP_BIS(1.0)&lt;br /&gt;
  2024-01-29 13:43:42.950 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.954 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.957 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:42.962 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:43.032 ERROR http-nio-8080-exec-7 io.sdmx.format.ml.engine.error.ErrorWriterEngineV21 - No results for query&lt;br /&gt;
  2024-01-29 13:43:43.033 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Error/Warn Information Logs===&lt;br /&gt;
If any issues were encountered, please attach logs to your report. Error log entities usually contain stack-trace which may be helpful to the development team to locate the issue in the code. Examples: &lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:05:12.475 ERROR Thread-457 io.sdmx.api.exception.SdmxException - Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
  io.sdmx.api.exception.SdmxException: Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validateAttributes(ImportPreProcessorEngine.java:298)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validate(ImportPreProcessorEngine.java:253)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.run(ImportPreProcessorEngine.java:99)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.lambda$new$0(ImportPreProcessorEngine.java:75)&lt;br /&gt;
      at io.sdmx.fusion.audit.manager.event.AuditEventManager.lambda$startNewThread$7(AuditEventManager.java:308)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:47:38.233 ERROR http-nio-8080-exec-5 io.sdmx.api.exception.SdmxException - unauthorised&lt;br /&gt;
  io.sdmx.api.exception.SdmxUnauthorisedException: unauthorised&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:33)&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:45)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.checkAuth(AbstractFusionSecurityRulesManager.java:138)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.saveRule(AbstractFusionSecurityRulesManager.java:87)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.service.GenericFusionSecurityRuleServiceActivator.saveRule(GenericFusionSecurityRuleServiceActivator.java:39)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
=Database Logging=&lt;br /&gt;
&lt;br /&gt;
There are also log tables within the database which persist some but not all of the logged information.&lt;br /&gt;
* Log Tables&lt;br /&gt;
* Audit Tables&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=File:LoggingLevels.png&amp;diff=6650</id>
		<title>File:LoggingLevels.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=File:LoggingLevels.png&amp;diff=6650"/>
		<updated>2024-02-01T16:34:46Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: The logging levels in Log4J&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
The logging levels in Log4J&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6649</id>
		<title>Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6649"/>
		<updated>2024-02-01T16:34:09Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Fusion Metadata Registry logs information regarding the requests made to it and the work that it is performing.  These logs can be long and complicated, but this document aims to explain the logging process.&lt;br /&gt;
&lt;br /&gt;
Logging information is stored in the filesystem as well as in database tables. The files on your system are possibly more transient so unless you take action these will likely be replaced with more recent log information. This is to prevent the size of the log files consuming all of your disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=File-based logging=&lt;br /&gt;
&lt;br /&gt;
During operation the Fusion Registry writes information to its logs. The level of logging is controlled by a system setting in the Fusion Registry which directly relates to the logging tool that the Fusion Registry uses, which is called Logback. The files generated are also affected by the Java Web-Application Server you are running (for example Apache Tomcat). For the rest of this section, only the scenario when running on Tomcat will be detailed.&lt;br /&gt;
&lt;br /&gt;
Since log files will naturally grow larger over time, if allowed to grow indefinitely, their size would become a problem consuming all the available disk space. This is addressed using rolling file appenders, which automatically “roll” or archive the current log file, and resume logging in a new file when certain predefined conditions occur.&lt;br /&gt;
&lt;br /&gt;
==Tomcat files==&lt;br /&gt;
&lt;br /&gt;
In Apache Tomcat, various log files are generated during the execution of a Java web application. These log files provide valuable information about the application's behavior, errors, and performance. Here's a summary of some common log files in Tomcat:&lt;br /&gt;
&lt;br /&gt;
    catalina.log:&lt;br /&gt;
        Purpose: General logging for the Tomcat server.&lt;br /&gt;
        Contents: Includes information about server startup, shutdown, and any errors that occur during the server's operation.&lt;br /&gt;
&lt;br /&gt;
    catalina.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for Catalina.&lt;br /&gt;
        Contents: Includes information specific to the Catalina component of Tomcat. Useful for troubleshooting Catalina-related issues.&lt;br /&gt;
&lt;br /&gt;
    localhost.log:&lt;br /&gt;
        Purpose: Logs information related to the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Records information about the deployment and undeployment of web applications under the default context.&lt;br /&gt;
&lt;br /&gt;
    localhost.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Contains information specific to the default web application context. Useful for troubleshooting application-specific issues.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.txt:&lt;br /&gt;
        Purpose: Records access information, such as requests made to the Tomcat server.&lt;br /&gt;
        Contents: Contains details like client IP address, request date and time, HTTP status, and bytes sent.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.&amp;lt;date&amp;gt;.txt:&lt;br /&gt;
        Purpose: Daily rotating log file for localhost_access_log&lt;br /&gt;
        Contents: The daily rotation of the localhost_access_log&lt;br /&gt;
&lt;br /&gt;
    manager.log:&lt;br /&gt;
        Purpose: Logs information about the Tomcat Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Tomcat Manager.&lt;br /&gt;
&lt;br /&gt;
    host-manager.log:&lt;br /&gt;
        Purpose: Logs information about the Host Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Host Manager.&lt;br /&gt;
&lt;br /&gt;
    FusionRegistry.log:&lt;br /&gt;
        Purpose: Logs Specific information about the Fusion Registry&lt;br /&gt;
        Contents: This is the most useful log file when debugging an issue with the Fusion Registry.&lt;br /&gt;
&lt;br /&gt;
==Logback==&lt;br /&gt;
&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. For example this could be: C:\tomcats\apache-tomcat-9.0.58\webapps\FusionRegistry\WEB-INF\classes&lt;br /&gt;
&lt;br /&gt;
Configuration can be performed by modifying this file. There are different levels of logging:&lt;br /&gt;
&lt;br /&gt;
'''TRACE''': This is for extremely detailed and potentially high volume logs that you don’t typically want enabled even during normal development.&amp;lt;br&amp;gt;&lt;br /&gt;
'''DEBUG''': Helpful in tracking the flow through the system and isolating issues, especially during the development and QA phases.&amp;lt;br&amp;gt;&lt;br /&gt;
'''INFO''': Used for system lifecycle events (system start, stop) and significant boundary events (e.g., database calls, remote API calls). Typical business exceptions can go here.&amp;lt;br&amp;gt;&lt;br /&gt;
'''WARN''': An unexpected technical or business event happened, customers may be affected, but probably no immediate human intervention is required.&amp;lt;br&amp;gt;&lt;br /&gt;
'''ERROR''': The system is in distress, customers are probably being affected (or will soon be) and the fix probably requires human intervention.&amp;lt;br&amp;gt;&lt;br /&gt;
'''OFF''': This level is intended to turn off logging.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''It is not recommended to switch to TRACE or DEBUG level unless specifically requested to by the development team, since the amount of logging produced can be excessive and can cause performance issues.'''&lt;br /&gt;
&lt;br /&gt;
[[File:LoggingLevels.png||]]&lt;br /&gt;
&lt;br /&gt;
===Logback Configuration===&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. The file consists of multiple options that can be configured by the user. Some of the more useful parts of this file are:&lt;br /&gt;
&lt;br /&gt;
  Line 2: &amp;lt;configuration scan=&amp;quot;true&amp;quot; scanPeriod=&amp;quot;30 seconds&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This configuration tells Logback to automatically check for changes in the configuration file every 30 seconds, and if any changes are detected, Logback will reload the configuration.&lt;br /&gt;
&lt;br /&gt;
  Line 8: &amp;lt;appender name=&amp;quot;fileout&amp;quot; class=&amp;quot;ch.qos.logback.core.rolling.RollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start of file appender, responsible for writing logs to the file&lt;br /&gt;
&lt;br /&gt;
  Line 9: &amp;lt;file&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log&amp;lt;/file&amp;gt;&lt;br /&gt;
This line tells Logback the directory and filename to store Registry information into. The default is &amp;quot;FusionRegistry.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Line 10: &amp;lt;encoder&amp;gt; &amp;lt;pattern&amp;gt;%d{yyyy-MM-dd HH:mm:ss.SSS} %p %t %c - %m%n&amp;lt;/pattern&amp;gt; &amp;lt;/encoder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encoder is responsible for formatting log messages. Current configuration tells logback to format logs like the following:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
  Line 13: &lt;br /&gt;
  &amp;lt;rollingPolicy class=&amp;quot;ch.qos.logback.core.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;maxIndex&amp;gt;4&amp;lt;/maxIndex&amp;gt;&lt;br /&gt;
    &amp;lt;FileNamePattern&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log.%i&lt;br /&gt;
    &amp;lt;/FileNamePattern&amp;gt;&lt;br /&gt;
  &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rolling policy is responsible for creating multiple log files with archived logs.&lt;br /&gt;
Current configuration tells logback to create up to 4 files named FusionRegistry.log.1 FusionRegistry.log.2 and so on.&lt;br /&gt;
When a new log file is created (due to a rollover event), the oldest file (if the maximum of 4 is reached) will be deleted, and the other files will be renamed to increment their index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Line 18: &lt;br /&gt;
  &amp;lt;triggeringPolicy class=&amp;quot;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MaxFileSize&amp;gt;10024KB&amp;lt;/MaxFileSize&amp;gt;&lt;br /&gt;
  &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Triggering policy is responsible for defining when the file will rollover. In current configuration it is around 10MBs.  Log file rollover and removal of old logs is necessary to prevent logs consuming all the available disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next appender tells logback to create additional file FusionRegistryWarnings.log and store there log messages with levels WARN and ERROR, all other configurations align with the first appender &lt;br /&gt;
  Line 49:  &lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.metadatatechnology&amp;quot; level=&amp;quot;INFO&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fileout&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;STDOUT&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fusionaudit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;warnout&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logger provides an option to select what is the minimal level of logging and which appenders to use for specified package and all its subpackages. In this case it tells to set minimal level of logging to INFO, and use all  4 appenders specified in file for &amp;quot;com.metadatatechnology&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  Line 63: &amp;lt;root level=&amp;quot;INFO&amp;quot;&amp;gt;&lt;br /&gt;
Similar options for all remaining packages in the project, and third party libraries.&lt;br /&gt;
&lt;br /&gt;
==Log Detail==&lt;br /&gt;
&lt;br /&gt;
Sample log entry:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
Every log entry consists of the following parts:&lt;br /&gt;
# Timestamp when error occurred (eg. 2024-01-30 13:34:41.123)&lt;br /&gt;
# Log level  (eg. INFO)&lt;br /&gt;
# Thread on which log was produced (eg. main)&lt;br /&gt;
# Class that produced the log (eg.  com.example.MyClass)&lt;br /&gt;
# Content of the log (eg. This is a log message)&lt;br /&gt;
&lt;br /&gt;
There are multiple types of logs stored in FusionRegistry.log file. Some are more helpful for the end user than others.&lt;br /&gt;
&lt;br /&gt;
===System Information Logs===&lt;br /&gt;
Those log entries inform about the state of the system, services being started or system settings being set. Examples:&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.187 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.utils.spring.ApplicationStarterImpl - Starting class io.sdmx.core.dao.base.PersistableMaintainableDao&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.137 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.core.fmr.manager.settings.RegistryPropertiesFileManagerImpl - Set up Email Server Settings&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.115 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.fusion.audit.manager.log.LogManagerImpl - Max Age for Transactional Log Events set to -1 hours&lt;br /&gt;
&lt;br /&gt;
===Loading Structural Metadata===&lt;br /&gt;
When loading structural metadata into the registry, many log entries are created. They have an INFO level and may contain the url from which the metadata is loaded, identifiers of loaded metadata as well as process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 10:54:55.998 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.624 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL Complete: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.754 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse structures&lt;br /&gt;
  2024-01-29 10:54:57.755 INFO http-nio-8080-exec-3 io.sdmx.format.ml.factory.structure.SdmxMLStructureReaderFactory - Read SdmxBeans using io.sdmx.format.ml.engine.structure.reader.v3.StaxStructureReaderEngineV3&lt;br /&gt;
  2024-01-29 10:54:57.925 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Build Beans Complete&lt;br /&gt;
  2024-01-29 10:54:57.926 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Post-Process Beans&lt;br /&gt;
  2024-01-29 10:54:57.927 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse Structures Complete&lt;br /&gt;
  2024-01-29 10:54:57.948 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:57.949 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate structures for insertion&lt;br /&gt;
  2024-01-29 10:54:58.021 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate Structure for Insertion:urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)&lt;br /&gt;
  ...&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - structures valid, save to database&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.manager.persistence.AbstractPersistenceManager - Process Cross References&lt;br /&gt;
  2024-01-29 10:54:58.060 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:58.065 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - Save Successful - Publish Message&lt;br /&gt;
  2024-01-29 10:55:02.287 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)'&lt;br /&gt;
  2024-01-29 10:55:02.332 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.codelist.Codelist=ISO:COUNTRY_ALPHA3(1.0)'&lt;br /&gt;
&lt;br /&gt;
===Saving Time-Series Data===&lt;br /&gt;
When inserting/modifying/replacing data using url or file there are many log entries created. They have an INFO level and contain step by step process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:03:26.258 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.generic.GenericDataLoadDao - Start Loading Dataset '-2662089662959301465' valid from '2024-01-29 11:03:26.0' valid to '2999-12-31 01:00:00.0'&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 1.0011855% complete&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-33 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 1%&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 2.002371% complete&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-35 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 2%&lt;br /&gt;
  2024-01-29 11:03:26.273 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 3.0035567% complete&lt;br /&gt;
  ...&lt;br /&gt;
  com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 99.11737% complete&lt;br /&gt;
  2024-01-29 11:03:26.386 INFO Thread-229 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 99%&lt;br /&gt;
  2024-01-29 11:03:26.387 INFO Thread-231 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 100%&lt;br /&gt;
  2024-01-29 11:03:26.402 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.engine.TransactionalDataWriterEngine - Commit data&lt;br /&gt;
  2024-01-29 11:03:27.264 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Perform Commit&lt;br /&gt;
  2024-01-29 11:03:27.287 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Final Commit&lt;br /&gt;
  2024-01-29 11:03:27.289 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Bulk Load Complete&lt;br /&gt;
&lt;br /&gt;
===Creating a Data Store===&lt;br /&gt;
When creating data storage from an admin panel in the system there are many log entries created. They have an INFO level, and contain information about database configuration provided by the user. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:00:05.245 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Create datasource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.247 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.328 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Cache DataSource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.330 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.355 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - SQL In Argument Limit: 1000&lt;br /&gt;
&lt;br /&gt;
=== Requesting Structural Metadata===&lt;br /&gt;
When requesting for metadata in the system there are log entries created. They have an INFO level, and contain information about what resource was requested, and if the result was returned from the database or from the cache. &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  2024-01-26 13:35:27.894 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/provisionagreement/*/*/*&lt;br /&gt;
  2024-01-26 13:35:27.939 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/provisionagreement/*/*/*?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-26 13:35:27.980 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 08:31:34.651 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/datastructure/*/*/*&lt;br /&gt;
  2024-01-29 08:31:34.674 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/datastructure/*/*/*?detail=allstubs&amp;amp;format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 08:31:34.710 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB&lt;br /&gt;
  2024-01-29 10:56:24.812 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 10:56:24.843 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Requesting Time-Series Data===&lt;br /&gt;
When requesting for time series in the system there are log entries created. They have an INFO level, and contain information about what resource was requested. If the request is against an external database the query may well include SQL statements showing the database queries performed.&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:43:42.911 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/data/dataflow/BIS/WS_SPP/1.0/&lt;br /&gt;
  2024-01-29 13:43:42.933 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss data/dataflow/BIS/WS_SPP/1.0?c[FREQ]=Q&amp;amp;c[REF_AREA]=5R&amp;amp;c[UNIT_MEASURE]=771&amp;amp;c[VALUE]=N&amp;amp;format=sdmx-compact-2.1&amp;amp;saveAs=BIS property prices: selected series&lt;br /&gt;
  2024-01-29 13:43:42.934 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.core.data.manager.index.IndexRetrievalManagerImpl - Data Query By Provision Agreement:urn:sdmx:org.sdmx.infomodel.registry.ProvisionAgreement=BIS:WS_SPP_BIS(1.0)&lt;br /&gt;
  2024-01-29 13:43:42.950 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.954 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.957 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:42.962 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:43.032 ERROR http-nio-8080-exec-7 io.sdmx.format.ml.engine.error.ErrorWriterEngineV21 - No results for query&lt;br /&gt;
  2024-01-29 13:43:43.033 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Error/Warn Information Logs===&lt;br /&gt;
If any issues were encountered, please attach logs to your report. Error log entities usually contain stack-trace which may be helpful to the development team to locate the issue in the code. Examples: &lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:05:12.475 ERROR Thread-457 io.sdmx.api.exception.SdmxException - Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
  io.sdmx.api.exception.SdmxException: Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validateAttributes(ImportPreProcessorEngine.java:298)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validate(ImportPreProcessorEngine.java:253)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.run(ImportPreProcessorEngine.java:99)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.lambda$new$0(ImportPreProcessorEngine.java:75)&lt;br /&gt;
      at io.sdmx.fusion.audit.manager.event.AuditEventManager.lambda$startNewThread$7(AuditEventManager.java:308)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:47:38.233 ERROR http-nio-8080-exec-5 io.sdmx.api.exception.SdmxException - unauthorised&lt;br /&gt;
  io.sdmx.api.exception.SdmxUnauthorisedException: unauthorised&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:33)&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:45)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.checkAuth(AbstractFusionSecurityRulesManager.java:138)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.saveRule(AbstractFusionSecurityRulesManager.java:87)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.service.GenericFusionSecurityRuleServiceActivator.saveRule(GenericFusionSecurityRuleServiceActivator.java:39)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
=Database Logging=&lt;br /&gt;
&lt;br /&gt;
There are also log tables within the database which persist some but not all of the logged information.&lt;br /&gt;
* Log Tables&lt;br /&gt;
* Audit Tables&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6648</id>
		<title>Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Logging&amp;diff=6648"/>
		<updated>2024-02-01T16:33:35Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: Created page with &amp;quot;The Fusion Metadata Registry logs information regarding the requests made to it and the work that it is performing.  These logs can be long and complicated, but this document...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Fusion Metadata Registry logs information regarding the requests made to it and the work that it is performing.  These logs can be long and complicated, but this document aims to explain the logging process.&lt;br /&gt;
&lt;br /&gt;
Logging information is stored in the filesystem as well as in database tables. The files on your system are possibly more transient so unless you take action these will likely be replaced with more recent log information. This is to prevent the size of the log files consuming all of your disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=File-based logging=&lt;br /&gt;
&lt;br /&gt;
During operation the FMR writes information to its logs. The level of logging is controlled by a system setting in the FMR which directly relates to the logging tool that the FMR uses, which is called Logback. The files generated are also affected by the Java Web-Application Server you are running (for example Apache Tomcat). For the rest of this section, only the scenario when running on Tomcat will be detailed.&lt;br /&gt;
&lt;br /&gt;
Since log files will naturally grow larger over time, if allowed to grow indefinitely, their size would become a problem consuming all the available disk space. This is addressed using rolling file appenders, which automatically “roll” or archive the current log file, and resume logging in a new file when certain predefined conditions occur.&lt;br /&gt;
&lt;br /&gt;
==Tomcat files==&lt;br /&gt;
&lt;br /&gt;
In Apache Tomcat, various log files are generated during the execution of a Java web application. These log files provide valuable information about the application's behavior, errors, and performance. Here's a summary of some common log files in Tomcat:&lt;br /&gt;
&lt;br /&gt;
    catalina.log:&lt;br /&gt;
        Purpose: General logging for the Tomcat server.&lt;br /&gt;
        Contents: Includes information about server startup, shutdown, and any errors that occur during the server's operation.&lt;br /&gt;
&lt;br /&gt;
    catalina.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for Catalina.&lt;br /&gt;
        Contents: Includes information specific to the Catalina component of Tomcat. Useful for troubleshooting Catalina-related issues.&lt;br /&gt;
&lt;br /&gt;
    localhost.log:&lt;br /&gt;
        Purpose: Logs information related to the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Records information about the deployment and undeployment of web applications under the default context.&lt;br /&gt;
&lt;br /&gt;
    localhost.&amp;lt;date&amp;gt;.log:&lt;br /&gt;
        Purpose: Daily rotating log file for the default &amp;quot;localhost&amp;quot; context.&lt;br /&gt;
        Contents: Contains information specific to the default web application context. Useful for troubleshooting application-specific issues.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.txt:&lt;br /&gt;
        Purpose: Records access information, such as requests made to the Tomcat server.&lt;br /&gt;
        Contents: Contains details like client IP address, request date and time, HTTP status, and bytes sent.&lt;br /&gt;
&lt;br /&gt;
    localhost_access_log.&amp;lt;date&amp;gt;.txt:&lt;br /&gt;
        Purpose: Daily rotating log file for localhost_access_log&lt;br /&gt;
        Contents: The daily rotation of the localhost_access_log&lt;br /&gt;
&lt;br /&gt;
    manager.log:&lt;br /&gt;
        Purpose: Logs information about the Tomcat Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Tomcat Manager.&lt;br /&gt;
&lt;br /&gt;
    host-manager.log:&lt;br /&gt;
        Purpose: Logs information about the Host Manager application.&lt;br /&gt;
        Contents: Records deployment and undeployment activities performed through the Host Manager.&lt;br /&gt;
&lt;br /&gt;
    FusionRegistry.log:&lt;br /&gt;
        Purpose: Logs Specific information about the Fusion Registry&lt;br /&gt;
        Contents: This is the most useful log file when debugging an issue with the FMR.&lt;br /&gt;
&lt;br /&gt;
==Logback==&lt;br /&gt;
&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. For example this could be: C:\tomcats\apache-tomcat-9.0.58\webapps\FusionRegistry\WEB-INF\classes&lt;br /&gt;
&lt;br /&gt;
Configuration can be performed by modifying this file. There are different levels of logging:&lt;br /&gt;
&lt;br /&gt;
'''TRACE''': This is for extremely detailed and potentially high volume logs that you don’t typically want enabled even during normal development.&amp;lt;br&amp;gt;&lt;br /&gt;
'''DEBUG''': Helpful in tracking the flow through the system and isolating issues, especially during the development and QA phases.&amp;lt;br&amp;gt;&lt;br /&gt;
'''INFO''': Used for system lifecycle events (system start, stop) and significant boundary events (e.g., database calls, remote API calls). Typical business exceptions can go here.&amp;lt;br&amp;gt;&lt;br /&gt;
'''WARN''': An unexpected technical or business event happened, customers may be affected, but probably no immediate human intervention is required.&amp;lt;br&amp;gt;&lt;br /&gt;
'''ERROR''': The system is in distress, customers are probably being affected (or will soon be) and the fix probably requires human intervention.&amp;lt;br&amp;gt;&lt;br /&gt;
'''OFF''': This level is intended to turn off logging.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''It is not recommended to switch to TRACE or DEBUG level unless specifically requested to by the development team, since the amount of logging produced can be excessive and can cause performance issues.'''&lt;br /&gt;
&lt;br /&gt;
[[File:LoggingLevels.png||]]&lt;br /&gt;
&lt;br /&gt;
===Logback Configuration===&lt;br /&gt;
The logging is controlled by a file called &amp;quot;logback.xml&amp;quot; which is located in the WEB-INF\classes directory under the installed FusionRegistry web application. The file consists of multiple options that can be configured by the user. Some of the more useful parts of this file are:&lt;br /&gt;
&lt;br /&gt;
  Line 2: &amp;lt;configuration scan=&amp;quot;true&amp;quot; scanPeriod=&amp;quot;30 seconds&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This configuration tells Logback to automatically check for changes in the configuration file every 30 seconds, and if any changes are detected, Logback will reload the configuration.&lt;br /&gt;
&lt;br /&gt;
  Line 8: &amp;lt;appender name=&amp;quot;fileout&amp;quot; class=&amp;quot;ch.qos.logback.core.rolling.RollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start of file appender, responsible for writing logs to the file&lt;br /&gt;
&lt;br /&gt;
  Line 9: &amp;lt;file&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log&amp;lt;/file&amp;gt;&lt;br /&gt;
This line tells Logback the directory and filename to store Registry information into. The default is &amp;quot;FusionRegistry.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Line 10: &amp;lt;encoder&amp;gt; &amp;lt;pattern&amp;gt;%d{yyyy-MM-dd HH:mm:ss.SSS} %p %t %c - %m%n&amp;lt;/pattern&amp;gt; &amp;lt;/encoder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encoder is responsible for formatting log messages. Current configuration tells logback to format logs like the following:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
  Line 13: &lt;br /&gt;
  &amp;lt;rollingPolicy class=&amp;quot;ch.qos.logback.core.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;maxIndex&amp;gt;4&amp;lt;/maxIndex&amp;gt;&lt;br /&gt;
    &amp;lt;FileNamePattern&amp;gt;${catalina.base:-./temp}/logs/FusionRegistry.log.%i&lt;br /&gt;
    &amp;lt;/FileNamePattern&amp;gt;&lt;br /&gt;
  &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rolling policy is responsible for creating multiple log files with archived logs.&lt;br /&gt;
Current configuration tells logback to create up to 4 files named FusionRegistry.log.1 FusionRegistry.log.2 and so on.&lt;br /&gt;
When a new log file is created (due to a rollover event), the oldest file (if the maximum of 4 is reached) will be deleted, and the other files will be renamed to increment their index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Line 18: &lt;br /&gt;
  &amp;lt;triggeringPolicy class=&amp;quot;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MaxFileSize&amp;gt;10024KB&amp;lt;/MaxFileSize&amp;gt;&lt;br /&gt;
  &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Triggering policy is responsible for defining when the file will rollover. In current configuration it is around 10MBs.  Log file rollover and removal of old logs is necessary to prevent logs consuming all the available disk space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next appender tells logback to create additional file FusionRegistryWarnings.log and store there log messages with levels WARN and ERROR, all other configurations align with the first appender &lt;br /&gt;
  Line 49:  &lt;br /&gt;
  &amp;lt;logger name=&amp;quot;com.metadatatechnology&amp;quot; level=&amp;quot;INFO&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fileout&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;STDOUT&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;fusionaudit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;appender-ref ref=&amp;quot;warnout&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/logger&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logger provides an option to select what is the minimal level of logging and which appenders to use for specified package and all its subpackages. In this case it tells to set minimal level of logging to INFO, and use all  4 appenders specified in file for &amp;quot;com.metadatatechnology&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  Line 63: &amp;lt;root level=&amp;quot;INFO&amp;quot;&amp;gt;&lt;br /&gt;
Similar options for all remaining packages in the project, and third party libraries.&lt;br /&gt;
&lt;br /&gt;
==Log Detail==&lt;br /&gt;
&lt;br /&gt;
Sample log entry:&lt;br /&gt;
  2024-01-30 13:34:41.123 INFO main com.example.MyClass - This is a log message&lt;br /&gt;
&lt;br /&gt;
Every log entry consists of the following parts:&lt;br /&gt;
# Timestamp when error occurred (eg. 2024-01-30 13:34:41.123)&lt;br /&gt;
# Log level  (eg. INFO)&lt;br /&gt;
# Thread on which log was produced (eg. main)&lt;br /&gt;
# Class that produced the log (eg.  com.example.MyClass)&lt;br /&gt;
# Content of the log (eg. This is a log message)&lt;br /&gt;
&lt;br /&gt;
There are multiple types of logs stored in FusionRegistry.log file. Some are more helpful for the end user than others.&lt;br /&gt;
&lt;br /&gt;
===System Information Logs===&lt;br /&gt;
Those log entries inform about the state of the system, services being started or system settings being set. Examples:&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.187 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.utils.spring.ApplicationStarterImpl - Starting class io.sdmx.core.dao.base.PersistableMaintainableDao&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.137 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.core.fmr.manager.settings.RegistryPropertiesFileManagerImpl - Set up Email Server Settings&lt;br /&gt;
&lt;br /&gt;
  2024-01-25 13:49:24.115 INFO RMI TCP Connection(3)-127.0.0.1 io.sdmx.fusion.audit.manager.log.LogManagerImpl - Max Age for Transactional Log Events set to -1 hours&lt;br /&gt;
&lt;br /&gt;
===Loading Structural Metadata===&lt;br /&gt;
When loading structural metadata into the registry, many log entries are created. They have an INFO level and may contain the url from which the metadata is loaded, identifiers of loaded metadata as well as process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 10:54:55.998 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.624 INFO http-nio-8080-exec-3 io.sdmx.utils.http.broker.RestMessageBroker - Call URL Complete: https://demo11.metadatatechnology.com/FusionRegistry/sdmx/v2/structure/structure/all/all/all/?format=sdmx-3.0&lt;br /&gt;
  2024-01-29 10:54:57.754 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse structures&lt;br /&gt;
  2024-01-29 10:54:57.755 INFO http-nio-8080-exec-3 io.sdmx.format.ml.factory.structure.SdmxMLStructureReaderFactory - Read SdmxBeans using io.sdmx.format.ml.engine.structure.reader.v3.StaxStructureReaderEngineV3&lt;br /&gt;
  2024-01-29 10:54:57.925 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Build Beans Complete&lt;br /&gt;
  2024-01-29 10:54:57.926 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Post-Process Beans&lt;br /&gt;
  2024-01-29 10:54:57.927 INFO http-nio-8080-exec-3 io.sdmx.core.sdmx.manager.structure.StructureReaderManagerImpl - Parse Structures Complete&lt;br /&gt;
  2024-01-29 10:54:57.948 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:57.949 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate structures for insertion&lt;br /&gt;
  2024-01-29 10:54:58.021 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.engine.structure.RegistryStructureValidationEngine - Validate Structure for Insertion:urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)&lt;br /&gt;
  ...&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - structures valid, save to database&lt;br /&gt;
  2024-01-29 10:54:58.051 INFO http-nio-8080-exec-3 io.sdmx.core.fmr.manager.persistence.AbstractPersistenceManager - Process Cross References&lt;br /&gt;
  2024-01-29 10:54:58.060 INFO http-nio-8080-exec-3 io.sdmx.core.structure.manager.persist.StructurePreProcessManagerImpl - Pre-process Beans Event&lt;br /&gt;
  2024-01-29 10:54:58.065 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.manager.persistence.PersistedStructureManagerEnterprise - Save Successful - Publish Message&lt;br /&gt;
  2024-01-29 10:55:02.287 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.base.DataProviderScheme=EAPRO:DATA_PROVIDERS(1.0)'&lt;br /&gt;
  2024-01-29 10:55:02.332 INFO http-nio-8080-exec-6 io.sdmx.core.dao.base.PersistableMaintainableDao - Save Structure 'urn:sdmx:org.sdmx.infomodel.codelist.Codelist=ISO:COUNTRY_ALPHA3(1.0)'&lt;br /&gt;
&lt;br /&gt;
===Saving Time-Series Data===&lt;br /&gt;
When inserting/modifying/replacing data using url or file there are many log entries created. They have an INFO level and contain step by step process description. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:03:26.258 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.generic.GenericDataLoadDao - Start Loading Dataset '-2662089662959301465' valid from '2024-01-29 11:03:26.0' valid to '2999-12-31 01:00:00.0'&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 1.0011855% complete&lt;br /&gt;
  2024-01-29 11:03:26.265 INFO Thread-33 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 1%&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 2.002371% complete&lt;br /&gt;
  2024-01-29 11:03:26.270 INFO Thread-35 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 2%&lt;br /&gt;
  2024-01-29 11:03:26.273 INFO Thread-9 com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 3.0035567% complete&lt;br /&gt;
  ...&lt;br /&gt;
  com.metadatatechnology.fusion.core.data.engine.writer.timeseries.PercentageCompleteWriterEngine - 99.11737% complete&lt;br /&gt;
  2024-01-29 11:03:26.386 INFO Thread-229 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 99%&lt;br /&gt;
  2024-01-29 11:03:26.387 INFO Thread-231 com.metadatatechnology.fusion.registry.manager.data.publish.impl.ImportProcessorEngine - Percentage Complete: 100%&lt;br /&gt;
  2024-01-29 11:03:26.402 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.engine.TransactionalDataWriterEngine - Commit data&lt;br /&gt;
  2024-01-29 11:03:27.264 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Perform Commit&lt;br /&gt;
  2024-01-29 11:03:27.287 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Final Commit&lt;br /&gt;
  2024-01-29 11:03:27.289 INFO Thread-9 com.metadatatechnology.fusion.sdmx.jdbc.dao.publish.mysql.MySqlDBulkLoadDao - Bulk Load Complete&lt;br /&gt;
&lt;br /&gt;
===Creating a Data Store===&lt;br /&gt;
When creating data storage from an admin panel in the system there are many log entries created. They have an INFO level, and contain information about database configuration provided by the user. Example:&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:00:05.245 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Create datasource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.247 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.328 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.registry.manager.data.publish.impl.DataSourceManagerImpl - Cache DataSource: root@localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.330 INFO http-nio-8080-exec-5 io.sdmx.utils.hibernate.model.PersistantStoragePlatform - Constructed URL: jdbc:mysql://localhost:3306/fmr_data&lt;br /&gt;
  2024-01-29 11:00:05.355 INFO http-nio-8080-exec-5 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - SQL In Argument Limit: 1000&lt;br /&gt;
&lt;br /&gt;
=== Requesting Structural Metadata===&lt;br /&gt;
When requesting for metadata in the system there are log entries created. They have an INFO level, and contain information about what resource was requested, and if the result was returned from the database or from the cache. &lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  2024-01-26 13:35:27.894 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/provisionagreement/*/*/*&lt;br /&gt;
  2024-01-26 13:35:27.939 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/provisionagreement/*/*/*?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-26 13:35:27.980 INFO http-nio-8080-exec-10 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 08:31:34.651 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/datastructure/*/*/*&lt;br /&gt;
  2024-01-29 08:31:34.674 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/datastructure/*/*/*?detail=allstubs&amp;amp;format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 08:31:34.710 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
  com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB&lt;br /&gt;
  2024-01-29 10:56:24.812 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss structure/dataproviderscheme/WB/DATA_PROVIDERS/1.0/WB?format=fusion-json&amp;amp;includeAllAnnotations=true&amp;amp;includeMetadata=true&lt;br /&gt;
  2024-01-29 10:56:24.843 INFO http-nio-8080-exec-3 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Requesting Time-Series Data===&lt;br /&gt;
When requesting for time series in the system there are log entries created. They have an INFO level, and contain information about what resource was requested. If the request is against an external database the query may well include SQL statements showing the database queries performed.&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:43:42.911 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request issued for: http://localhost:8080/FusionRegistry/sdmx/v2/data/dataflow/BIS/WS_SPP/1.0/&lt;br /&gt;
  2024-01-29 13:43:42.933 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.rest.manager.cache.SDMXRESTGetRequestCacheManager - Cache miss data/dataflow/BIS/WS_SPP/1.0?c[FREQ]=Q&amp;amp;c[REF_AREA]=5R&amp;amp;c[UNIT_MEASURE]=771&amp;amp;c[VALUE]=N&amp;amp;format=sdmx-compact-2.1&amp;amp;saveAs=BIS property prices: selected series&lt;br /&gt;
  2024-01-29 13:43:42.934 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.core.data.manager.index.IndexRetrievalManagerImpl - Data Query By Provision Agreement:urn:sdmx:org.sdmx.infomodel.registry.ProvisionAgreement=BIS:WS_SPP_BIS(1.0)&lt;br /&gt;
  2024-01-29 13:43:42.950 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.954 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT ID, FR_GROUP_ID, FR_GROUP_ID, K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE FROM `BIS_WS_SPP_1_0_KEY` K  WHERE FR_GROUP_ID != ?  AND ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ IN (?,? ) AND K.REF_AREA IN (?,? ) AND K.UNIT_MEASURE IN (?,? ) AND K.VALUE IN (?,? ) with parameters, ^,BIS,BIS,^,Q,^,5R,^,771,^,N&lt;br /&gt;
  2024-01-29 13:43:42.957 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Execute Query against 'fmr_data' : SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:42.962 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.sdmx.jdbc.dao.MatrixPluginDao - Completed Query against 'fmr_data', Processed '0' Table Rows for query: SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID, O.OBS_VALUE, O.OBS_STATUS, O.OBS_CONF, O.OBS_PRE_BREAK, O.FR_DATASET_ID, O.FR_IS_DELETED, O.FR_UPDATED_DATE_OBS, O.FR_VALID_FROM, O.TIME_PERIOD, O.FR_OBS_DATE FROM `BIS_WS_SPP_1_0_OBS` O RIGHT JOIN (SELECT K.FREQ, K.REF_AREA, K.VALUE, K.UNIT_MEASURE, K.BREAKS, K.COVERAGE, K.TITLE_TS, K.FR_UPDATED_DATE, K.ID FROM `BIS_WS_SPP_1_0_KEY` K  WHERE ((FR_PROVIDER_ACY = ?  AND FR_PROVIDER_ID = ? )) AND K.FREQ = ? AND K.REF_AREA = ? AND K.UNIT_MEASURE = ? AND K.VALUE = ? AND K.FR_UPDATED_DATE IS NOT NULL  AND K.FR_GROUP_ID = ?  ) K  ON O.FR_KEY_ID = K.ID WHERE (O.FR_VALID_TO = ? OR O.FR_VALID_TO IS NULL)  AND O.FR_IS_DELETED=0  ORDER BY K.ID ASC,O.FR_OBS_DATE ASC with parameters, BIS,BIS,Q,5R,771,N,^,2999-12-30T23:00:00&lt;br /&gt;
  2024-01-29 13:43:43.032 ERROR http-nio-8080-exec-7 io.sdmx.format.ml.engine.error.ErrorWriterEngineV21 - No results for query&lt;br /&gt;
  2024-01-29 13:43:43.033 INFO http-nio-8080-exec-7 com.metadatatechnology.fusion.registry.filter.FusionRegistryHTTPDataCacheHeaderFilter - Request completed&lt;br /&gt;
&lt;br /&gt;
===Error/Warn Information Logs===&lt;br /&gt;
If any issues were encountered, please attach logs to your report. Error log entities usually contain stack-trace which may be helpful to the development team to locate the issue in the code. Examples: &lt;br /&gt;
&lt;br /&gt;
  2024-01-29 11:05:12.475 ERROR Thread-457 io.sdmx.api.exception.SdmxException - Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
  io.sdmx.api.exception.SdmxException: Can not delete mandatory attribute UNIT_MULT&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validateAttributes(ImportPreProcessorEngine.java:298)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.validate(ImportPreProcessorEngine.java:253)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.run(ImportPreProcessorEngine.java:99)&lt;br /&gt;
      at com.metadatatechnology.fusion.sdmx.jdbc.engine.ImportPreProcessorEngine.lambda$new$0(ImportPreProcessorEngine.java:75)&lt;br /&gt;
      at io.sdmx.fusion.audit.manager.event.AuditEventManager.lambda$startNewThread$7(AuditEventManager.java:308)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
  2024-01-29 13:47:38.233 ERROR http-nio-8080-exec-5 io.sdmx.api.exception.SdmxException - unauthorised&lt;br /&gt;
  io.sdmx.api.exception.SdmxUnauthorisedException: unauthorised&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:33)&lt;br /&gt;
      at io.sdmx.api.security.ISecurityAdminAuthorisationManager.authorise(ISecurityAdminAuthorisationManager.java:45)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.checkAuth(AbstractFusionSecurityRulesManager.java:138)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.manager.settings.AbstractFusionSecurityRulesManager.saveRule(AbstractFusionSecurityRulesManager.java:87)&lt;br /&gt;
      at com.metadatatechnology.fusion.security.service.GenericFusionSecurityRuleServiceActivator.saveRule(GenericFusionSecurityRuleServiceActivator.java:39)&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
=Database Logging=&lt;br /&gt;
&lt;br /&gt;
There are also log tables within the database which persist some but not all of the logged information.&lt;br /&gt;
* Log Tables&lt;br /&gt;
* Audit Tables&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Configure_Audit_Settings&amp;diff=6647</id>
		<title>Configure Audit Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Configure_Audit_Settings&amp;diff=6647"/>
		<updated>2024-01-29T13:32:17Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:How_To]]&lt;br /&gt;
[[Category:Fusion Registry Install]]&lt;br /&gt;
=Overview=&lt;br /&gt;
'''Important Note: This feature is not available in Version 11.'''&lt;br /&gt;
&lt;br /&gt;
The Fusion Registry can be used to audit activity, including structure queries, submissions, data registrations, data queries, etc.  For each audited event, the associated server side logs can be captured and stored against the event.  The Audit tab in the settings Registry Settings enables the level of auditing to be controlled, and the definition of which log events are captured can also be set.  Audit and log information can be given a lifetime after which time they will be deleted.&lt;br /&gt;
&lt;br /&gt;
Audit events are split into two categories:&lt;br /&gt;
&lt;br /&gt;
'''1. Transactional'''&lt;br /&gt;
These audit events are ones which result in the Registry modifying structures, data, or metadata.  A transactional event includes structure submissions, data registrations, and reference metadata submissions.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2. Non Transactional'''&lt;br /&gt;
These audit events are one where information is being read from the Registry, but no information is being modified.  These events include (amongst others) data queries, structure queries, and schema queries.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audit events are used to capture additional information for structure modifications. &lt;br /&gt;
&lt;br /&gt;
They are also used to provide an overview of '''User Activity''' as shown in the image below.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Audit7.PNG|1200px]]&lt;br /&gt;
&lt;br /&gt;
=Audit Events=&lt;br /&gt;
Auditing can either be enabled or disabled.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Audit Level''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can either log '''All Events''' (as shown in the example below) or '''Transactional Events''' only.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Delete Audits Every''' input filed can be set how many days the audit events should be kept for, if the field is left empty then the audits will never be deleted.  It is important to note that this setting is only relevant for non-transactional events. Transactional audit events will not be deleted even if this setting is applied.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Audit5.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
=Log Events=&lt;br /&gt;
&lt;br /&gt;
Logging can be enabled or disabled.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Logging Level''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can either log '''Transactional Events''' (as shown in the example below) or '''All Events''' only.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Delete Logs Every''' can be used to specify the number of days or hours that the server logs should be kept for, leaving this filed blank will be used to indicate the logs should never be deleted.  Note log events will only be deleted for non-transactional audit events.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Audit6.PNG|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''': In order to take full advantage of the Rollback feature, '''Audit Events''' should be enabled. Additionally, if you wish to review the log file prior to performing a Rollback it is wise to switch on '''Log Events'''.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.sdmxcloud.org/Restore_(Rollback)_Structures Click here to read more about Structure Rollback.]&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Install_Apache_Tomcat&amp;diff=6646</id>
		<title>Install Apache Tomcat</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Install_Apache_Tomcat&amp;diff=6646"/>
		<updated>2024-01-24T13:55:28Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Installing the Apache Tomcat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:How_To]]&lt;br /&gt;
[[Category:Fusion Registry Install]]&lt;br /&gt;
=Overview=&lt;br /&gt;
Fusion Registry Core, Fusion Edge Server and other modules are Java applications which run under a Java Web Application Server. &lt;br /&gt;
&lt;br /&gt;
A number of different open source and commerical options are available, but this guide explains how to install the free to use Apache Tomcat.&lt;br /&gt;
&lt;br /&gt;
=Installing the Apache Tomcat=&lt;br /&gt;
Download and install [http://tomcat.apache.org/ Apache Tomcat].&lt;br /&gt;
&lt;br /&gt;
Choose either Tomcat 8.5 or 9.0. The Fusion Registry does not work with version 10 or later of Apache Tomcat.&lt;br /&gt;
&lt;br /&gt;
=Set the Java runtime options=&lt;br /&gt;
&lt;br /&gt;
Tomcat needs to be configured to set certain Java options when it starts. The most important is to set the amount of memory that the Fusion Registry service will be allocated. A minimum of 4GB is recommended and the following explains how to do that.&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
* Go to &amp;lt;code&amp;gt;tomcat\bin&amp;lt;/code&amp;gt; folder&lt;br /&gt;
* Create a file called &amp;lt;code&amp;gt;setenv.bat&amp;lt;/code&amp;gt; with the following content&lt;br /&gt;
 set &amp;quot;JAVA_OPTS=-Xmx4G&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
* Go to the &amp;lt;code&amp;gt;tomcat/bin&amp;lt;/code&amp;gt; folder&lt;br /&gt;
* Create a file called &amp;lt;code&amp;gt;setenv.sh&amp;lt;/code&amp;gt; with the following content (it does not need to have 'x' executable permissions, but must be readable 'r')&lt;br /&gt;
 export JAVA_OPTS=&amp;quot;-Xmx4G&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== GMT ====&lt;br /&gt;
It is also reccomended to set the timezone to GMT&lt;br /&gt;
&lt;br /&gt;
 -Duser.timezone=GMT&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
 set &amp;quot;JAVA_OPTS=-Xmx4G -Duser.timezone=GMT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Special purpose Java runtime options====&lt;br /&gt;
Other Java runtime options that can be set for special purposes and are explained in [[Tomcat setenv file]] article.&lt;br /&gt;
&lt;br /&gt;
=Changing the Tomcat port number (optional)=&lt;br /&gt;
Tomcat's default configuration is to serve its applications on port 8080. That means, by default, the Fusion Registry user interface will be available on the following URL:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;http://localhost:8080/FusionRegistry&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will need to choose a different port if other software on the machine is already using port 8080.&lt;br /&gt;
&lt;br /&gt;
* Go to &amp;lt;code&amp;gt;tomcat/conf&amp;lt;/code&amp;gt; folder&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;server.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Search &amp;quot;Connector port&amp;quot;&lt;br /&gt;
* Replace &amp;quot;8080&amp;quot; by your port number (8081 for instance)&lt;br /&gt;
* Restart tomcat server.&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6639</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6639"/>
		<updated>2024-01-18T17:08:13Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:300px;text-align:left;&amp;quot; | Format Value !! style=&amp;quot;width:300px;text-align:left;&amp;quot;  | Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-series || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-ts || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-refresh || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6638</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6638"/>
		<updated>2024-01-18T17:08:05Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:300px;text-align:left;&amp;quot; | Format Value !! style=&amp;quot;width:150px;text-align:left;&amp;quot;  | Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-series || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-ts || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-refresh || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6637</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6637"/>
		<updated>2024-01-18T17:07:48Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:300px;text-align:left;&amp;quot; | Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-series || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-ts || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-refresh || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6636</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6636"/>
		<updated>2024-01-18T17:07:15Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:300px;&amp;quot; | Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-series || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-ts || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-refresh || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6635</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6635"/>
		<updated>2024-01-18T17:07:06Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; | Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-series || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-ts || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-refresh || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6634</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6634"/>
		<updated>2024-01-18T17:06:54Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:200px;&amp;quot; Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-series || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-ts || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-refresh || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6633</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6633"/>
		<updated>2024-01-18T17:05:19Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel-table || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6632</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6632"/>
		<updated>2024-01-18T17:04:55Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Table request from Fusion Data Browser&amp;gt;  || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[:Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6631</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6631"/>
		<updated>2024-01-18T17:03:31Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Table request from Fusion Data Browser&amp;gt;  || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [Category:SdmxDataFormat|here].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6630</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6630"/>
		<updated>2024-01-18T17:03:23Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Table request from Fusion Data Browser&amp;gt;  || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[Category:SdmxDataFormat|here]].&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6629</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6629"/>
		<updated>2024-01-18T17:02:43Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Table request from Fusion Data Browser&amp;gt;  || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More detail of the response formats can be found [[Category:SdmxDataFormat | here ]]&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6628</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6628"/>
		<updated>2024-01-18T17:02:22Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Table request from Fusion Data Browser&amp;gt;  || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A list of the response formats can be found at [[Category:SdmxDataFormat| here ]]&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6627</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6627"/>
		<updated>2024-01-18T16:53:13Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Table request from Fusion Data Browser&amp;gt;  || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Series request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel TS request from Fusion Data Browser&amp;gt; || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;Excel Refreshable request from Fusion Data Browser&amp;gt; || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6626</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6626"/>
		<updated>2024-01-18T16:32:04Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists what will be output in the Audit file for each of the specified response formats (usually specified by format= in the request URL):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6625</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6625"/>
		<updated>2024-01-18T16:31:05Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists the response format for each of the specified format values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;sdmx-csv-1.0.0&amp;lt;br&amp;gt;csv&amp;lt;br&amp;gt;csv-ts || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6624</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6624"/>
		<updated>2024-01-18T16:30:44Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists the response format for each of the specified format values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0&amp;lt;br&amp;gt;a || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6623</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6623"/>
		<updated>2024-01-18T16:29:51Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists the response format for each of the specified format values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0 || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;Excel Refreshable&amp;quot;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6622</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6622"/>
		<updated>2024-01-18T16:29:38Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists the response format for each of the specified format values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0 || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-series&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;fusion-excel-ts&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ?? || &amp;quot;Excel Refreshable&amp;quot;|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6621</id>
		<title>Fusion Edge Server Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.sdmxcloud.org/index.php?title=Fusion_Edge_Server_Audit&amp;diff=6621"/>
		<updated>2024-01-18T16:29:14Z</updated>

		<summary type="html">&lt;p&gt;Plazarou: /* Response Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fusion Edge Server]]&lt;br /&gt;
[[Category:FESInstall]]&lt;br /&gt;
This page explains details the Audit capabilities of Fusion Edge Server.&lt;br /&gt;
&lt;br /&gt;
== Audit File==&lt;br /&gt;
&lt;br /&gt;
All Audit information from Fusion Edge Server is written to Audit files which are located in the &amp;quot;Audit&amp;quot; sub-folder of your [[Fusion_Edge_Server_Directory|Edge Server Directory]]. Audit files are named according to the format:&lt;br /&gt;
  EdgeServerAudit_&amp;lt;launch time&amp;gt;_&amp;lt;log index&amp;gt;.json&lt;br /&gt;
For example: &lt;br /&gt;
  EdgeServerAudit_1704067199000_1.json&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;launch time&amp;quot; value represents the time when the Edhe Server was started. However, this value is expressed as a lengthy numerical figure, indicating the time in milliseconds since 1970.&lt;br /&gt;
&lt;br /&gt;
Audit information will be written to this file until either the Edge Server is terminated or the file reaches the file limit of 10Mb in size. If the file limit is reached, a new file is created with the next incremental Log Index value. Audit files that are actively being written to may be &amp;quot;locked&amp;quot; by your Operating System until either the Edge Server is terminated or a new audit file is started.&lt;br /&gt;
&lt;br /&gt;
Each Audit file contains JSON, but this is not formatted for ease of reaability. Until the file is &amp;quot;completed&amp;quot;, either by termination of the Edge Server, or by a new log file being started, a final closing brace character &amp;quot;]&amp;quot; is required to make the file contents become valid JSON.  So you may find that if you wish to look at the currently being written Audit file you have to:&lt;br /&gt;
* Create a copy of the Audit file &lt;br /&gt;
* Open this copy in the editor of your choice (for example Notepad++)&lt;br /&gt;
* Add a final &amp;quot;]&amp;quot; character to the end of the file&lt;br /&gt;
* Format the JSON for readability/&lt;br /&gt;
&lt;br /&gt;
== Disabling Audit ==&lt;br /&gt;
Auditing can be disabled by modifying the Edge Server properties file and adding the entry:&lt;br /&gt;
  audit.disabled=true&lt;br /&gt;
&lt;br /&gt;
See the [[Fusion_Edge_Server_Properties|properties page]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Contents of the Audit File ==&lt;br /&gt;
It is necessary to have a basic understanding of the JSON format to understand how to parse the Audit file. The file contains a JSON array of items. Each item in the array is a JSON Object.  Each JSON Object is identified by &amp;quot;curly braces&amp;quot; { and }. Some JSON objects contain other JSON objects (e.g. &amp;quot;properties&amp;quot; in the example below). Each item in the highest level JSON array, represents a unique audit event in the Edge Server. The following shows an example of one such event:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;e3de1d84-2413-4b7a-ae1d-754ad38d3a9f&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-8&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1699023147303,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1699023147342,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 39,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;a58a00a880f5f938:4d097009:18b95a67fb4:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.14&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.7.2.0.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
        &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;,&lt;br /&gt;
        &amp;quot;c[REF_AREA]&amp;quot;: &amp;quot;BE&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
        &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
        &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0&amp;quot;,&lt;br /&gt;
        &amp;quot;accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&amp;quot;,&lt;br /&gt;
        &amp;quot;accept-language&amp;quot;: &amp;quot;en-GB,en;q=0.5&amp;quot;,&lt;br /&gt;
        &amp;quot;connection&amp;quot;: &amp;quot;keep-alive&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above JSON can be described in the following manner, where the items in brackets indicate the field that is being referred to.&lt;br /&gt;
&lt;br /&gt;
A GET event (''&amp;quot;event_type&amp;quot;'') was performed on on Friday, 3 November 2023 14:52:27.303 GMT (''&amp;quot;process_start&amp;quot;'' of 1699023147303 ) by user &amp;quot;guest&amp;quot; (''&amp;quot;username&amp;quot;''). This process completed succesfully (''&amp;quot;HttpStatus&amp;quot;'' of 200) and was a request against the Dataflow BIS:BIS_CBPOL(1.0) (''&amp;quot;PathInfo&amp;quot;''). The query was further constrained by the Frequency of &amp;quot;A&amp;quot; and Reference Area of &amp;quot;BE&amp;quot; (''&amp;quot;QueryParameters&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
There is more information contained in this one JSON object, but that allows us to get a quick overview of what the request was for.&lt;br /&gt;
&lt;br /&gt;
=== Child events ===&lt;br /&gt;
Some audit events have a parent UID (element: &amp;quot;parent&amp;quot;). This shows that this audit event was created from the UID referenced in the &amp;quot;parent&amp;quot; value.&lt;br /&gt;
&lt;br /&gt;
=== Elements ===&lt;br /&gt;
The following describes each of the elements that can be found in a JSON Object:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''uid''' || The Unique Identifier (UID) of the event&lt;br /&gt;
|-&lt;br /&gt;
| '''process_id''' || The type of process requested. Such values are &amp;quot;APPLICATION_START&amp;quot; (the edge server start event), &amp;quot;SDMX_GET&amp;quot; (??), &amp;quot;REST_API&amp;quot; (a query for structures or data) &lt;br /&gt;
|-&lt;br /&gt;
| '''thread''' || The internal thread namethat this ran on within the Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''event_type''' || The HTTP Event Type that was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''username''' || The identity of the user that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''process_start''' || The start time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''process_end''' || The end time (in milliseconds since 1970) that this request was performed&lt;br /&gt;
|-&lt;br /&gt;
| '''duration''' || The total time (in milliseconds) to complete the request&lt;br /&gt;
|-&lt;br /&gt;
| '''status''' || The returned HTTP status&lt;br /&gt;
|-&lt;br /&gt;
| '''vmid''' || The VMID of the system running the request&lt;br /&gt;
|-&lt;br /&gt;
| '''machine_id''' || The identity of the machine that was running the Edge Server that performed this request&lt;br /&gt;
|-&lt;br /&gt;
| '''software_version''' || The version of the software of Fusion Edge Server&lt;br /&gt;
|-&lt;br /&gt;
| '''properties''' || A JSON Object containing parameters submitted in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''QueryParameters''' || A JSON Object containing keys and values that were in the request (e.g. Key: &amp;quot;FREQ&amp;quot; and value &amp;quot;A&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpHeaders''' || A JSON Object containing elements that were present in the header request&lt;br /&gt;
|-&lt;br /&gt;
| '''IP''' || The IP of the originating request&lt;br /&gt;
|-&lt;br /&gt;
| '''Path''' || Part of the request's URL and can be used to identify various Web Services. E.g. it could be: &amp;quot;/sdmx/v2&amp;quot; showing a version 2 SDMX request, or &amp;quot;/ws/public/sdmxapi/rest&amp;quot; showing a request to the version 1 API&lt;br /&gt;
|-&lt;br /&gt;
| '''PathInfo''' ||  The extra information added to the &amp;quot;path&amp;quot;. This identifies individual structures or datasets being requested.&lt;br /&gt;
|-&lt;br /&gt;
| '''Locale''' || The locale used in the request&lt;br /&gt;
|-&lt;br /&gt;
| '''HttpStatus''' || The HTTP Status of the request&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specific Events in the Audit File ==&lt;br /&gt;
When specific requests are made to the Edge Server, the Audit file will contain specific elements. This section details what to expect in the Audit file when particular events occur.&lt;br /&gt;
&lt;br /&gt;
=== Startup Information ===&lt;br /&gt;
&lt;br /&gt;
On succesfull start up of Fusion Edge Server, 9 events will be written to the Audit Log. These can be identified by the Process Ids of &amp;quot;LOAD_PROPERTIES&amp;quot;, &amp;quot;APPLICATION_START&amp;quot; and &amp;quot;ENVIRONMENT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first event has a Process Id of &amp;quot;LOAD_PROPERTIES&amp;quot;. This states that the Edge Server properties file has successfully loaded.&lt;br /&gt;
&lt;br /&gt;
Next (although will likely appear last in the list of 9) is a Process Id of &amp;quot;APPLICATION_START&amp;quot; which contains all of the properties of the system.  This spawns 5 child processes, all the with Process Ids of &amp;quot;APPLICATION_START&amp;quot;. Each of these children has a property object with a single class within it. These classes are: SpringBeansContainer; EdgeServerAuditPersistenceManager; EdgeServerLedgerReaderManager; AuditEventManager; SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
The process &amp;quot;EdgeServerLedgerReaderManager&amp;quot; will also launch a child process which has a Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;UPDATE&amp;quot;. This in turn launches a child process with Process Id of &amp;quot;ENVIRONMENT&amp;quot; and an &amp;quot;event_type&amp;quot; of &amp;quot;LIVE&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Since child processes are written before their parents, the logical tree structure of the audit events is as follows. The number at the start of the line shows the likely order it will be written to the Audit file:&lt;br /&gt;
&lt;br /&gt;
  1. process_id: LOAD_PROPERTIES&lt;br /&gt;
  9. process_id: APPLICATION_START  - with all the system props&lt;br /&gt;
    2. process_id: APPLICATION_START  - Class: SpringBeansContainer&lt;br /&gt;
    3. process_id: APPLICATION_START  - Class: EdgeServerAuditPersistenceManager&lt;br /&gt;
    6. process_id: APPLICATION_START  - Class: EdgeServerLedgerReaderManager&lt;br /&gt;
      5. process_id: ENVIRONMENT    event_type: UPDATE&lt;br /&gt;
        4. process_id: ENVIRONMENT  event_type: LIVE&lt;br /&gt;
    7. process_id: APPLICATION_START  - Class: AuditEventManager&lt;br /&gt;
    8. process_id: APPLICATION_START  - Class: SDMXCacheManager&lt;br /&gt;
&lt;br /&gt;
=== Data Request === &lt;br /&gt;
&lt;br /&gt;
When a request for Data is performed, a single audit event is created with the following elements:&lt;br /&gt;
&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the dataflow requested such as /data/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The status element will likely have a value of &amp;quot;200&amp;quot;, indicating the request was handled correctly. However to determine if the request returned data or not, this needs to be checked by the element &amp;quot;HttpStatus&amp;quot; which is located within the &amp;quot;properties&amp;quot; element. If this value is &amp;quot;404&amp;quot; then no data was returned for the request.&lt;br /&gt;
&lt;br /&gt;
The following, truncated, audit event shows a successful request (status and HttpStatus of 200):&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;7dd76de6-895c-4f53-bb35-18519b85580e&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-6&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705568446233,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705568450320,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 4087,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;vmid&amp;quot;: &amp;quot;27bece96ce048b52:9c501c3:18d194af243:-8000&amp;quot;,&lt;br /&gt;
    &amp;quot;machine_id&amp;quot;: &amp;quot;DESKTOP-DSTGA0Q/192.168.1.16&amp;quot;,&lt;br /&gt;
    &amp;quot;software_version&amp;quot;: &amp;quot;4.8.2&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;A&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
          &amp;quot;host&amp;quot;: &amp;quot;localhost:8084&amp;quot;,&lt;br /&gt;
          &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;,&lt;br /&gt;
          ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 200&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The following (truncated) event shows a request which returned no data. Note that the differences are the UID, properties (the requested parameters) and the HttpStatus of 404:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;0e55c832-8844-46a5-9fa5-6aa6875e66b6&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;REST_API&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;c[FREQ]&amp;quot;: &amp;quot;ZZZ&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ...&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;IP&amp;quot;: &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
      &amp;quot;Path&amp;quot;: &amp;quot;/sdmx/v2&amp;quot;,&lt;br /&gt;
      &amp;quot;PathInfo&amp;quot;: &amp;quot;/data/dataflow/BIS/BIS_CBPOL/1.0&amp;quot;,&lt;br /&gt;
      &amp;quot;Locale&amp;quot;: &amp;quot;en_GB&amp;quot;,&lt;br /&gt;
      &amp;quot;HttpStatus&amp;quot;: 404&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
If the request contain a ResponseFormat request (e.g. ?format=sdmx-json ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;sdmx-json v2.0.0&amp;quot;. This child event may look like this and is identifiable from the &amp;quot;parent&amp;quot; element which has the UID of the event that spawned it:&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;uid&amp;quot;: &amp;quot;84f98074-0176-48a2-95ba-95d3b1465aad&amp;quot;,&lt;br /&gt;
    &amp;quot;parent&amp;quot;: &amp;quot;7609d4fb-1583-4440-8a3e-4ec76c324455&amp;quot;,&lt;br /&gt;
    &amp;quot;process_id&amp;quot;: &amp;quot;SDMX_GET&amp;quot;,&lt;br /&gt;
    &amp;quot;thread&amp;quot;: &amp;quot;http-nio-8084-exec-7&amp;quot;,&lt;br /&gt;
    &amp;quot;event_type&amp;quot;: &amp;quot;structure&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;guest&amp;quot;,&lt;br /&gt;
    &amp;quot;process_start&amp;quot;: 1705527795701,&lt;br /&gt;
    &amp;quot;process_end&amp;quot;: 1705527795798,&lt;br /&gt;
    &amp;quot;duration&amp;quot;: 97,&lt;br /&gt;
    &amp;quot;status&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;Cache&amp;quot;: &amp;quot;miss&amp;quot;,&lt;br /&gt;
      &amp;quot;ResponseFormat&amp;quot;: &amp;quot;sdmx-json v2.0.0&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Structure Request ===&lt;br /&gt;
&lt;br /&gt;
When a request for Structural Metadata is performed, a single audit event is created with the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public/sdmxapi/rest or /sdmx/v2&lt;br /&gt;
* PathInfo: the structure requested such as /structure/agencyscheme/all/all&lt;br /&gt;
&lt;br /&gt;
This audit event is extremely similar to the data request, and likewise if no information was returned, the &amp;quot;httpstatus&amp;quot; will be 404, and if the request contain a ResponseFormat request (e.g. ?format=sdmx-3.0 ) then a child audit event will also be written which contains the &amp;quot;ResponseFormat&amp;quot; in a more explicit format. For example: &amp;quot;SDMX_V3_STRUCTURE_DOCUMENT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Availability Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, availability requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /sdmx/v2&lt;br /&gt;
* PathInfo: /availability followed by the dataflow being queried.  For example:  /availability/dataflow/BIS/BIS_CBPOL/1.0&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;mode&amp;quot; will also contain the value &amp;quot;available&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search Request from Fusion Data Browser ===&lt;br /&gt;
&lt;br /&gt;
If the Fusion Data Browser is being used against the Fusion Edge Server, search requests may be audited. These can be identified by the following elements:&lt;br /&gt;
* process_id: REST_API&lt;br /&gt;
* event_type: GET&lt;br /&gt;
* Path: /ws/public&lt;br /&gt;
* PathInfo: /datasearch&lt;br /&gt;
&lt;br /&gt;
The field: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;QueryParameters&amp;quot; -&amp;gt; &amp;quot;query&amp;quot; will contain the search value.  Since this requested was created by the Data Browser, the Http Header, &amp;quot;referer&amp;quot; field will state the location of the Data Browser.&lt;br /&gt;
&lt;br /&gt;
Since the search field of Fusion Data Browser performs searches as the user types, you may see multiple similiar or sub-searches when a user makes a single search. For example if the user wants to search for &amp;quot;CREDIT&amp;quot;, you may see audit entries for searches for &amp;quot;C&amp;quot;, &amp;quot;CR&amp;quot;, &amp;quot;CRE&amp;quot;, &amp;quot;CRED&amp;quot;, &amp;quot;CREDI&amp;quot; and &amp;quot;CREDIT&amp;quot; as the user types.&lt;br /&gt;
&lt;br /&gt;
== Distinguishing Between Different Request Mechanisms ==&lt;br /&gt;
Requests to the Edge server can come from a number of different mechanisms.  For example a request from a Web Browser, a command-line tool such as curl, or the Fusion Data Browser.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;user-agent&amp;quot; field within the &amp;quot;HttpHeaders&amp;quot; object can help here.  Some tools, such as curl, supply an obvious distinct &amp;quot;user-agent&amp;quot;.  The following snippet shows a request that has come from curl&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      &amp;quot;host&amp;quot;: &amp;quot;MyTestEdgeServer:8084&amp;quot;,&lt;br /&gt;
      &amp;quot;user-agent&amp;quot;: &amp;quot;curl/8.4.0&amp;quot;,&lt;br /&gt;
      &amp;quot;accept&amp;quot;: &amp;quot;*/*&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
Other values you may encounter depend upoin the user's configuration.  The following is the user-agent value for Firefox v121.0 running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And the following is the user-agent for Microsoft Edge, running on Windows 10:&lt;br /&gt;
  &amp;quot;user-agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
For the Fusion Data Browser, this identifies itself in a slightly different manner.  There is a referer field under the objects: &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;HttpHeaders&amp;quot;, which shows that the request originated from the Fusion Data Browser. The value in the &amp;quot;referer&amp;quot; field will contain the home location of the Fusion Data Browser:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;QueryParameters&amp;quot;: {&lt;br /&gt;
      &amp;quot;locale&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;saveAs&amp;quot;: &amp;quot;BIS_CBPOL&amp;quot;,&lt;br /&gt;
      &amp;quot;format&amp;quot;: &amp;quot;csv&amp;quot;,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: &amp;quot;both&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;HttpHeaders&amp;quot;: {&lt;br /&gt;
      ..&lt;br /&gt;
      &amp;quot;referer&amp;quot;: &amp;quot;http://localhost:8084/FusionDataBrowser/&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Response Formats ==&lt;br /&gt;
When a request format is specified on a data request, a child audit event will be created. Note this will be output before the parent audit event. The child event contains a value under &amp;quot;properties&amp;quot; -&amp;gt; &amp;quot;ResponseFormat&amp;quot; to state what the output was.&lt;br /&gt;
&lt;br /&gt;
The following table lists the response format for each of the specified format values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Format Value !! Output String&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.1 || &amp;quot;Structure Specific (Compact) 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.1 || &amp;quot;Generic 2.1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-compact-2.0 || &amp;quot;Structure Specific (Compact) 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-generic-2.0 || &amp;quot;Generic 2.0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-csv-2.0.0 || &amp;quot;csv&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-json || &amp;quot;SDMX-JSON&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| sdmx-edi || &amp;quot;SDMX-EDI&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| excel || &amp;quot;Excel (XLSX)&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| ?? || &amp;quot;fusion-excel-table&amp;quot; |- &lt;br /&gt;
| ?? || &amp;quot;fusion-excel-series&amp;quot; |- &lt;br /&gt;
| ?? || &amp;quot;fusion-excel-ts&amp;quot; |- &lt;br /&gt;
| ?? || &amp;quot;Excel Refreshable&amp;quot; |- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plazarou</name></author>
		
	</entry>
</feed>