Skip to content

Commit ec674b2

Browse files
author
dotnetprog
committed
fix to decode and encode as utf8 with html decode utility.
fixing some schema validation rules fixing some value converters
1 parent 4efe89c commit ec674b2

File tree

7 files changed

+18
-9
lines changed

7 files changed

+18
-9
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ Custom .net cli tool to import configuration data into a dataverse environment
44

55
## Todo list:
66

7-
- Functionnal testing for self hierarchy import jobs.
8-
- Add support to map users to owner.
7+
- Functionnal testing for self hierarchy import jobs.?
8+
- Add support for special characters. ?
9+
- <del> Add support to map users to owner.</del>
910
- Add support to map created on to OverrideCreatedOn.
1011
- Refactor Schema validations into multiple validation rules
1112
- Add configuration for tool reporting

src/Dataverse.ConfigurationMigrationTool.Console/Dataverse.ConfigurationMigrationTool.Console/Features/Import/ImportTaskProcessorService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ private UpsertRequest BuildUpsertRequest(EntityMetadata entityMD, EntityImport e
178178
foreach (var field in record.Field)
179179
{
180180
var attrMD = entityMD.Attributes.FirstOrDefault(a => a.LogicalName == field.Name);
181-
if ((attrMD.IsValidForCreate != true && attrMD.LogicalName != "statecode") || attrMD.IsValidForUpdate != true) continue;
181+
if ((attrMD.IsValidForCreate != true && attrMD.LogicalName != "statecode")
182+
|| attrMD.IsValidForUpdate != true ||
183+
attrMD.AttributeType == AttributeTypeCode.Owner) continue;
182184
entity[field.Name] = _dataverseValueConverter.Convert(attrMD, field);
183185
}
184186
return new UpsertRequest

src/Dataverse.ConfigurationMigrationTool.Console/Dataverse.ConfigurationMigrationTool.Console/Features/Import/Mappers/FieldSchemaToAttributeTypeMapper.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public class FieldSchemaToAttributeTypeMapper : IMapper<FieldSchema, AttributeTy
2020
return AttributeTypeCode.Customer;
2121
}
2222
return AttributeTypeCode.Lookup;
23+
case "owner":
24+
return AttributeTypeCode.Owner;
2325
case "state":
2426
return AttributeTypeCode.State;
2527
case "status":
@@ -30,6 +32,8 @@ public class FieldSchemaToAttributeTypeMapper : IMapper<FieldSchema, AttributeTy
3032
return AttributeTypeCode.Picklist;
3133
case "number":
3234
return AttributeTypeCode.Integer;
35+
case "bigint":
36+
return AttributeTypeCode.BigInt;
3337
case "float":
3438
return AttributeTypeCode.Double;
3539
case "bool":

src/Dataverse.ConfigurationMigrationTool.Console/Dataverse.ConfigurationMigrationTool.Console/Features/Import/Validators/SchemaValidator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public async Task<ValidationResult> Validate(ImportSchema value)
5858
});
5959
continue;
6060
}
61-
if (attributeMetadata is LookupAttributeMetadata lookupMD && !lookupMD.Targets.AreEnumerablesEqualIgnoreOrder(fieldSchema.LookupType?.Split('|') ?? Array.Empty<string>()))
61+
if (attributeMetadata is LookupAttributeMetadata lookupMD && lookupMD.AttributeType != AttributeTypeCode.Owner && !lookupMD.Targets.AreEnumerablesEqualIgnoreOrder(fieldSchema.LookupType?.Split('|') ?? Array.Empty<string>()))
6262
{
6363
failures.Add(new ValidationFailure
6464
{

src/Dataverse.ConfigurationMigrationTool.Console/Dataverse.ConfigurationMigrationTool.Console/Features/Import/ValueConverters/DataverseValueConverter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Dataverse.ConfigurationMigrationTool.Console.Features.Import.Model;
22
using Microsoft.Xrm.Sdk;
33
using Microsoft.Xrm.Sdk.Metadata;
4+
using System.Web;
45

56
namespace Dataverse.ConfigurationMigrationTool.Console.Features.Import.ValueConverters
67
{
@@ -25,7 +26,7 @@ public object Convert(AttributeMetadata attributeMetadata, Field field)
2526
switch (attributeMetadata.AttributeType.Value)
2627
{
2728
case AttributeTypeCode.String:
28-
return value;
29+
return string.IsNullOrWhiteSpace(value) ? value : HttpUtility.HtmlDecode(value);
2930
case AttributeTypeCode.Picklist:
3031
case AttributeTypeCode.State:
3132
case AttributeTypeCode.Status:

src/Dataverse.ConfigurationMigrationTool.Console/Dataverse.ConfigurationMigrationTool.Console/Services/Filesystem/XmlFileDataReader.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
using System.Xml.Serialization;
1+
using System.Text;
2+
using System.Xml.Serialization;
23

34
namespace Dataverse.ConfigurationMigrationTool.Console.Services.Filesystem
45
{
56
public class XmlFileDataReader : IFileDataReader
67
{
78
public async Task<T> ReadAsync<T>(string path)
89
{
9-
var xml = await File.ReadAllTextAsync(path);
10+
var xml = await File.ReadAllTextAsync(path, Encoding.UTF8);
1011
XmlSerializer serializer = new XmlSerializer(typeof(T));
1112
using (StringReader reader = new StringReader(xml))
1213
{

src/Dataverse.ConfigurationMigrationTool.Console/Dataverse.ConfigurationMigrationTool.Console/appsettings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
},
77
"Dataverse": {
88
"MaxThreadCount": 100,
9-
"MaxDegreeOfParallism": 10,
10-
"BatchSize": 10
9+
"MaxDegreeOfParallism": 1,
10+
"BatchSize": 1
1111
}
1212
}

0 commit comments

Comments
 (0)