diff --git a/103707/TS_103_707_v010101.xsd b/103707/TS_103_707_v010101.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..7d857dfb2fa0c05fd61379813837668ad5fb9c0a
--- /dev/null
+++ b/103707/TS_103_707_v010101.xsd
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/examples/FooServiceSchema.xsd b/103707/examples/FooServiceSchema.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..59e2ff1eb5a7275fe172b3c2068d597452c1c523
--- /dev/null
+++ b/103707/examples/FooServiceSchema.xsd
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/103707/examples/example_binaryObject.xml b/103707/examples/example_binaryObject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54655c529d61d1594502ba77ac8dea60024b39b0
--- /dev/null
+++ b/103707/examples/example_binaryObject.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+ target@example.com
+
+ true
+
+
+
+
+ someoneelse@example.com
+
+
+
+ 2019-10-17T06:42:23.000000+01:00
+
+
+ https://example.com/binaryData/e71d2da5-774a-4bca-8748-2a00b2e17892
+ 1024
+ image/jpeg
+ 2019-10-17T06:42:53.000000+01:00
+ 8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52
+ cat.jpeg
+ e71d2da5-774a-4bca-8748-2a00b2e17892
+
+
+
+
+
+
+ http://FooServiceSchema.example.com/schema/v1.1.1/
+
+
+
+ Foo
+ Bar
+ Baz
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/examples/example_extended.xml b/103707/examples/example_extended.xml
new file mode 100644
index 0000000000000000000000000000000000000000..194190e3168638cc337dc979ccd4436cb3e0fc7b
--- /dev/null
+++ b/103707/examples/example_extended.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+ someone@example.com
+
+
+
+
+
+ someone-else-alias1@example.com
+ someone-else-alias2@example.com
+ someone-else-alias3@example.com
+
+
+
+
+ target@example.com
+
+ true
+
+
+ 2019-10-17T06:42:23.000000+01:00
+
+
+
+
+ http://FooServiceSchema.example.com/schema/v1.1.1/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Foo
+ Bar
+ Baz
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/examples/example_simple.xml b/103707/examples/example_simple.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52816308271a46ef9eac054993c038adc7297f61
--- /dev/null
+++ b/103707/examples/example_simple.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ target@example.com
+
+ true
+
+
+
+
+ someoneelse@example.com
+
+
+
+ 2019-10-17T06:42:23.000000+01:00
+
+
+
+
+ http://FooServiceSchema.example.com/schema/v1.1.1/
+
+
+
+ Foo
+ Bar
+ Baz
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/portal/TS_103_707_v010101.xsd b/103707/portal/TS_103_707_v010101.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..7d857dfb2fa0c05fd61379813837668ad5fb9c0a
--- /dev/null
+++ b/103707/portal/TS_103_707_v010101.xsd
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/portal/examples/FooServiceSchema.xsd b/103707/portal/examples/FooServiceSchema.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..59e2ff1eb5a7275fe172b3c2068d597452c1c523
--- /dev/null
+++ b/103707/portal/examples/FooServiceSchema.xsd
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/103707/portal/examples/example_binaryObject.xml b/103707/portal/examples/example_binaryObject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54655c529d61d1594502ba77ac8dea60024b39b0
--- /dev/null
+++ b/103707/portal/examples/example_binaryObject.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+ target@example.com
+
+ true
+
+
+
+
+ someoneelse@example.com
+
+
+
+ 2019-10-17T06:42:23.000000+01:00
+
+
+ https://example.com/binaryData/e71d2da5-774a-4bca-8748-2a00b2e17892
+ 1024
+ image/jpeg
+ 2019-10-17T06:42:53.000000+01:00
+ 8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52
+ cat.jpeg
+ e71d2da5-774a-4bca-8748-2a00b2e17892
+
+
+
+
+
+
+ http://FooServiceSchema.example.com/schema/v1.1.1/
+
+
+
+ Foo
+ Bar
+ Baz
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/portal/examples/example_extended.xml b/103707/portal/examples/example_extended.xml
new file mode 100644
index 0000000000000000000000000000000000000000..194190e3168638cc337dc979ccd4436cb3e0fc7b
--- /dev/null
+++ b/103707/portal/examples/example_extended.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+ someone@example.com
+
+
+
+
+
+ someone-else-alias1@example.com
+ someone-else-alias2@example.com
+ someone-else-alias3@example.com
+
+
+
+
+ target@example.com
+
+ true
+
+
+ 2019-10-17T06:42:23.000000+01:00
+
+
+
+
+ http://FooServiceSchema.example.com/schema/v1.1.1/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Foo
+ Bar
+ Baz
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/portal/examples/example_simple.xml b/103707/portal/examples/example_simple.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52816308271a46ef9eac054993c038adc7297f61
--- /dev/null
+++ b/103707/portal/examples/example_simple.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+ target@example.com
+
+ true
+
+
+
+
+ someoneelse@example.com
+
+
+
+ 2019-10-17T06:42:23.000000+01:00
+
+
+
+
+ http://FooServiceSchema.example.com/schema/v1.1.1/
+
+
+
+ Foo
+ Bar
+ Baz
+
+
+
+
+
+
\ No newline at end of file
diff --git a/103707/portal/testing/validate_examples.py b/103707/portal/testing/validate_examples.py
new file mode 100644
index 0000000000000000000000000000000000000000..915de84e4d527c154fd485b89552fb59d93edfc0
--- /dev/null
+++ b/103707/portal/testing/validate_examples.py
@@ -0,0 +1,46 @@
+import glob
+import sys
+from pathlib import Path
+from pprint import pprint
+
+if __name__ == '__main__':
+
+ if sys.version_info <= (3, 5):
+ sys.exit('ERROR: You need at least Python 3.5 to run this tool')
+
+ try:
+ from lxml import etree
+ except ImportError:
+ sys.exit('ERROR: You need to install the Python lxml library')
+
+ try:
+ import xmlschema
+ except ImportError:
+ sys.exit('ERROR: You need to install the xml schema library')
+
+
+ extraSchemas = [
+ 'examples/FooServiceSchema.xsd',
+ 'TS_103_280_v020301.xsd'
+ ]
+
+ locations = []
+ for schemaFile in extraSchemas:
+ xs = xmlschema.XMLSchema(schemaFile, validation='skip')
+ locations.append((xs.default_namespace, str(Path(schemaFile))))
+
+ coreSchema = xmlschema.XMLSchema('TS_103_707_v010101.xsd', locations=locations)
+
+ for schema in extraSchemas:
+ newSchema = xmlschema.XMLSchema(schema)
+ coreSchema.import_schema(newSchema.default_namespace, schema)
+
+ examples = glob.glob('examples/*.xml')
+ for example in examples:
+ try:
+ coreSchema.validate(example)
+ print ("{0} passed validation".format(example))
+ except Exception as ex:
+ print ("{0} failed validation: {1}".format(example, ex))
+
+ print ('Done')
\ No newline at end of file
diff --git a/103707/testing/validate_examples.py b/103707/testing/validate_examples.py
new file mode 100644
index 0000000000000000000000000000000000000000..915de84e4d527c154fd485b89552fb59d93edfc0
--- /dev/null
+++ b/103707/testing/validate_examples.py
@@ -0,0 +1,46 @@
+import glob
+import sys
+from pathlib import Path
+from pprint import pprint
+
+if __name__ == '__main__':
+
+ if sys.version_info <= (3, 5):
+ sys.exit('ERROR: You need at least Python 3.5 to run this tool')
+
+ try:
+ from lxml import etree
+ except ImportError:
+ sys.exit('ERROR: You need to install the Python lxml library')
+
+ try:
+ import xmlschema
+ except ImportError:
+ sys.exit('ERROR: You need to install the xml schema library')
+
+
+ extraSchemas = [
+ 'examples/FooServiceSchema.xsd',
+ 'TS_103_280_v020301.xsd'
+ ]
+
+ locations = []
+ for schemaFile in extraSchemas:
+ xs = xmlschema.XMLSchema(schemaFile, validation='skip')
+ locations.append((xs.default_namespace, str(Path(schemaFile))))
+
+ coreSchema = xmlschema.XMLSchema('TS_103_707_v010101.xsd', locations=locations)
+
+ for schema in extraSchemas:
+ newSchema = xmlschema.XMLSchema(schema)
+ coreSchema.import_schema(newSchema.default_namespace, schema)
+
+ examples = glob.glob('examples/*.xml')
+ for example in examples:
+ try:
+ coreSchema.validate(example)
+ print ("{0} passed validation".format(example))
+ except Exception as ex:
+ print ("{0} failed validation: {1}".format(example, ex))
+
+ print ('Done')
\ No newline at end of file