Review remaining Excel upload error messages (the ones recently exposed in the localisations)
Review the following new error messages in the localisation (DotStat.Config/config/localization.json):
# Set of source error messages related to data upload\transfer
"UnknownAttributeAttachmentLevel": "Unknown attribute attachment level at attribute {0}: {1}", "AttributeInvalidDbId": "Attribute [{0}] has invalid DB Id: {1}", "CodelistInvalidDbId": "Codelist [{0}] has invalid DB Id: {1}", "DimensionInvalidDbId": "Dimension [{0}] has invalid DB Id: {1}", "NoDSDMappedComponent": "No DSD mapped to component", "MultipleValuesForDatasetAttribute": "Multiple values ({0} vs {1}) for the same Dataset attribute {2}", "MultipleValuesForDimensionGroupAttribute": "Multiple values ({0} vs {1}) for the same Dimension/Group attribute {2}", "MissingDsdForAttribute": "The DSD referenced by the attribute {0} was not found.", "MissingGroupForAttribute": "The Group ({attribute.AttachmentGroup}) is missing in the attribute {attribute.GetFullIdPath(true)}", "NotASqlManagementRepository": "Management repository is not a SqlManagementRepository in SqlAttributeRepository.GetDatasetAttributes.",
"CopyWithMultipleDbCredentials": "Copy to one database to other with different user credentials is not yet supported ([{0}] -> [{1}])",
"UnknownComponentType": "Unknown component type",
"ComponentNotFound": "Component not found in Management DB: {0}, DSD: {1}",
"DsdNotInitialized": "DSD {0} not initialized but skipped at dataflow [{1}]",
"ArtefactTypeNotRecognized": "Artefact type not recognized {0}",
"NoDimensionFound": "No dimension found with code {0}",
"NoDimensionFoundInManagementDb": "Dimension not found in management db: {0}",
"IncorrectArtefactType": "Incorrect artefact type",
"DsdNotSet": "DSD for DF not set",
"ArtefactNotFoundInManagementDb": "Artefact not found in Management DB: {0}:{1}({2}), Type: {3}",
"EmptyCodelist": "Codelist is empty",
"DsdNotFound": "DSD: {dsd.AgencyId}:{dsd.Code}:{dsd.Version} not found in the dissemination database",
"DataflowParameterWithoutDsd": "Dataflow parameter [{0}] has no dsd",
"NoLiveOrPITVersion": "This DSD/Dataflow does not have defined a Live nor a Point in Time version of the data.",
"NonExistingPITVersion": "This DSD/Dataflow does not have defined a Point In Time version of the data",
"NonExistingLiveVersion": "This DSD/Dataflow does not have defined a Live version of the data",
"PITReleased": "The Point In Time version for this DSD/Dataflow was already released",
"PITNotReleased": "The Point In Time version for this DSD/Dataflow has not yet been released",
"NoRestoringVersion": "This DSD/Dataflow does not have defined a restoration version",
"MismatchTargetVersion": "The target data version of parameter DSD is not equal to data version in the transaction: {0} != {1}",
"CodelistNotDefined": "The codelist has not been defined.",
"WrongSdmxVersionFormat": "The Sdmx version has a wrong format {version}",
"NotASdmxVersionObject": "Object is not SdmxVersion.",
"DSDNotFoundBySdmxParser": "No DSD found by SdmxParser while parsing sdmxObjects.",
"DataflowNotFoundBySdmxParser": "No Dataflow found by SdmxParser while parsing sdmxObjects.",
"NoCodelistRepresentation": "Dimension [{0}] has no codelist representation",
"NoDataflowReferenceInputDataset": "Not supported: The dataset header of the input SDMX message does not contain a structure reference to a dataflow.",
"NoValueSetForDsdLiveVersion": "No value set for dsd.LiveVersion during application of PIT release.",
"TargetVersionInDBChanged": "DB Target version of transaction targeting [{0}] release changed to [{1}] after applying previous (soft) PIT release active since {2}.",
"FileNotFound": "File [{0}] not found",
"JsonFormatNotSupported": "Json reader needs implementation in SdmxSource library",
"ExtensionNotSupported": "File extension [{0}] not implemented",
"ExcelMapperFieldNotFound": "The field {0} could not be found in the data source\nPlease make sure the data source is compatible with the StatWorks dataset or define an appropriate mapping",
"ExcelMapperSourceMappingNotConsistent": "The mapping source is not consistent with the Mapper definition",
"ExcelMapperTargetMappingNotConsistent": "The mapping target is not consistent with the Mapper definition",
"ExcelMapperInvalidOrDuplicate": "Invalid or duplicate Matching pair detected: source [{0}]: target [{1}]",
"ExcelMapperUnmatchingName": "The un-matching name [{0}] must exist on both source and the target",
"ExcelMapperDuplicateColumnsInSource": "The mapping source contains duplicate columns: {0}",
"ExcelMapperDuplicateColumnsInTarget": "The mapping target contains duplicate columns: {0}",
"ExcelMapperSourceNotConsistentWithDefinition": "The mapping source is not consistent with the Mapper definition",
"ExcelMapperTargetNotConsistentWithDefinition": "The mapping target is not consistent with the Mapper definition",
"ExcelMapperSourceEmptyColumns": "The mapping source column names must not be empty",
"ExcelMapperTargetEmptyColumns": "The mapping target column names must not be empty",
"ExcelMapperTargetTemplateSize": "The target template size much match the target's size",
"V8MapperWrongInputArray": "Input array has a wrong number of items {0}/{1}",
"V8MapperNullAttribute": "The attribute code is could not be found in the EDD file.",
"StandardSWMapperMapAlreadyDefined": "The mapping for the pair {0} -> {1} has already been defined",
"StandardSWMapperDimensionNotDefinedTarget": "The dimension {0} is not defined in the list of target dimensions",
"StandardSWMapperDimensionNotDefinedSource": "The dimension {0} is not defined in the list of source dimensions",
"StandardSWMapperDimensionsAlreadyDefined": "A fixed member for the dimension {0} has already been specified.",
"StandardSWMapperUnmatchingDimension": "The un-matching dimension {0} is not defined in the list of source or target dimensions",
"StandardMapperFieldNotInSource": "The field {0} does not exist in the source dataset",
"StandardMapperFieldNotInDataflow": "Dataflow {0}: value field name {1} is not among its column",
"ExcelReaderInvalidCellReferenceInSource": "Invalid cell reference detected for top-left coordinate: {0}, Source: {1}",
"ExcelReaderInvalidCellExclusion": "Invalid cell exclusion expression detected: {0}, Source: {1}",
"ExcelReaderCellNotInSheet": "The cell address {0} and the given sheet name {1} does not match.",
"ExcelReaderInvalidCellReference": "The cell reference {0} is not a valid excel address.",
"ExcelWorkbookNotLocated": "The workbook {0} cannot be located.",
"ExcelNoWorkSheets": "The workbook {0} does not have any worksheets",
"ExcelCellNotLocated": "The cell {0}!{1} cannot be located in {2}",
"ExcelSheetNotLocated": "The sheet {0} cannot be located in {1}",
"ExcelNullDatasetAttribute": "Current dataset attribute is null",
"ExcelUnknownIndex": "Unknown index",
"ExcelInvalidDataValue": "Invalid data value detected at {0} for {1}",
"ExcelDataSourceNotSet": "The Excel data source must be set before this operation",
"ExcelNoCoordinateTranslators": "The provided collection does not contain any coordinate translators",
"ExcelMultipleCoordinateMappingDescriptions": "There are multiple coordinate mapping descriptions with the following names: {0}\nPlease use unique names",
"ExcelWorksheetRegex": "There was an error parsing worksheet regex: {0}, Expression: {1}, Source: {2}",
"ExcelExpressionParcingError": "Error in parsing expression: {0}, Expression: {1}, Source: {2}",
"ExcelNoLeftCell": "There exists no left cell to {0}",
"ExcelNoAboveCell": "There exists no cell above to {0}",
"ExcelRowPositiveValue": "Cell(): The row value must be a positive number",
"ExcelColumnPositiveValue": "Cell(): The column value must be a positive number",
"ExcelColumnLetterValue": "Cell(): The column value must be a letter combination like 'A' 'AX'",
"ExcelCellNotation": "Cell(): The coordinates must be specified using excel cell address notation like 'A10' 'AX20' 'R5C10'",
"ExcelFindFirstCellNoCellWithRangePattern": "FindFirstCell(): The sheet {0} does not contain a cell in the range {1} that matches the pattern '{2}'",
"ExcelFindLastCellNoCellWithRangePattern": "FindLastCell(): The sheet {0} does not contain a cell in the range {1} that matches the pattern '{2}'",
"ExcelFirstNonEmptyCell": "FirstNonEmptyCell(): The sheet {0} does not contain a non-empty cell in the range {1}",
"ExcelLastNonEmptyCell": "LastNonEmptyCell(): The sheet {0} does not contain a non-empty cell in the range {1}",
"ExcelWrongNameAndCondition": "Name and Condition attributes are mutually exclusive: {0} - {1}",
"ExcelMappingNameNoProvided": "The name of the mapping list must be provided",
"ExcelExternalMemberNoSpecified": "External member must be specified",
"ExcelWrongNumberOfCoordinates": "The mapping {0} -> {1} does not contain too many coordinates",
"ExcelNonmatchingFixedMemberAttribute": "The FixedMember attribute of {0} and the TargetTemplate value {1} in advanced mappings does not match",
"ExcelValueNotInExternField": "Extern field list {0} does not contain value field",
"ExcelValueNotInSourceField": "Source field list {0} does not contain value field",
"ExcelNoData": "There is no data found to iterate over",
"ExcelReaderResetNotSupported": "This reader does not support resetting",
"ExcelUnexpectedError": "An unexpected error has occured {0}:{1}",
"ExcelIndexNameNotAvailable": "Index name [{0}] already in use",
"ExcelIndexNameNotFound": "Index name [{0}] not found",
"ExcelIndexerNotLoaded": "Empty indexer cannot be loaded",
"ExcelIterationNotStarted": "Iteration not yet started",
"EddExpressionEvaluation": "Error in evaluating expression: {0}, {1}, {2}",
"EddValueOrCoordinateExpression": "{0}: At least one of value or coordinate expressions must be specified",
"EddAxisRefNotSpecified": "{0}: Axis reference expression must be specified",
"EddCannotParseAxis": "Cannot parse the axis number {0}\n.If this is meant to be an expression please add the attribute IsExpression='true' to your description {1}, Source: {2}",
"EddIntegerExpression": "The expression: {0} must evaluate to an integer value. Please make sure you use a correct function, Source: {1}",
"EddStringCollectionExpression": "The expression {0} must evaluate to either a string or a collection of strings",
"EddStringExpression": "The expression '{0}' must evaluate to a string value, Source: {1}",
"EddEmptyCellReference": "{0}: Cell reference coordinate expression must be specified",
"EddFirstActiveCellAsOwner": "First an active excel cell iterator must be set as owner",
"EddInvalidCellReference": "Invalid cell reference detected: {0}, Source: {1}",
"EddBreakdownNonEmpty": "{0}: There must be at least one breakdown expression and all of them must be non-empty",
"EddParceError": "Parse error detected: {0}, Expression: '{1}', Source: {2}",
"EddSpecifyCode": "{0}: Code must be specified",
"EddFileNotLoaded": "The EDD file {0} could not be loaded\nAn XML error detected: {1}"
Additional use case
Error "Value for dimension DIM:DotStat.Transfer.Excel.Excel.CellReference is incorrect" when uploading data using Excel/EDD
In QA, when a wrong sheet name is used in EDD mapping or dimensions are mapped incorrectly (Value instead of Coord in this case), the error returned by the transfer service is not clear enough. It says: "The value for dimension JURISDICTION:DotStat.Transfer.Excel.Excel.CellReference at observation 0 (for CSV file imports located at row 1) is incorrect. Please correct the imported data and re-submit the request."
It should have a clearer message in order to understand what exactly needs to be changed in the mapping.
Cartels_test_Multiple.xml
edd_cartels.xml
Cartel_DotstatV8__1_.xlsx
Moreover, when trying to upload textual attributes using the same pattern (used Value instead of Coord), the values of attributes wrongly become "DotStat.Transfer.Excel.Excel.CellReference".