diff --git a/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java b/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java
index 1700f4f..857096c 100644
--- a/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java
+++ b/org.eclipse.mdm.api.atfxadapter/src/main/java/org/eclipse/mdm/api/atfxadapter/ATFXEntityManager.java
@@ -339,16 +339,20 @@
 			ElemId elemId = new ElemId(((ODSEntityType) contextDescribableEntityType).getODSID(),
 					ODSConverter.toODSID(contextDescribable.getID()));
 			try {
-				T_LONGLONG[] contextRootIds = odsModelManager.getApplElemAccess().getRelInst(elemId,
-						contextDescribableEntityType.getRelation(entityType).getName());
+				Optional<Relation> relation = getRelation(contextDescribableEntityType, entityType);
 
-				if (contextRootIds != null && contextRootIds.length > 0) {
-					// There can only be one result per ContextType, thus we take the first one and
-					// ignore the rest
-					String instanceID = Long.toString(ODSConverter.fromODSLong(contextRootIds[0]));
+				if (relation.isPresent()) {
+					T_LONGLONG[] contextRootIds = odsModelManager.getApplElemAccess().getRelInst(elemId,
+							relation.get().getName());
 
-					contextRoots.put(contextType,
-							entityLoader.load(new Key<>(ContextRoot.class, contextType), instanceID));
+					if (contextRootIds != null && contextRootIds.length > 0) {
+						// There can only be one result per ContextType, thus we take the first one and
+						// ignore the rest
+						String instanceID = Long.toString(ODSConverter.fromODSLong(contextRootIds[0]));
+
+						contextRoots.put(contextType,
+								entityLoader.load(new Key<>(ContextRoot.class, contextType), instanceID));
+					}
 				}
 			} catch (AoException e) {
 				throw new DataAccessException("Cannot load contextRoot '" + entityType.getName() + "' for ID '"
@@ -363,6 +367,14 @@
 		return contextRoots;
 	}
 
+	private Optional<Relation> getRelation(EntityType contextDescribableEntityType, EntityType entityType) {
+		try {
+			return Optional.of(contextDescribableEntityType.getRelation(entityType));
+		} catch (IllegalArgumentException e) {
+			return Optional.empty();
+		}
+	}
+
 	private Map<ContextType, ContextRoot> mapAttributesWithExtSystem(Map<ContextType, ContextRoot> contextRoots) {
 
 		EntityFactory entityFactory = this.context.getEntityFactory()
diff --git a/org.eclipse.mdm.api.atfxadapter/src/test/java/org/eclipse/mdm/api/atfxadapter/AtfxAdaperTest.java b/org.eclipse.mdm.api.atfxadapter/src/test/java/org/eclipse/mdm/api/atfxadapter/AtfxAdaperTest.java
index 7b17923..9236a1a 100644
--- a/org.eclipse.mdm.api.atfxadapter/src/test/java/org/eclipse/mdm/api/atfxadapter/AtfxAdaperTest.java
+++ b/org.eclipse.mdm.api.atfxadapter/src/test/java/org/eclipse/mdm/api/atfxadapter/AtfxAdaperTest.java
@@ -20,14 +20,17 @@
 import java.util.Map;
 
 import org.assertj.core.api.Assertions;
+import org.assertj.core.groups.Tuple;
 import org.eclipse.mdm.api.base.ConnectionException;
 import org.eclipse.mdm.api.base.massdata.ReadRequest;
 import org.eclipse.mdm.api.base.model.Channel;
 import org.eclipse.mdm.api.base.model.ChannelGroup;
 import org.eclipse.mdm.api.base.model.ContextRoot;
 import org.eclipse.mdm.api.base.model.ContextType;
+import org.eclipse.mdm.api.base.model.FileLink;
 import org.eclipse.mdm.api.base.model.MeasuredValues;
 import org.eclipse.mdm.api.base.model.Measurement;
+import org.eclipse.mdm.api.base.model.MimeType;
 import org.eclipse.mdm.api.base.model.Test;
 import org.eclipse.mdm.api.base.model.TestStep;
 import org.eclipse.mdm.api.base.model.ValueType;
@@ -98,6 +101,17 @@
 	}
 
 	@org.junit.Test
+	public void testLoadTestStepWithExtRef() {
+
+		EntityManager em = context.getEntityManager().get();
+
+		assertThat(em.load(TestStep.class, "1").getFileLinks())
+				.extracting(FileLink::getFileName, FileLink::getDescription, FileLink::getMimeType)
+				.contains(Tuple.tuple("extref.txt", "a simple text file", new MimeType("text/plain")),
+						Tuple.tuple("openmdm.png", "openMDM Logo", new MimeType("image/png")));
+	}
+
+	@org.junit.Test
 	public void testLoadAllMeasurements() {
 
 		EntityManager em = context.getEntityManager().get();
diff --git a/org.eclipse.mdm.api.atfxadapter/src/test/resources/Right_Acc.atfx b/org.eclipse.mdm.api.atfxadapter/src/test/resources/Right_Acc.atfx
index a044f4f..f9594cc 100644
--- a/org.eclipse.mdm.api.atfxadapter/src/test/resources/Right_Acc.atfx
+++ b/org.eclipse.mdm.api.atfxadapter/src/test/resources/Right_Acc.atfx
@@ -2679,6 +2679,18 @@
       <DateCreated>20140314170908</DateCreated>
       <Optional>true</Optional>
       <Sortindex>40</Sortindex>
+      <MDMLinks>
+        <external_reference>
+          <description>a simple text file</description>
+          <mimetype>text/plain</mimetype>
+          <location>extref.txt</location>
+        </external_reference>
+        <external_reference>
+          <description>openMDM Logo</description>
+          <mimetype>image/png</mimetype>
+          <location>openmdm.png</location>
+        </external_reference>
+      </MDMLinks>
       <Test>1</Test>
       <MeaResults>1</MeaResults>
     </TestStep>
diff --git a/org.eclipse.mdm.api.atfxadapter/src/test/resources/extref.txt b/org.eclipse.mdm.api.atfxadapter/src/test/resources/extref.txt
new file mode 100644
index 0000000..9097b52
--- /dev/null
+++ b/org.eclipse.mdm.api.atfxadapter/src/test/resources/extref.txt
@@ -0,0 +1 @@
+This is a external reference file.
\ No newline at end of file
diff --git a/org.eclipse.mdm.api.atfxadapter/src/test/resources/openmdm.png b/org.eclipse.mdm.api.atfxadapter/src/test/resources/openmdm.png
new file mode 100644
index 0000000..437bb58
--- /dev/null
+++ b/org.eclipse.mdm.api.atfxadapter/src/test/resources/openmdm.png
Binary files differ
diff --git a/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/EntityHolder.java b/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/EntityHolder.java
index a7b8eef..f35c17c 100644
--- a/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/EntityHolder.java
+++ b/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/EntityHolder.java
@@ -136,4 +136,8 @@
 		return true;
 	}
 
+	@Override
+	public String toString() {
+		return String.format("%s.%s.%s", getEntity().getSourceName(), getEntity().getTypeName(), getEntity().getID());
+	}
 }
diff --git a/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/ImportTask.java b/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/ImportTask.java
index ee1c96e..444195c 100644
--- a/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/ImportTask.java
+++ b/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/ImportTask.java
@@ -464,6 +464,7 @@
 							testStepSrc.getName(), templateTestStep.get().getName());
 					testStepDst = entityFactoryDst.createTestStep(testDst, templateTestStep.get(),
 							classificationUtil.getClassification(rootProjectName));
+					testStepDst.setName(testStepSrc.getName());
 				} else if (templateTestStep.isPresent()) {
 					LOG.trace("Importing TestStep '{}' using TestStepTemplate '{}' and create context roots",
 							testStepSrc.getName(), templateTestStep.get().getName());
@@ -471,7 +472,7 @@
 							classificationUtil.getClassification(rootProjectName));
 				} else {
 					LOG.trace("Importing TestStep '{}' using no TestStepTemplate", testStepSrc.getName());
-					testStepDst = entityFactoryDst.createTestStep(testSrc.getName(), testDst,
+					testStepDst = entityFactoryDst.createTestStep(testStepSrc.getName(), testDst,
 							classificationUtil.getClassification(rootProjectName));
 				}
 			} else {
diff --git a/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/TransferBase.java b/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/TransferBase.java
index 3ef6751..f931eb4 100644
--- a/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/TransferBase.java
+++ b/org.eclipse.mdm.apicopy/src/main/java/org/eclipse/mdm/apicopy/control/TransferBase.java
@@ -191,15 +191,23 @@
 			if (!ignoredAttributes.contains(key) && valueNamesDst.contains(key)) {
 				Value valueSrc = me.getValue();
 
-				if (onlyValid && valueSrc.isValid()) {
-					if (isFileLinkDataType(valueSrc.getValueType())) {
-						uploadFiles(srcEntity, dstEntity, valueSrc);
-					}
-
-					Value value = dstEntity.getValue(me.getKey());
-					value.set(valueSrc.extract());
-					value.setValid(valueSrc.isValid());
+				if (onlyValid && !valueSrc.isValid()) {
+					continue;
 				}
+
+				if (isFileLinkDataType(valueSrc.getValueType())) {
+					uploadFiles(srcEntity, dstEntity, valueSrc);
+				}
+
+				Value value = dstEntity.getValue(me.getKey());
+				try {
+					value.set(valueSrc.extract());
+				} catch (IllegalArgumentException e) {
+					throw new ApiCopyException(
+							"Cannot set value for " + dstEntity.getName() + "." + me.getKey() + ": " + e.getMessage(),
+							e);
+				}
+				value.setValid(valueSrc.isValid());
 			}
 		}
 
