From 12a50f91f75c954a31719d62b351ad5feb6f06c5 Mon Sep 17 00:00:00 2001 From: Ben Fidge Date: Mon, 31 Jan 2022 11:32:03 +0700 Subject: [PATCH 1/9] For AB#7649 --- .../VatLayerSearchProviderProvider.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ExternalSearch.Providers.VatLayer.Provider/VatLayerSearchProviderProvider.cs b/src/ExternalSearch.Providers.VatLayer.Provider/VatLayerSearchProviderProvider.cs index c6d1cdf..f2ea8b5 100644 --- a/src/ExternalSearch.Providers.VatLayer.Provider/VatLayerSearchProviderProvider.cs +++ b/src/ExternalSearch.Providers.VatLayer.Provider/VatLayerSearchProviderProvider.cs @@ -111,6 +111,7 @@ public override IEnumerable WebhookManagementEndpoints(IEnumerable false; public string Icon { get; } = Constants.Icon; public string Domain { get; } = Constants.Domain; public string About { get; } = Constants.About; @@ -119,4 +120,4 @@ public override IEnumerable WebhookManagementEndpoints(IEnumerable Date: Mon, 31 Jan 2022 14:28:04 +0000 Subject: [PATCH 2/9] chore: Prepare develop for 3.4 (#25) * chore: Update git version * chore: Update version numbers --- GitVersion.yml | 33 ++++++++++++++++++++++++++++----- Packages.props | 22 +++++++++------------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/GitVersion.yml b/GitVersion.yml index c0938e8..5d92a4c 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,6 +1,29 @@ -# GitVersion.yml -mode: ContinuousDelivery -next-version: 3.3 -branches: {} +mode: ContinuousDeployment +next-version: 3.4 +branches: + master: + mode: ContinuousDelivery + pull-request: + tag: pr + increment: None + develop: + tag: alpha + hotfix: + tag: useBranchName + ama: + increment: None + tracks-release-branches: false + regex: ^ama[/-] + is-release-branch: false + mode: ContinuousDeployment + track-merge-target: false + tag: ama + pre-release-weight: 30000 + prevent-increment-of-merged-branch-version: true + is-mainline: false + source-branches: + - main + - develop ignore: - sha: [] \ No newline at end of file + sha: [] + diff --git a/Packages.props b/Packages.props index 46e4fcc..1c31faf 100644 --- a/Packages.props +++ b/Packages.props @@ -1,10 +1,9 @@ - - <_ComponentHost>2.0.0 - <_AutoFixture>4.11.0 - <_CluedIn>3.3.0-alpha* - - + + <_ComponentHost>2.0.0 + <_AutoFixture>4.11.0 + <_CluedIn>3.4.0-* + - - + + - + - - - + \ No newline at end of file From 32b8e5f12bebc9146c60d23bbec99630cce1de44 Mon Sep 17 00:00:00 2001 From: Oleksandr Povar <1074182+zvirja@users.noreply.github.com> Date: Wed, 2 Aug 2023 12:26:36 +0200 Subject: [PATCH 3/9] feat: Update to .NET 6 (#26) --- Directory.Build.props | 2 +- GitVersion.yml | 2 +- Packages.props | 6 ++-- global.json | 7 ++-- .../Directory.Build.props | 35 ------------------- 5 files changed, 9 insertions(+), 43 deletions(-) delete mode 100644 src/ExternalSearch.Providers.VatLayer/Directory.Build.props diff --git a/Directory.Build.props b/Directory.Build.props index 5e366d6..e737e26 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - netcoreapp3.1 + net6.0 diff --git a/GitVersion.yml b/GitVersion.yml index 5d92a4c..531f5b8 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,5 +1,5 @@ mode: ContinuousDeployment -next-version: 3.4 +next-version: 4.0 branches: master: mode: ContinuousDelivery diff --git a/Packages.props b/Packages.props index 1c31faf..b1833e3 100644 --- a/Packages.props +++ b/Packages.props @@ -1,8 +1,8 @@ - <_ComponentHost>2.0.0 + <_ComponentHost>3.0.0 <_AutoFixture>4.11.0 - <_CluedIn>3.4.0-* + <_CluedIn>4.0.0-* - - 4 - false - CS0105;CS0108;CS0109;CS0114;CS0162;CS0168;CS0169;CS0219;CS0252;CS0414;CS0472;CS0649;CS0652;CS1717;CS1998;CS4014;xUnit1013;MSB3245;MSB3270,NU1602 - - $(NoWarn);NU5105 - prompt - - - - $([System.Text.RegularExpressions.Regex]::Match($(Version), '\d+\.\d+').Value) - $([System.Text.RegularExpressions.Regex]::Match($(Version), '\d+\.\d+.\d+').Value) - CluedIn ApS - Copyright (c) 2020 $(Company). All rights reserved. - CluedIn - $(MSBuildProjectName) - $(Product).$(AssemblyTitle) - $(AssemblyName) - - - - $(RootNamespace) - $(Company) - http://cluedin.com - - - \ No newline at end of file From f48615ad1931d09109fd9f16e0638a6eb7e1248f Mon Sep 17 00:00:00 2001 From: Oleksandr Povar <1074182+zvirja@users.noreply.github.com> Date: Thu, 31 Aug 2023 17:42:47 +0200 Subject: [PATCH 4/9] chore: Hide constructors which confuse container (#27) --- .../VatLayerExternalSearchProvider.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs b/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs index 01bcf12..081f596 100644 --- a/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs +++ b/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs @@ -43,13 +43,13 @@ public VatLayerExternalSearchProvider() } } - public VatLayerExternalSearchProvider(IEnumerable tokens) + private VatLayerExternalSearchProvider(IEnumerable tokens) : this(true) { TokenProvider = new RoundRobinTokenProvider(tokens); } - public VatLayerExternalSearchProvider(IExternalSearchTokenProvider tokenProvider) + private VatLayerExternalSearchProvider(IExternalSearchTokenProvider tokenProvider) : this(true) { TokenProvider = tokenProvider ?? throw new ArgumentNullException(nameof(tokenProvider)); @@ -457,6 +457,6 @@ public IPreviewImage GetPrimaryEntityPreviewImage(ExecutionContext context, IExt public Guide Guide { get; } = Constants.Guide; public IntegrationType Type { get; } = Constants.IntegrationType; - + } } From 4194a885c59e7c63535fd819a73882f6a65f8557 Mon Sep 17 00:00:00 2001 From: Andrew Hardy Date: Mon, 4 Dec 2023 08:56:04 +1000 Subject: [PATCH 5/9] chore: Added release notes --- docs/4.0.0-release-notes.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 docs/4.0.0-release-notes.md diff --git a/docs/4.0.0-release-notes.md b/docs/4.0.0-release-notes.md new file mode 100644 index 0000000..fac8796 --- /dev/null +++ b/docs/4.0.0-release-notes.md @@ -0,0 +1,2 @@ +# Features +- Update to support CluedIn 4.0 From 1ddcde3e03bd0517481313a85a4f062776819dbc Mon Sep 17 00:00:00 2001 From: andrew-hardy Date: Wed, 6 Dec 2023 14:34:26 +1000 Subject: [PATCH 6/9] feat: Configurable types and keys (#28) Feat: Configurable types and keys --------- Co-authored-by: Ziggy --- Directory.Build.props | 4 ++ docs/4.0.0-release-notes.md | 1 + .../Constants.cs | 18 +++++- .../VatLayerExternalSearchJobData.cs | 8 ++- .../VatLayerExternalSearchProvider.cs | 62 +++++++++++++------ .../VatLayerOrganizationVocabulary.cs | 5 -- 6 files changed, 71 insertions(+), 27 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index e737e26..36824fb 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -36,6 +36,10 @@ nugetlogo.png + + false + + diff --git a/docs/4.0.0-release-notes.md b/docs/4.0.0-release-notes.md index fac8796..a8c14e4 100644 --- a/docs/4.0.0-release-notes.md +++ b/docs/4.0.0-release-notes.md @@ -1,2 +1,3 @@ # Features - Update to support CluedIn 4.0 +- Supports configurable types and keys \ No newline at end of file diff --git a/src/ExternalSearch.Providers.VatLayer/Constants.cs b/src/ExternalSearch.Providers.VatLayer/Constants.cs index 007d08a..93746ea 100644 --- a/src/ExternalSearch.Providers.VatLayer/Constants.cs +++ b/src/ExternalSearch.Providers.VatLayer/Constants.cs @@ -14,6 +14,8 @@ public static class Constants public struct KeyName { public const string ApiToken = "apiToken"; + public const string AcceptedEntityType = "acceptedEntityType"; + public const string AcceptedVocabKey = "acceptedVocabKey"; } @@ -31,7 +33,21 @@ public struct KeyName type = "input", isRequired = true, name = KeyName.ApiToken - } + }, + new Control() + { + displayName = "Accepted Entity Type", + type = "input", + isRequired = false, + name = KeyName.AcceptedEntityType + }, + new Control() + { + displayName = "Accepted Vocab Key", + type = "input", + isRequired = false, + name = KeyName.AcceptedVocabKey + }, } }; diff --git a/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchJobData.cs b/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchJobData.cs index da5922e..b27238c 100644 --- a/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchJobData.cs +++ b/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchJobData.cs @@ -8,15 +8,21 @@ public class VatLayerExternalSearchJobData : CrawlJobData public VatLayerExternalSearchJobData(IDictionary configuration) { ApiToken = GetValue(configuration, Constants.KeyName.ApiToken); + AcceptedEntityType = GetValue(configuration, Constants.KeyName.AcceptedEntityType); + AcceptedVocabKey = GetValue(configuration, Constants.KeyName.AcceptedVocabKey); } public IDictionary ToDictionary() { return new Dictionary { - { Constants.KeyName.ApiToken, ApiToken } + { Constants.KeyName.ApiToken, ApiToken }, + { Constants.KeyName.AcceptedEntityType, AcceptedEntityType }, + { Constants.KeyName.AcceptedVocabKey, AcceptedVocabKey } }; } public string ApiToken { get; set; } + public string AcceptedEntityType { get; set; } + public string AcceptedVocabKey { get; set; } } } diff --git a/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs b/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs index 081f596..d26e87f 100644 --- a/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs +++ b/src/ExternalSearch.Providers.VatLayer/VatLayerExternalSearchProvider.cs @@ -26,7 +26,7 @@ namespace CluedIn.ExternalSearch.Providers.VatLayer /// public class VatLayerExternalSearchProvider : ExternalSearchProviderBase, IExtendedEnricherMetadata, IConfigurableExternalSearchProvider { - private static readonly EntityType[] AcceptedEntityTypes = { EntityType.Organization }; + private static EntityType[] AcceptedEntityTypes = { EntityType.Organization }; /********************************************************************************************************** * CONSTRUCTORS **********************************************************************************************************/ @@ -79,7 +79,7 @@ public override IEnumerable BuildQueries(ExecutionContext } } - private IEnumerable InternalBuildQueries(ExecutionContext context, IExternalSearchRequest request, string apiToken) + private IEnumerable InternalBuildQueries(ExecutionContext context, IExternalSearchRequest request, string apiToken, IDictionary config = null) { if (context == null) { @@ -98,8 +98,16 @@ private IEnumerable InternalBuildQueries(ExecutionContext context.Log.LogError("ApiToken for VatLayer must be provided."); yield break; } + if (config.TryGetValue(Constants.KeyName.AcceptedEntityType, out var customType) && !string.IsNullOrWhiteSpace(customType?.ToString())) + { + if (!request.EntityMetaData.EntityType.Is(customType.ToString())) + { + context.Log.LogTrace("Unacceptable entity type from '{EntityName}', entity code '{EntityCode}'", request.EntityMetaData.DisplayName, request.EntityMetaData.EntityType.Code); - if (!Accepts(request.EntityMetaData.EntityType)) + yield break; + } + } + else if (!Accepts(request.EntityMetaData.EntityType)) { context.Log.LogTrace("Unacceptable entity type from '{EntityName}', entity code '{EntityCode}'", request.EntityMetaData.DisplayName, request.EntityMetaData.EntityType.Code); @@ -113,7 +121,17 @@ private IEnumerable InternalBuildQueries(ExecutionContext bool vatFilter(string value) => existingResults.Any(r => string.Equals(r.Data.VatNumber, value, StringComparison.InvariantCultureIgnoreCase)); var entityType = request.EntityMetaData.EntityType; - var vatNumber = request.QueryParameters.GetValue(Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber, new HashSet()); + + var vatNumber = new HashSet(); + if (config.TryGetValue(Constants.KeyName.AcceptedVocabKey, out var customVocabKey) && !string.IsNullOrWhiteSpace(customVocabKey?.ToString())) + { + vatNumber = request.QueryParameters.GetValue>(config[Constants.KeyName.AcceptedVocabKey].ToString(), new HashSet()); + } + else + { + vatNumber = request.QueryParameters.GetValue(Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber, new HashSet()); + } + if (!vatNumber.Any()) { context.Log.LogTrace("No query parameter for '{VatNumber}' in request, skipping build queries", Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber); @@ -298,11 +316,10 @@ public override IEnumerable BuildClues(ExecutionContext context, { var resultItem = result.As(); var dirtyClue = request.CustomQueryInput.ToString(); - var code = GetOriginEntityCode(resultItem); + var code = GetOriginEntityCode(resultItem, request); var clue = new Clue(code, context.Organization); - if (!string.IsNullOrEmpty(dirtyClue)) - clue.Data.EntityData.Codes.Add(new EntityCode(EntityType.Organization, CodeOrigin.CluedIn.CreateSpecific("vatlayer"), dirtyClue)); - PopulateMetadata(clue.Data.EntityData, resultItem); + + PopulateMetadata(clue.Data.EntityData, resultItem, request); context.Log.LogInformation("Clue produced, Id: '{Id}' OriginEntityCode: '{OriginEntityCode}' RawText: '{RawText}'", clue.Id, clue.OriginEntityCode, clue.RawText); @@ -336,7 +353,7 @@ public override IEntityMetadata GetPrimaryEntityMetadata(ExecutionContext contex using (context.Log.BeginScope("{0} {1}: request {2}, result {3}", GetType().Name, "GetPrimaryEntityMetadata", request, result)) { - var metadata = CreateMetadata(result.As()); + var metadata = CreateMetadata(result.As(), request); context.Log.LogInformation("Primary entity meta data created, Name: '{Name}' OriginEntityCode: '{OriginEntityCode}'", metadata.Name, metadata.OriginEntityCode.Origin.Code); @@ -369,33 +386,33 @@ public override IPreviewImage GetPrimaryEntityPreviewImage(ExecutionContext cont } } - private static IEntityMetadata CreateMetadata(IExternalSearchQueryResult resultItem) + private IEntityMetadata CreateMetadata(IExternalSearchQueryResult resultItem, IExternalSearchRequest request) { var metadata = new EntityMetadataPart(); - PopulateMetadata(metadata, resultItem); + PopulateMetadata(metadata, resultItem, request); return metadata; } - private static EntityCode GetOriginEntityCode(IExternalSearchQueryResult resultItem) + private EntityCode GetOriginEntityCode(IExternalSearchQueryResult resultItem, IExternalSearchRequest request) { - return new EntityCode(EntityType.Organization, GetCodeOrigin(), resultItem.Data.CountryCode + resultItem.Data.VatNumber); + return new EntityCode(request.EntityMetaData.EntityType, this.GetCodeOrigin(), request.EntityMetaData.OriginEntityCode.Value); } - private static CodeOrigin GetCodeOrigin() + private CodeOrigin GetCodeOrigin() { return CodeOrigin.CluedIn.CreateSpecific("vatlayer"); } - private static void PopulateMetadata(IEntityMetadata metadata, IExternalSearchQueryResult resultItem) + private void PopulateMetadata(IEntityMetadata metadata, IExternalSearchQueryResult resultItem, IExternalSearchRequest request) { - var code = GetOriginEntityCode(resultItem); + var code = GetOriginEntityCode(resultItem, request); - metadata.EntityType = EntityType.Organization; - metadata.Name = resultItem.Data.CompanyName; + metadata.EntityType = request.EntityMetaData.EntityType; + metadata.Name = request.EntityMetaData.Name; metadata.OriginEntityCode = code; - metadata.Codes.Add(code); + metadata.Codes.Add(request.EntityMetaData.OriginEntityCode); metadata.Properties[VatLayerVocabulary.Organization.Name] = resultItem.Data.CompanyName; @@ -410,6 +427,11 @@ private static void PopulateMetadata(IEntityMetadata metadata, IExternalSearchQu public IEnumerable Accepts(IDictionary config, IProvider provider) { + if (config.TryGetValue(Constants.KeyName.AcceptedEntityType, out var customTypes)) + { + AcceptedEntityTypes = new EntityType[] { customTypes.ToString() }; + }; + return AcceptedEntityTypes; } @@ -417,7 +439,7 @@ public IEnumerable BuildQueries(ExecutionContext context, { var jobData = new VatLayerExternalSearchJobData(config); - foreach (var externalSearchQuery in InternalBuildQueries(context, request, jobData.ApiToken)) + foreach (var externalSearchQuery in InternalBuildQueries(context, request, jobData.ApiToken, config)) { yield return externalSearchQuery; } diff --git a/src/ExternalSearch.Providers.VatLayer/Vocabularies/VatLayerOrganizationVocabulary.cs b/src/ExternalSearch.Providers.VatLayer/Vocabularies/VatLayerOrganizationVocabulary.cs index 95d703e..3d7c069 100644 --- a/src/ExternalSearch.Providers.VatLayer/Vocabularies/VatLayerOrganizationVocabulary.cs +++ b/src/ExternalSearch.Providers.VatLayer/Vocabularies/VatLayerOrganizationVocabulary.cs @@ -34,11 +34,6 @@ public VatLayerOrganizationVocabulary() this.FullVAT = group.Add(new VocabularyKey("fullVat")); this.Address = group.Add(new VocabularyKey("address")); - this.AddMapping(this.Name, Core.Data.Vocabularies.Vocabularies.CluedInOrganization.OrganizationName); - this.AddMapping(this.CountryCode, Core.Data.Vocabularies.Vocabularies.CluedInOrganization.AddressCountryCode); - this.AddMapping(this.CvrNumber, Core.Data.Vocabularies.Vocabularies.CluedInOrganization.CodesCVR); - this.AddMapping(this.FullVAT, Core.Data.Vocabularies.Vocabularies.CluedInOrganization.VatNumber); - this.AddMapping(this.Address, Core.Data.Vocabularies.Vocabularies.CluedInOrganization.Address); }); From 43333c285c5bb036aa15a3ad9b29914db6d93680 Mon Sep 17 00:00:00 2001 From: andrew-hardy Date: Wed, 3 Jan 2024 17:00:01 +1000 Subject: [PATCH 7/9] chore: Updated logo.svg (#29) logo.svg was manually created to closely match https://vatlayer.com/images/icons/vatlayer_icon.png AB#15355 --- Packages.props | 2 +- .../Constants.cs | 2 +- .../ExternalSearch.Providers.VatLayer.csproj | 4 +- .../Resources/logo.svg | 36 ++++++++++++++++++ .../Resources/vatlayer.png | Bin 8613 -> 0 bytes 5 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 src/ExternalSearch.Providers.VatLayer/Resources/logo.svg delete mode 100644 src/ExternalSearch.Providers.VatLayer/Resources/vatlayer.png diff --git a/Packages.props b/Packages.props index b1833e3..fd94d23 100644 --- a/Packages.props +++ b/Packages.props @@ -1,6 +1,6 @@ - <_ComponentHost>3.0.0 + <_ComponentHost>3.1.0 <_AutoFixture>4.11.0 <_CluedIn>4.0.0-* diff --git a/src/ExternalSearch.Providers.VatLayer/Constants.cs b/src/ExternalSearch.Providers.VatLayer/Constants.cs index 93746ea..9037805 100644 --- a/src/ExternalSearch.Providers.VatLayer/Constants.cs +++ b/src/ExternalSearch.Providers.VatLayer/Constants.cs @@ -20,7 +20,7 @@ public struct KeyName } public static string About { get; set; } = "VatLayer is an enricher for validating and cleaning VAT numbers"; - public static string Icon { get; set; } = "Resources.vatlayer.png"; + public static string Icon { get; set; } = "Resources.logo.svg"; public static string Domain { get; set; } = "https://vatlayer.com/"; public static AuthMethods AuthMethods { get; set; } = new AuthMethods diff --git a/src/ExternalSearch.Providers.VatLayer/ExternalSearch.Providers.VatLayer.csproj b/src/ExternalSearch.Providers.VatLayer/ExternalSearch.Providers.VatLayer.csproj index 8ec2992..ccc0fd7 100644 --- a/src/ExternalSearch.Providers.VatLayer/ExternalSearch.Providers.VatLayer.csproj +++ b/src/ExternalSearch.Providers.VatLayer/ExternalSearch.Providers.VatLayer.csproj @@ -1,9 +1,9 @@  - + - + diff --git a/src/ExternalSearch.Providers.VatLayer/Resources/logo.svg b/src/ExternalSearch.Providers.VatLayer/Resources/logo.svg new file mode 100644 index 0000000..494b0e0 --- /dev/null +++ b/src/ExternalSearch.Providers.VatLayer/Resources/logo.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ExternalSearch.Providers.VatLayer/Resources/vatlayer.png b/src/ExternalSearch.Providers.VatLayer/Resources/vatlayer.png deleted file mode 100644 index b0338d55d4521824c766433ad374a670e23320c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8613 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 From 80374dca2c10bd5c5c0f74e2bac95ab1b6f0bf3a Mon Sep 17 00:00:00 2001 From: Matthew McCartney Date: Fri, 2 Feb 2024 16:05:44 +0000 Subject: [PATCH 8/9] Update README.md --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a50a426..3bc0b96 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,11 @@ Project can be compiled running `dotnet build`. Azure Pipelines Continuous integration is already configured -// TO BE COMPLETED \ No newline at end of file +# About CluedIn +CluedIn is the Cloud-native Master Data Management Platform that brings data teams together enabling them to deliver the foundation of high-quality, trusted data that empowers everyone to make a difference. + +We're different because we use enhanced data management techniques like [Graph](https://www.cluedin.com/graph-versus-relational-databases-which-is-best) and [Zero Upfront Modelling](https://www.cluedin.com/upfront-versus-dynamic-data-modelling) to accelerate the time taken to prepare data to deliver insight by as much as 80%. Installed in as little as 20 minutes from the [Azure Marketplace](https://azuremarketplace.microsoft.com/en-gb/marketplace/apps/cluedin.azure_cluedin?tab=Overview), CluedIn is fully integrated with [Microsoft Purview](https://www.cluedin.com/product/microsoft-purview-mdm-integration?hsCtaTracking=461021ab-7a38-41a3-93dd-cfe2325dfd35%7Cb835efc0-e9b7-4385-a1b6-75cb7632527b) and the full [Microsoft Fabric](https://www.cluedin.com/microsoft-fabric) suite, making it the preferred choice for [Azure customers](https://www.cluedin.com/microsoft-intelligent-data-platform). + +To learn more about CluedIn, [contact the team](https://www.cluedin.com/discovery-call) today. + +[https://www.cluedin.com](https://www.cluedin.com) From 9d4f95d22de4485520b186f85c181d0d1ca988f4 Mon Sep 17 00:00:00 2001 From: Nick Barlow Date: Wed, 7 Feb 2024 11:27:33 +0000 Subject: [PATCH 9/9] chore: Update references (#30) --- Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Packages.props b/Packages.props index fd94d23..b8e40f2 100644 --- a/Packages.props +++ b/Packages.props @@ -2,7 +2,7 @@ <_ComponentHost>3.1.0 <_AutoFixture>4.11.0 - <_CluedIn>4.0.0-* + <_CluedIn>4.0.0