diff --git a/src/Umbraco.Core/Deploy/IUniqueIdentifyingServiceConnector.cs b/src/Umbraco.Core/Deploy/IUniqueIdentifyingServiceConnector.cs
new file mode 100644
index 0000000000..a657ba78b6
--- /dev/null
+++ b/src/Umbraco.Core/Deploy/IUniqueIdentifyingServiceConnector.cs
@@ -0,0 +1,25 @@
+namespace Umbraco.Core.Deploy
+{
+ ///
+ /// Provides a method to retrieve an artifact's unique identifier.
+ ///
+ ///
+ /// Artifacts are uniquely identified by their , however they represent
+ /// elements in Umbraco that may be uniquely identified by another value. For example,
+ /// a content type is uniquely identified by its alias. If someone creates a new content
+ /// type, and tries to deploy it to a remote environment where a content type with the
+ /// same alias already exists, both content types end up having different
+ /// but the same alias. By default, Deploy would fail and throw when trying to save the
+ /// new content type (duplicate alias). However, if the connector also implements this
+ /// interface, the situation can be detected beforehand and reported in a nicer way.
+ ///
+ public interface IUniqueIdentifyingServiceConnector
+ {
+ ///
+ /// Gets the unique identifier of the specified artifact.
+ ///
+ /// The artifact.
+ /// The unique identifier.
+ string GetUniqueIdentifier(IArtifact artifact);
+ }
+}
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 07fcb58137..7817b24ff1 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -335,6 +335,7 @@
+