diff --git a/.gitattributes b/.gitattributes
index 7f2e3c6ceedbecfea7dec07e74461dd98857c169..849af24790eb3d89cda1a4542461afe86e458a5d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -5774,6 +5774,72 @@ SAS/Scheduler/test/unittest/testGui/testGui.sh eol=lf
 SAS/Scheduler/test/unittest/testqstring/testqstring.run eol=lf
 SAS/Scheduler/test/unittest/testqstring/testqstring.sh eol=lf
 SAS/Scheduler/test/unittest/tojunit.xslt -text
+SAS/Specification_Services/CMakeLists.txt -text
+SAS/Specification_Services/bin/CMakeLists.txt -text
+SAS/Specification_Services/bin/specificationservice -text
+SAS/Specification_Services/bin/specificationtranslationservice -text
+SAS/Specification_Services/bin/specificationvalidationservice -text
+SAS/Specification_Services/lib/CMakeLists.txt -text
+SAS/Specification_Services/lib/LofarBase.xsd -text
+SAS/Specification_Services/lib/LofarHistorical.xsd -text
+SAS/Specification_Services/lib/LofarMoM2.xsd -text
+SAS/Specification_Services/lib/LofarProject.xsd -text
+SAS/Specification_Services/lib/LofarSpecification.xsd -text
+SAS/Specification_Services/lib/LofarTrigger.xsd -text
+SAS/Specification_Services/lib/MoM2.xsd -text
+SAS/Specification_Services/lib/PersistentObjects.xsd -text
+SAS/Specification_Services/lib/UserAdmin.xsd -text
+SAS/Specification_Services/lib/__init__.py -text
+SAS/Specification_Services/lib/config.py -text
+SAS/Specification_Services/lib/specification_service.py -text
+SAS/Specification_Services/lib/specification_service_rpc.py -text
+SAS/Specification_Services/lib/translation_service.py -text
+SAS/Specification_Services/lib/translation_service_rpc.py -text
+SAS/Specification_Services/lib/validation_service.py -text
+SAS/Specification_Services/lib/validation_service_rpc.py -text
+SAS/Specification_Services/test/CMakeLists.txt -text
+SAS/Specification_Services/test/setup_queues_and_services.sh -text
+SAS/Trigger_Services/CMakeLists.txt -text
+SAS/Trigger_Services/TriggerReceptionService/CMakeLists.txt -text
+SAS/Trigger_Services/TriggerReceptionService/__init__.py -text
+SAS/Trigger_Services/TriggerReceptionService/bin/CMakeLists.txt -text
+SAS/Trigger_Services/TriggerReceptionService/bin/triggerrestinterface -text
+SAS/Trigger_Services/TriggerReceptionService/bin/triggerservice -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/db.sqlite3 -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/manage.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/.name -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/encodings.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/Project_Default.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/profiles_settings.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/misc.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/modules.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/scopes/scope_settings.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/triggerservice.iml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/vcs.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/workspace.xml -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/__init__.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/credentials.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/settings.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/__init__.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/admin.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/apps.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/migrations/__init__.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/models.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/serializers.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/tests.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/views.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/urls.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/wsgi.py -text
+SAS/Trigger_Services/TriggerReceptionService/django_rest/urls.py -text
+SAS/Trigger_Services/TriggerReceptionService/lib/CMakeLists.txt -text
+SAS/Trigger_Services/TriggerReceptionService/lib/__init__.py -text
+SAS/Trigger_Services/TriggerReceptionService/lib/config.py -text
+SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service.py -text
+SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service_rpc.py -text
+SAS/Trigger_Services/TriggerReceptionService/test/CMakeLists.txt -text
+SAS/Trigger_Services/TriggerReceptionService/test/setup_queues_and_services.sh -text
+SAS/Trigger_Services/TriggerReceptionService/test/trigger-testing.xml -text
+SAS/Trigger_Services/TriggerReceptionService/test/trigger_misc_testing_nov2016.xml -text
 SAS/XML_generator/CMakeLists.txt -text
 SAS/XML_generator/src/CMakeLists.txt -text
 SAS/XML_generator/src/xmlgen -text
diff --git a/SAS/CMakeLists.txt b/SAS/CMakeLists.txt
index 3a8abf77552f5717f4514cb20993309714eb882d..7e9c5853d0ccd801a595209e5240ef032edc6148 100644
--- a/SAS/CMakeLists.txt
+++ b/SAS/CMakeLists.txt
@@ -10,6 +10,7 @@ lofar_add_package(CleanupTool)
 lofar_add_package(OTDB_Services)
 lofar_add_package(XML_generator)
 lofar_add_package(Trigger_Services)
+lofar_add_package(Specification_Services)
 
 add_subdirectory(MoM)
 add_subdirectory(ResourceAssignment)
diff --git a/SAS/Specification_Services/CMakeLists.txt b/SAS/Specification_Services/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc4f4b12f303d3152c94ba713954b332e035af69
--- /dev/null
+++ b/SAS/Specification_Services/CMakeLists.txt
@@ -0,0 +1,9 @@
+
+lofar_find_package(Python 2.7 REQUIRED)
+lofar_package(sip 0.1 DEPENDS PyCommon)
+
+include(PythonInstall)
+
+add_subdirectory(lib)
+add_subdirectory(bin)
+add_subdirectory(test)
diff --git a/SAS/Specification_Services/bin/CMakeLists.txt b/SAS/Specification_Services/bin/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..952d5db669105243b02b37b1d5e5ce03abc8d736
--- /dev/null
+++ b/SAS/Specification_Services/bin/CMakeLists.txt
@@ -0,0 +1,3 @@
+lofar_add_bin_scripts(specificationservice)
+lofar_add_bin_scripts(specificationtranslationservice)
+lofar_add_bin_scripts(specificationvalidationservice)
diff --git a/SAS/Specification_Services/bin/specificationservice b/SAS/Specification_Services/bin/specificationservice
new file mode 100755
index 0000000000000000000000000000000000000000..0f241fea0f4bbf5ac42b55e3b2a8416dcbd41ec1
--- /dev/null
+++ b/SAS/Specification_Services/bin/specificationservice
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+
+# Copyright (C) 2012-2015  ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O. Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# Executable for the Lofar specification service
+
+from lofar.specificationservices.specification_service import main
+
+import sys
+import logging
+
+logger = logging.getLogger(__name__)
+
+if __name__ == '__main__':
+    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
+    main()
diff --git a/SAS/Specification_Services/bin/specificationtranslationservice b/SAS/Specification_Services/bin/specificationtranslationservice
new file mode 100755
index 0000000000000000000000000000000000000000..78f5a4b46cdd310dad5e4918f844944460e1dd8d
--- /dev/null
+++ b/SAS/Specification_Services/bin/specificationtranslationservice
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+
+# Copyright (C) 2012-2015  ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O. Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# Executable for the specification translation service
+# The service converts different specification formats
+
+from lofar.specificationservices.translation_service import main
+import sys
+import logging
+
+logger = logging.getLogger(__name__)
+
+if __name__ == '__main__':
+    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
+    main()
diff --git a/SAS/Specification_Services/bin/specificationvalidationservice b/SAS/Specification_Services/bin/specificationvalidationservice
new file mode 100755
index 0000000000000000000000000000000000000000..3260a87155efb896b721c85d31d80980aab9df20
--- /dev/null
+++ b/SAS/Specification_Services/bin/specificationvalidationservice
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+
+# Copyright (C) 2012-2015  ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O. Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# Executable for the specification validation service
+
+from lofar.specificationservices.validation_service import main
+import sys
+import logging
+
+logger = logging.getLogger(__name__)
+
+if __name__ == '__main__':
+    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
+    main()
diff --git a/SAS/Specification_Services/lib/CMakeLists.txt b/SAS/Specification_Services/lib/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ee05c4690ffa9e26dfe26aedbac0d848f812218e
--- /dev/null
+++ b/SAS/Specification_Services/lib/CMakeLists.txt
@@ -0,0 +1,33 @@
+# $Id$
+
+lofar_find_package(Python 2.7 REQUIRED)
+include(PythonInstall)
+
+set(_py_files
+  __init__.py
+  config.py
+  specification_service.py
+  specification_service_rpc.py
+  translation_service.py
+  translation_service_rpc.py
+  validation_service.py
+  validation_service_rpc.py
+)
+
+python_install(${_py_files}
+               DESTINATION lofar/specificationservices)
+
+set(xsd_files
+  LofarTrigger.xsd
+  LofarBase.xsd
+  LofarProject.xsd
+  LofarMoM2.xsd
+  MoM2.xsd
+  PersistentObjects.xsd
+  LofarHistorical.xsd
+  LofarSpecification.xsd
+  UserAdmin.xsd
+  )
+
+install(FILES ${xsd_files}
+  DESTINATION ${PYTHON_INSTALL_DIR}/lofar/specificationservices)
\ No newline at end of file
diff --git a/SAS/Specification_Services/lib/LofarBase.xsd b/SAS/Specification_Services/lib/LofarBase.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..f57e33e1461ce57e0c8b4175aa7907d03a542449
--- /dev/null
+++ b/SAS/Specification_Services/lib/LofarBase.xsd
@@ -0,0 +1,472 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/LofarBase" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astron.nl/LofarBase">
+	<xsd:annotation>
+		<xsd:documentation>Definitions of base types for LOFAR XML objects</xsd:documentation>
+	</xsd:annotation>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR common simple types============================
+	
+		This section is for types used by multiple sections
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:simpleType name="IdentifierSource">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="MoM"/>
+			<xsd:enumeration value="SAS"/>
+			<xsd:enumeration value="Temporary"/><!--Only needs to be unique within a single XML. Parser will need to assign permanent Ids-->
+		</xsd:restriction>
+	</xsd:simpleType>	
+	<xsd:complexType name="Identifier">
+		<xsd:sequence>
+			<xsd:element name="source" type="xsd:string"/>
+			<xsd:choice>
+				<xsd:element name="identifier" type="xsd:nonNegativeInteger"/>
+				<xsd:element name="topology" type="xsd:string"/><!--For backward compatibility with MoM 3-->
+			</xsd:choice>
+			<xsd:element name="description" minOccurs="0" type="xsd:string"/><!-- mostly for debugging -->
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================Project related types============================
+		
+		This section describes types related to projects and users. Currently only implements some things for the specification of triggers.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="ProjectReference">
+		<xsd:choice>
+			<xsd:element name="identifier" type="Identifier"/> <!-- MoM Id -->
+			<xsd:element name="ProjectCode" type="xsd:string"/> <!-- Something like LC5_009 -->
+		</xsd:choice>
+	</xsd:complexType>
+	<xsd:complexType name="ContactInformation">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="email" type="xsd:string"/>
+			<xsd:element name="affiliation" minOccurs="0" type="xsd:string"/> <!-- Does this need to point to an affiliation record-->
+			<!-- Do we need anything else like address or phone number?  -->
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================Event related types============================
+		
+		This section describes ... information.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:simpleType name="EventType"> <!-- just some guesses right now -->
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="VOEvent"/>
+			<xsd:enumeration value="LOFAREvent"/>
+			<xsd:enumeration value="Magic"/>
+			<xsd:enumeration value="LIGO"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Event">
+		<xsd:sequence>
+			<xsd:element name="identification" type="xsd:string"/><!-- Probably doesn't need to be machine interpretable, so basically free form just to inform the user -->
+			<xsd:element name="description" type="xsd:string"/>
+			<xsd:element name="type" type="EventType"/> <!-- This implicitly determines the source of the identification -->
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================Container related types============================
+		
+		This section describes ... information.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="Folder">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="description" type="xsd:string"/>
+			<!--xsd:element name="type" minOccurs="0" type="FolderType"/-->
+			<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+		</xsd:sequence>
+				<!--xsd:attribute name="topology_parent" type="xsd:boolean"/>
+				<xsd:attribute name="update_folder" type="xsd:boolean"/ -->
+	</xsd:complexType>	
+	<xsd:annotation>
+		<xsd:documentation>============================Observation related types============================
+		
+		This section describes ... information.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="Observation">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="description" type="xsd:string"/>
+			<xsd:element name="processingCluster" type="ProcessingCluster"/>
+			<xsd:element name="instrument" type="Instrument"/>
+			<xsd:element name="defaultTemplate" type="xsd:string"/> <!-- user Strategy, to not be OTDB specific ? -->
+			<xsd:element name="tbbPiggybackAllowed" type="xsd:boolean"/>
+			<xsd:element name="aartfaacPiggybackAllowed" type="xsd:boolean"/>
+			<xsd:element name="correlatedData" type="xsd:boolean"/>
+			<xsd:element name="filteredData" type="xsd:boolean"/>
+			<xsd:element name="beamformedData" type="xsd:boolean"/>
+			<xsd:element name="coherentStokesData" type="xsd:boolean"/>
+			<xsd:element name="incoherentStokesData" type="xsd:boolean"/>
+			<xsd:element name="antenna" type="AntennaSet"/>
+			<xsd:element name="clock" type="Clock"/>
+			<xsd:element name="instrumentFilter" type="BandFilter"/>
+			<xsd:element minOccurs="0" name="integrationInterval" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="channelsPerSubband" type="xsd:short"/>
+			<xsd:element minOccurs="0" name="coherentDedisperseChannels" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="tiedArrayBeams" type="ArrayBeams"/>
+			<xsd:element minOccurs="0" name="stokes" type="Stokes"/>
+			<xsd:element minOccurs="0" name="bypassPff" type="xsd:boolean"/>
+			<xsd:element name="enableSuperterp" type="xsd:boolean"/>
+			<xsd:element name="numberOfBitsPerSample" type="xsd:nonNegativeInteger"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="MemoryStorageUnit">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="byte"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="MemoryStorage">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:nonNegativeInteger">
+				<xsd:attribute name="unit" type="MemoryStorageUnit" use="required"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:complexType name="ProcessingCluster">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="partition" type="xsd:string"/>
+			<xsd:element name="numberOfTasks" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="minRAMPerTask" type="MemoryStorage"/>
+			<xsd:element minOccurs="0" name="minScratchPerTask" type="MemoryStorage"/>
+			<xsd:element minOccurs="0" name="maxDurationPerTask" type="xsd:duration"/>
+			<xsd:element name="numberOfCoresPerTask" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="runSimultaneous" type="xsd:boolean"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="ArrayBeams">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="flyseye" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="nrTabRings" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="tabRingSize" type="xsd:double" nillable="true"/>
+			<xsd:element minOccurs="0" name="tiedArrayBeamList" type="ArrayBeamList"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="ArrayBeamList">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" maxOccurs="unbounded" name="pencilBeam">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="angle1" type="xsd:double"/>
+						<xsd:element name="angle2" type="xsd:double"/>
+					</xsd:sequence>
+					<xsd:attribute name="index" type="xsd:integer"/>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="StokesSelection"><!-- I think we support more XXYY ???-->
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="I"/>
+			<xsd:enumeration value="IQUV"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Stokes">
+		<xsd:sequence>
+			<xsd:element name="integrateChannels" type="xsd:boolean"/>
+			<xsd:element name="subbandsPerFileCS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element name="numberCollapsedChannelsCS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element name="stokesDownsamplingStepsCS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element name="whichCS" type="StokesSelection" nillable="true"/>
+			<xsd:element name="subbandsPerFileIS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element name="numberCollapsedChannelsIS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element name="stokesDownsamplingStepsIS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element name="whichIS" type="StokesSelection" nillable="true"/>
+			<!-- xsd:element minOccurs="0" name="integrationSteps" type="xsd:nonNegativeInteger" nillable="true"/ -->
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="Stations">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" maxOccurs="unbounded" name="station" type="Station"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="Station">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/><!--xsd:attribute name="name" type="xsd:string" use="required"/-->
+			<!--xsd:element minOccurs="0" name="location" type="Coordinates/-->
+			<xsd:element minOccurs="0" maxOccurs="2" name="antennaField" type="AntennaField"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="AntennaFieldType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="HBA0"/>
+			<xsd:enumeration value="HBA1"/>
+			<xsd:enumeration value="HBA0+1"/>
+			<xsd:enumeration value="HBA"/>
+			<xsd:enumeration value="LBA"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="AntennaField">
+		<xsd:sequence>
+			<xsd:element name="name" type="AntennaFieldType"/>
+			<!--xsd:element name="location" type="Coordinates/-->
+		</xsd:sequence>
+	</xsd:complexType>
+	<!-- xsd:complexType name="Coordinates>
+		<xsd:sequence>
+			<xsd:element name="coordinateSystem">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string">
+						<xsd:enumeration value="WGS84"/>
+						<xsd:enumeration value="ITRF2000"/>
+					</xsd:restriction>
+				</xsd:simpleType>
+			</xsd:element>
+			<xsd:element name="x" type="xsd:double"/>
+			<xsd:element name="y" type="xsd:double"/>
+			<xsd:element name="z" type="xsd:double"/>
+		</xsd:sequence>
+	</xsd:complexType-->
+	<xsd:simpleType name="AntennaSet">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="HBA Zero"/>
+			<xsd:enumeration value="HBA One"/>
+			<xsd:enumeration value="HBA Dual"/>
+			<xsd:enumeration value="HBA Joined"/>
+			<xsd:enumeration value="LBA Outer"/>
+			<xsd:enumeration value="LBA Inner"/>
+			<xsd:enumeration value="LBA Sparse Even"/>
+			<xsd:enumeration value="LBA Sparse Odd"/>
+			<xsd:enumeration value="LBA X"/>
+			<xsd:enumeration value="LBA Y"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:simpleType name="Instrument">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Beam Observation"/>
+			<xsd:enumeration value="Interferometer"/>
+			<xsd:enumeration value="Tied Array"/>
+			<xsd:enumeration value="Transient Buffer Board"/>
+			<xsd:enumeration value="Direct Data Storage"/>
+			<xsd:enumeration value="Non Standard"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:simpleType name="BandFilter">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="10-70 MHz"/>
+			<xsd:enumeration value="30-70 MHz"/>
+			<xsd:enumeration value="10-90 MHz"/>
+			<xsd:enumeration value="30-90 MHz"/>
+			<xsd:enumeration value="110-190 MHz"/>
+			<xsd:enumeration value="170-230 MHz"/>
+			<xsd:enumeration value="210-250 MHz"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Clock">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="channelWidth" type="Frequency"/>
+			<xsd:element minOccurs="0" name="samplesPerSecond" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="subbandWidth" type="Frequency"/>
+			<xsd:element minOccurs="0" name="systemClock" type="Frequency"/>
+		</xsd:sequence>
+		<xsd:attribute name="mode" use="required">
+			<xsd:simpleType>
+				<xsd:restriction base="xsd:string">
+					<xsd:enumeration value="160 MHz"/>
+					<xsd:enumeration value="200 MHz"/>
+				</xsd:restriction>
+			</xsd:simpleType>
+		</xsd:attribute>
+	</xsd:complexType>
+	<xsd:simpleType name="FrequencyUnit">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Hz"/>
+			<xsd:enumeration value="kHz"/>
+			<xsd:enumeration value="MHz"/>
+			<xsd:enumeration value="GHz"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Frequency">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:double">
+				<xsd:attribute name="unit" type="FrequencyUnit" use="required"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================Measurement related types============================
+		
+		This section describes ... information.
+		</xsd:documentation><!-- Measurement related declarations -->
+	</xsd:annotation>
+	<xsd:complexType name="Measurement" abstract="true"/><!-- Beam Measurement related declarations -->
+	<xsd:complexType name="BeamMeasurement">
+		<xsd:complexContent>
+			<xsd:extension base="Measurement"><!-- SAP -->
+				<xsd:sequence>
+					<xsd:element name="name" type="xsd:string"/>
+					<xsd:element name="description" type="xsd:string"/>
+					<xsd:element name="ra" type="xsd:double"/>
+					<xsd:element name="dec" type="xsd:double"/>
+					<xsd:element name="equinox" type="Equinox"/>
+					<!-- xsd:element name="duration" type="xsd:duration"/>
+					<xsd:element name="startTime" type="xsd:dateTime"/>
+					<xsd:element name="endTime" type="xsd:dateTime"/ -->
+					<!-- xsd:element name="centralFrequency" type="mom2:Frequency"/>
+					<xsd:element name="bandWidth" type="mom2:Frequency"/ -->
+					<xsd:element name="subbandsSpecification" type="SubbandsSpecification"/>
+					<xsd:element minOccurs="0" name="tiedArrayBeams" type="ArrayBeams"/><!--Need to remove for UVMeasurement -->
+					<xsd:element name="measurementType">
+						<xsd:simpleType>
+							<xsd:restriction base="xsd:string">
+								<xsd:enumeration value="Target"/>
+								<xsd:enumeration value="Calibration"/>
+								<xsd:enumeration value="Tune Up"/>
+								<xsd:enumeration value="Miscellaneous"/>
+							</xsd:restriction>
+						</xsd:simpleType>
+					</xsd:element>
+					<!--FIXME distinction between spec and actual lost/omitted -->
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="SubbandsSpecification"><!-- FIXME what do we need?-->
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="bandWidth" type="Frequency"/>
+			<xsd:element minOccurs="0" name="centralFrequency" type="Frequency"/>
+			<xsd:element minOccurs="0" name="contiguous" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="subbands" type="SubbandArray"/>
+		</xsd:sequence>
+	</xsd:complexType><!-- xsd:complexType name="CustomSubbandsSpecification"/ -->
+	<xsd:simpleType name="SubbandArray">
+		<xsd:restriction base="xsd:string">
+			<xsd:pattern value="\d{1,3}(,\d{1,3})*|\d{1,3}\.\.\d{1,3}"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:simpleType name="Equinox">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="J2000"/>
+			<xsd:enumeration value="B1950"/>
+			<xsd:enumeration value="Other"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+<!-- TBB Measurement, UV Measurement BF Measurement and Generic Measurement don't seem to get used at the moment -->
+	<xsd:annotation>
+		<xsd:documentation>============================Pipeline related types============================
+		
+		This section describes ... information.
+		</xsd:documentation>
+	</xsd:annotation>
+<!-- General Pipeline related declarations -->
+	<xsd:complexType name="Pipeline" abstract="true"/>
+<!-- Averaging Pipeline related declarations -->
+	<xsd:complexType name="AveragingPipeline">
+		<xsd:complexContent>
+			<xsd:extension base="Pipeline">
+				<xsd:sequence>
+					<xsd:element name="name" type="xsd:string"/> <!-- Should go to higher/base class level? -->
+					<xsd:element name="description" type="xsd:string"/>
+					<xsd:element name="processingCluster" type="ProcessingCluster"/>
+					<xsd:element name="defaultTemplate" type="xsd:string"/>
+					<!--xsd:element minOccurs="0" name="duration" type="xsd:duration"/>
+					<xsd:element minOccurs="0" name="startTime" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" name="endTime" type="xsd:dateTime" nillable="true"/-->
+					<xsd:element minOccurs="0" name="demixingParameters" type="DemixingParameters"/>
+					<xsd:element minOccurs="0" name="bbsParameters" type="BbsParameters"/>
+					<xsd:element minOccurs="0" name="flaggingStrategy" type="xsd:string"/>
+					<!-- xsd:element minOccurs="0" name="frequencyIntegrationStep" type="xsd:nonNegativeInteger"/ -->
+					<!-- xsd:element minOccurs="0" name="timeIntegrationStep" type="xsd:nonNegativeInteger"/ -->
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="DemixingParameters"><!-- These two types are basically the same !! Probably not correct. I made all of it mandatory-->
+		<xsd:sequence>
+			<xsd:element name="averagingFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="averagingTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="demixFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="demixTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="demixAlways" type="xsd:string"/>
+			<xsd:element name="demixIfNeeded" type="xsd:string"/>
+			<xsd:element name="ignoreTarget" type="xsd:boolean" nillable="true"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="BbsParameters"><!-- BBS should be in a CalibrationPipeline !-->
+		<xsd:sequence>
+			<xsd:element name="averagingFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="averagingTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="demixFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="demixTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="demixAlways" type="xsd:string"/>
+			<xsd:element name="demixIfNeeded" type="xsd:string"/>
+			<xsd:element name="ignoreTarget" type="xsd:boolean"/>
+		</xsd:sequence>
+	</xsd:complexType>
+<!-- Imaging Pipeline related declarations -->
+	<xsd:complexType name="ImagingPipeline">
+		<xsd:complexContent>
+			<xsd:extension base="Pipeline"><!-- Should maybe derive from AveragingPipeline or CalibrationPipeline-->
+				<xsd:sequence>
+					<xsd:element name="name" type="xsd:string"/>
+					<xsd:element name="description" type="xsd:string"/>
+					<xsd:element name="processingCluster" type="ProcessingCluster"/>
+					<xsd:element minOccurs="0" name="imagerIntegrationTime" type="xsd:double"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+<!-- Pulsar Pipeline related declarations -->
+	<xsd:complexType name="PulsarPipeline">
+		<xsd:complexContent>
+			<xsd:extension base="Pipeline">
+				<xsd:sequence>
+					<xsd:element name="name" type="xsd:string"/>
+					<xsd:element name="description" type="xsd:string"/>
+					<xsd:element name="processingCluster" type="ProcessingCluster"/>
+					<xsd:element name="defaultTemplate" type="xsd:string"/>
+					<!--xsd:element minOccurs="0" name="duration" type="xsd:string"/ -->
+					<xsd:element minOccurs="0" name="_2bf2fitsExtraOpts" type="xsd:string"/>
+					<xsd:element name="_8bitConversionSigma" type="xsd:string"/>
+					<xsd:element name="decodeNblocks" type="xsd:string"/>
+					<xsd:element name="decodeSigma" type="xsd:string"/>
+					<xsd:element name="digifilExtraOpts" type="xsd:string"/>
+					<xsd:element name="dspsrExtraOpts" type="xsd:string"/>
+					<xsd:element name="dynamicSpectrumTimeAverage" type="xsd:string"/>
+					<xsd:element name="nofold" type="xsd:string"/>
+					<xsd:element name="nopdmp" type="xsd:string"/>
+					<xsd:element name="norfi" type="xsd:string"/>
+					<xsd:element name="prepdataExtraOpts" type="xsd:string"/>
+					<xsd:element name="prepfoldExtraOpts" type="xsd:string"/>
+					<xsd:element name="prepsubbandExtraOpts" type="xsd:string"/>
+					<xsd:element name="pulsar" type="xsd:string"/>
+					<xsd:element name="rawTo8bit" type="xsd:string"/>
+					<xsd:element name="rfifindExtraOpts" type="xsd:string"/>
+					<xsd:element name="rrats" type="xsd:string"/>
+					<xsd:element name="singlePulse" type="xsd:string"/>
+					<xsd:element name="skipDsps" type="xsd:string"/>
+					<xsd:element name="skipDynamicSpectrum" type="xsd:string"/>
+					<xsd:element name="skipPrepfold" type="xsd:string"/>
+					<xsd:element name="tsubint" type="xsd:string"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================System task related types============================
+		
+		This section describes ... information.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="Ingest" abstract="true"/>
+	<xsd:complexType name="Cleanup" abstract="true"/>	
+	<xsd:annotation>
+		<xsd:documentation>============================Dataproduct related types============================
+		
+		This section describes ... information.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="DataProduct" abstract="true"/>
+	<xsd:complexType name="StorageCluster">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="partition" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/LofarHistorical.xsd b/SAS/Specification_Services/lib/LofarHistorical.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..25e446e4f0f5e4c34bc8e3d19ae6d9086df83ce2
--- /dev/null
+++ b/SAS/Specification_Services/lib/LofarHistorical.xsd
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/LofarTrigger" version="0.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astron.nl/LofarTrigger" xmlns:spec="http://www.astron.nl/LofarSpecification" xmlns:base="http://www.astron.nl/LofarBase">
+	<xsd:import schemaLocation="LofarSpecification.xsd" namespace="http://www.astron.nl/LofarSpecification"/>
+	<xsd:import schemaLocation="LofarBase.xsd" namespace="http://www.astron.nl/LofarBase"/>
+	<xsd:annotation>
+		<xsd:documentation>Definitions for LOFAR historical storage
+		
+		This contains extentions of base objects that are needed to track and report the history of these objects.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR ============================
+	
+		TBD
+		</xsd:documentation>
+	</xsd:annotation>
+<!-- UV DataProduct related declarations -->
+	<!--xsd:element name="uvDataProduct" substitutionGroup="mom2:anyDataProduct" type="UVDataProduct"/>
+	<xsd:complexType name="UVDataProduct">
+		<xsd:complexContent>
+			<xsd:extension base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificUVDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence-->
+				<!-- xsd:attribute name="id" type="xsd:integer" default="0"/ -->
+				<!-- xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/ -->
+				<!--xsd:attribute name="topology" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType-->
+	<!--xsd:element name="specificUVDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificUVDataProductAttributes"/>
+	<xsd:complexType name="SpecificUVDataProductAttributes">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributes">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="subband" type="xsd:nonNegativeInteger"/>
+					<xsd:element minOccurs="0" name="stationSubband" type="xsd:nonNegativeInteger"/>
+					<xsd:element minOccurs="0" name="centralFrequency" type="mom2:Frequency"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType--><!-- Beamformed DataProduct related declarations -->
+	<!--xsd:element name="bfDataProduct" substitutionGroup="mom2:anyDataProduct" type="BFDataProduct"/>
+	<xsd:complexType name="BFDataProduct">
+		<xsd:complexContent>
+			<xsd:extension base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificBFDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence-->
+				<!-- xsd:attribute name="id" type="xsd:integer" default="0"/ -->
+				<!-- xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/ -->
+				<!--xsd:attribute name="topology" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType-->
+	<!--xsd:element name="specificBFDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificBFDataProductAttributes"/>
+	<xsd:complexType name="SpecificBFDataProductAttributes">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributes">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType--><!-- TBB DataProduct related declarations -->
+	<!--xsd:element name="tbbDataProduct" substitutionGroup="mom2:anyDataProduct" type="TBBDataProduct"/>
+	<xsd:complexType name="TBBDataProduct">
+		<xsd:complexContent>
+			<xsd:restriction base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificTBBDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificTBBDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificTBBDataProductAttributes"/>
+	<xsd:complexType name="SpecificTBBDataProductAttributes">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributes">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="numberOfSamples" type="xsd:positiveInteger"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType--><!-- PixelMap DataProduct related declarations -->
+	<!--xsd:complexType name="PixelMapDataProduct" abstract="true">
+		<xsd:complexContent>
+			<xsd:restriction base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificPixelMapDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificPixelMapDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificPixelMapDataProductAttributes"/>
+	<xsd:complexType name="SpecificPixelMapDataProductAttributes">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributes">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="numberOfAxes" type="xsd:positiveInteger"/>
+					<xsd:element minOccurs="0" maxOccurs="unbounded" name="axis" type="Axis"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Axis">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="number" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="unit" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="length" type="xsd:nonNegativeInteger"/>
+		</xsd:sequence>
+	</xsd:complexType--><!-- Sky Image DataProduct related declarations -->
+	<!--xsd:element name="skyImageDataProduct" substitutionGroup="mom2:anyDataProduct" type="SkyImageDataProduct"/>
+	<xsd:complexType name="SkyImageDataProduct">
+		<xsd:complexContent>
+			<xsd:restriction base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificSkyImageDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificSkyImageDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificSkyImageDataProductAttributes"/>
+	<xsd:complexType name="SpecificSkyImageDataProductAttributes">
+		<xsd:complexContent>
+			<xsd:extension base="SpecificPixelMapDataProductAttributes">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="pointing" type="Pointing"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Pointing">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="rightAscension" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="declination" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="equinox" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType--><!-- Pulsar Pipeline DataProduct related declarations -->
+	<!--xsd:element name="pulsarDataProduct" substitutionGroup="mom2:anyDataProduct" type="PulsarDataProduct"/>
+	<xsd:complexType name="PulsarDataProduct">
+		<xsd:complexContent>
+			<xsd:extension base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificBFDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence-->
+				<!-- xsd:attribute name="id" type="xsd:integer" default="0"/ -->
+				<!-- xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/ -->
+				<!-- xsd:attribute name="topology" type="xsd:string"/ -->
+			<!--/xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificPulsarDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificPulsarDataProductAttributes"/>
+	<xsd:complexType name="SpecificPulsarDataProductAttributes">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributes">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType--><!-- Generic DataProduct related declarations -->
+	<!--xsd:element name="genericDataProduct" substitutionGroup="mom2:anyDataProduct" type="GenericDataProduct"/>
+	<xsd:complexType name="GenericDataProduct">
+		<xsd:complexContent>
+			<xsd:restriction base="DataProduct">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageCluster"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRef"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocations"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType-->
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/LofarMoM2.xsd b/SAS/Specification_Services/lib/LofarMoM2.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..ba4adc331ebe0b0260eb4f4da23672f1286ea056
--- /dev/null
+++ b/SAS/Specification_Services/lib/LofarMoM2.xsd
@@ -0,0 +1,1305 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/MoM2-Lofar" version="3.0" xmlns:persistent="http://www.astron.nl/PersistentObjects" xmlns:mom2="http://www.astron.nl/MoM2" xmlns="http://www.astron.nl/MoM2-Lofar" xmlns:user="http://www.astron.nl/useradmin" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<xsd:import schemaLocation="MoM2.xsd" namespace="http://www.astron.nl/MoM2"/>
+	<xsd:import schemaLocation="UserAdmin.xsd" namespace="http://www.astron.nl/useradmin"/>
+	<xsd:import schemaLocation="PersistentObjects.xsd" namespace="http://www.astron.nl/PersistentObjects"/>
+	<xsd:annotation>
+		<xsd:documentation>
+    	XML Schema for the MoM3 datamodel of Lofar
+	</xsd:documentation>
+	</xsd:annotation><!-- Project related declarations -->
+	<xsd:element name="project" substitutionGroup="mom2:project" type="LofarProjectType"/>
+	<xsd:complexType name="LofarProjectType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:ProjectType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="version" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="template" type="LofarTemplateType"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:element minOccurs="0" name="usedDataProducts" nillable="true" type="IndexedLofarProjectInputListType"/>
+					<xsd:element minOccurs="0" name="children" type="IndexedLofarCollectionChildListType"/>
+					<xsd:element minOccurs="0" name="members" nillable="true" type="mom2:IndexedMemberListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="allocation"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="releaseDate" type="xsd:date"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarTemplateType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+		</xsd:sequence>
+		<xsd:attribute name="version" type="xsd:string" use="required"/>
+		<xsd:attribute name="author" type="xsd:string" use="required"/>
+		<xsd:attribute name="changedBy" type="xsd:string" use="required"/>
+	</xsd:complexType>
+	<xsd:element name="allocation" substitutionGroup="mom2:allocation" type="LofarAllocationType"/>
+	<xsd:complexType name="LofarAllocationType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:AllocationType">
+				<xsd:sequence>
+					<xsd:element ref="resource" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="resource" type="LofarResourceType"/>
+	<xsd:complexType name="LofarResourceType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:ResourceType">
+				<xsd:attribute name="queue" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarProjectRefType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarProjectType">
+				<xsd:attribute name="id" type="xsd:integer" use="required"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarProjectInputListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductListType">
+				<xsd:sequence>
+					<xsd:element name="item" type="IndexedLofarProjectInputItemType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarProjectInputItemType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductItemType">
+				<xsd:choice>
+					<xsd:element ref="proposalDocument"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="proposalDocument" substitutionGroup="mom2:anyDataProduct" type="LofarProposalDocumentType"/>
+	<xsd:complexType name="LofarProposalDocumentType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:DataProductType">
+				<xsd:sequence>
+					<xsd:element name="name" type="xsd:string"/><!--
+						The current LofarProject will be the owner! <xsd:element name="ownerMom2Object" type="Mom2ObjectRefType"
+						minOccurs="0"> </xsd:element>
+					-->
+					<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+					<xsd:element minOccurs="0" fixed="PROPOSAL" name="type" type="xsd:string"/><!--
+						timeStamp to be set equal to time of upload! <xsd:element name="timeStamp" type="xsd:dateTime" minOccurs="0">
+						</xsd:element>
+					-->
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Collection related declarations -->
+	<xsd:element name="folder" substitutionGroup="mom2:anyMom2Object" type="LofarCollectionType"/>
+	<xsd:complexType name="LofarCollectionType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:CollectionType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:element minOccurs="0" name="children" nillable="true" type="IndexedLofarCollectionChildListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="topology_parent" type="xsd:boolean"/>
+				<xsd:attribute name="update_folder" type="xsd:boolean"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarCollectionChildListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedMom2ObjectListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarCollectionChildItemType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarCollectionChildItemType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedMom2ObjectItemType">
+				<xsd:choice>
+					<xsd:element ref="folder"/>
+					<xsd:element ref="observation"/>
+					<xsd:element ref="pipeline"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Observation related declarations -->
+	<xsd:element name="observation" substitutionGroup="mom2:anyMom2Object" type="LofarObservationType"/>
+	<xsd:complexType name="LofarObservationType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:CollectionType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="processingCluster" type="ProcessingClusterType"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="predecessor_topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:element minOccurs="0" name="usedDataProducts" nillable="true" type="mom2:IndexedDataProductListType"/>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="mom2:IndexedDataProductListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="observationAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="children" type="IndexedLofarObservationChildListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:simpleType name="MemoryStorageUnit">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="byte"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="MemoryStorageType">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:nonNegativeInteger">
+				<xsd:attribute name="unit" type="MemoryStorageUnit" use="required"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:complexType name="ProcessingClusterType">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="partition" type="xsd:string"/>
+			<xsd:element name="numberOfTasks" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="minRAMPerTask" type="MemoryStorageType"/>
+			<xsd:element minOccurs="0" name="minScratchPerTask" type="MemoryStorageType"/>
+			<xsd:element minOccurs="0" name="maxDurationPerTask" type="xsd:duration"/>
+			<xsd:element name="numberOfCoresPerTask" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="runSimultaneous" type="xsd:boolean"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="observationAttributes" substitutionGroup="mom2:specificAttributes" type="LofarObservationAttributesType"/>
+	<xsd:complexType name="LofarObservationAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="observationId" type="xsd:nonNegativeInteger" nillable="true"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="projectName" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="instrument" type="LofarInstrumentType"/>
+					<xsd:element minOccurs="0" name="defaultTemplate" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="tbbPiggybackAllowed" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" name="aartfaacPiggybackAllowed" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" name="userSpecification" type="LofarObservationSpecificationType"/>
+					<xsd:element minOccurs="0" name="systemSpecification" type="LofarObservationSpecificationType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarObservationSpecificationType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="correlatedData" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="filteredData" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="beamformedData" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="coherentStokesData" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="incoherentStokesData" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="antenna" type="LofarAntennaSetType"/>
+			<xsd:element minOccurs="0" name="clock" type="LofarClockType"/>
+			<xsd:element minOccurs="0" name="instrumentFilter" type="LofarBandFilterType"/>
+			<xsd:element minOccurs="0" name="integrationInterval" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="channelsPerSubband" type="xsd:short"/>
+			<xsd:element minOccurs="0" name="coherentDedisperseChannels" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="tiedArrayBeams" type="LofarArrayBeamsType"/>
+			<xsd:element minOccurs="0" name="stokes" type="LofarStokesType"/>
+			<xsd:element minOccurs="0" name="stationSet" type="LofarStationSelectionType"/><!-- xsd:element minOccurs="0" name="stations" type="xsd:string"/ -->
+			<xsd:element minOccurs="0" name="stations" type="LofarStationsType"/>
+			<xsd:element minOccurs="0" name="timeFrame">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string">
+						<xsd:enumeration value="UT"/>
+						<xsd:enumeration value="LST"/>
+					</xsd:restriction>
+				</xsd:simpleType>
+			</xsd:element>
+			<xsd:element minOccurs="0" name="startTime" type="xsd:dateTime"/>
+			<xsd:element minOccurs="0" name="endTime" type="xsd:dateTime"/>
+			<xsd:element minOccurs="0" name="duration" type="xsd:duration"/>
+			<xsd:element minOccurs="0" name="bypassPff" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="enableSuperterp" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="numberOfBitsPerSample" type="xsd:nonNegativeInteger"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="LofarArrayBeamsType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="flyseye" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="nrTabRings" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="tabRingSize" type="xsd:double" nillable="true"/>
+			<xsd:element minOccurs="0" name="tiedArrayBeamList" type="LofarArrayBeamListType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="LofarArrayBeamListType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" maxOccurs="unbounded" name="tiedArrayBeam">
+				<xsd:complexType>
+					<xsd:sequence>
+					 	<xsd:element name="coherent" type="xsd:boolean"/>
+						<xsd:element name="angle1" type="xsd:double"/>
+						<xsd:element name="angle2" type="xsd:double"/>
+					</xsd:sequence>
+					<xsd:attribute name="index" type="xsd:integer"/>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="StokesSelectionType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="I"/>
+			<xsd:enumeration value="IQUV"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="LofarStokesType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="integrateChannels" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="subbandsPerFileCS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element minOccurs="0" name="numberCollapsedChannelsCS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element minOccurs="0" name="stokesDownsamplingStepsCS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element minOccurs="0" name="whichCS" type="StokesSelectionType" nillable="true"/>
+			<xsd:element minOccurs="0" name="subbandsPerFileIS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element minOccurs="0" name="numberCollapsedChannelsIS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element minOccurs="0" name="stokesDownsamplingStepsIS" type="xsd:nonNegativeInteger" nillable="true"/>
+			<xsd:element minOccurs="0" name="whichIS" type="StokesSelectionType" nillable="true"/><!-- xsd:element minOccurs="0" name="integrationSteps" type="xsd:nonNegativeInteger" nillable="true"/ -->
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="LofarStationSelectionType">
+		<xsd:simpleContent>
+			<xsd:restriction base="AbstractLofarStationSelectionType">
+				<xsd:enumeration value="Single"/>
+				<xsd:enumeration value="Core"/>
+				<xsd:enumeration value="Dutch"/>
+				<xsd:enumeration value="All"/>
+				<xsd:enumeration value="Custom"/>
+			</xsd:restriction>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:complexType name="AbstractLofarStationSelectionType" abstract="true">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<xsd:attribute name="min" type="xsd:nonNegativeInteger"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarStationsType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" maxOccurs="unbounded" name="station" type="LofarStationType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="LofarStationType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="location" type="LofarCoordinatesType"/>
+			<xsd:element minOccurs="0" maxOccurs="2" name="antennaField" type="LofarAntennaFieldType"/>
+		</xsd:sequence>
+		<xsd:attribute name="name" type="xsd:string" use="required"/>
+	</xsd:complexType>
+	<xsd:simpleType name="LofarAntennaField">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="HBA0"/>
+			<xsd:enumeration value="HBA1"/>
+			<xsd:enumeration value="HBA0+1"/>
+			<xsd:enumeration value="HBA"/>
+			<xsd:enumeration value="LBA"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="LofarAntennaFieldType">
+		<xsd:sequence>
+			<xsd:element name="name" type="LofarAntennaField"/>
+			<xsd:element name="location" type="LofarCoordinatesType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="LofarCoordinatesType">
+		<xsd:sequence>
+			<xsd:element name="coordinateSystem">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string">
+						<xsd:enumeration value="WGS84"/>
+						<xsd:enumeration value="ITRF2000"/>
+					</xsd:restriction>
+				</xsd:simpleType>
+			</xsd:element>
+			<xsd:element name="x" type="xsd:double"/>
+			<xsd:element name="y" type="xsd:double"/>
+			<xsd:element name="z" type="xsd:double"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="LofarAntennaSetType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="HBA Zero"/>
+			<xsd:enumeration value="HBA One"/>
+			<xsd:enumeration value="HBA Dual"/>
+			<xsd:enumeration value="HBA Joined"/>
+			<xsd:enumeration value="LBA Outer"/>
+			<xsd:enumeration value="LBA Inner"/>
+			<xsd:enumeration value="LBA Sparse Even"/>
+			<xsd:enumeration value="LBA Sparse Odd"/>
+			<xsd:enumeration value="LBA X"/>
+			<xsd:enumeration value="LBA Y"/>
+			<xsd:enumeration value="HBA Zero Inner"/>
+			<xsd:enumeration value="HBA One Inner"/>
+			<xsd:enumeration value="HBA Dual Inner"/>
+			<xsd:enumeration value="HBA Joined Inner"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:simpleType name="LofarInstrumentType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Beam Observation"/>
+			<xsd:enumeration value="Interferometer"/>
+			<xsd:enumeration value="Tied Array"/>
+			<xsd:enumeration value="Transient Buffer Board"/>
+			<xsd:enumeration value="Direct Data Storage"/>
+			<xsd:enumeration value="Non Standard"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:simpleType name="LofarBandFilterType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="10-70 MHz"/>
+			<xsd:enumeration value="30-70 MHz"/>
+			<xsd:enumeration value="10-90 MHz"/>
+			<xsd:enumeration value="30-90 MHz"/>
+			<xsd:enumeration value="110-190 MHz"/>
+			<xsd:enumeration value="170-230 MHz"/>
+			<xsd:enumeration value="210-250 MHz"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="LofarClockType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="channelWidth" type="mom2:Frequency"/>
+			<xsd:element minOccurs="0" name="samplesPerSecond" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="subbandWidth" type="mom2:Frequency"/>
+			<xsd:element minOccurs="0" name="systemClock" type="mom2:Frequency"/>
+		</xsd:sequence>
+		<xsd:attribute name="mode" use="required">
+			<xsd:simpleType>
+				<xsd:restriction base="xsd:string">
+					<xsd:enumeration value="160 MHz"/>
+					<xsd:enumeration value="200 MHz"/>
+				</xsd:restriction>
+			</xsd:simpleType>
+		</xsd:attribute>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarObservationChildListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedMom2ObjectListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarObservationChildItemType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarObservationChildItemType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedMom2ObjectItemType">
+				<xsd:choice>
+					<xsd:element ref="measurement"/>
+					<xsd:element ref="pipeline"/><!-- WTF -->
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Measurement related declarations -->
+	<xsd:element name="measurement" substitutionGroup="mom2:anyMom2Object" type="LofarMeasurementType"/>
+	<xsd:complexType name="LofarMeasurementType" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:Mom2ObjectType"/>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Beam Measurement related declarations --><!-- xsd:complexType name="BeamMeasurementType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarMeasurementType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="beamMeasurementAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedLofarBeamResultDataProductListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType -->
+	<xsd:element name="beamMeasurementAttributes" substitutionGroup="mom2:specificAttributes" type="LofarBeamMeasurementAttributesType"/>
+	<xsd:complexType name="LofarBeamMeasurementAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType"><!--WTF !!!!1One!! -->
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="ra" type="xsd:double"/>
+					<xsd:element minOccurs="0" name="dec" type="xsd:double"/>
+					<xsd:element minOccurs="0" name="equinox" type="EquinoxType"/>
+					<xsd:element minOccurs="0" name="duration" type="xsd:duration"/>
+					<xsd:element minOccurs="0" name="startTime" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" name="endTime" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" name="centralFrequency" type="mom2:Frequency"/>
+					<xsd:element minOccurs="0" name="bandWidth" type="mom2:Frequency"/>
+					<xsd:element minOccurs="0" name="subbandsSpecification" type="LofarSubbandsSpecificationType"/>
+					<xsd:element minOccurs="0" name="measurementType">
+						<xsd:simpleType>
+							<xsd:restriction base="xsd:string">
+								<xsd:enumeration value="Target"/>
+								<xsd:enumeration value="Calibration"/>
+								<xsd:enumeration value="Tune Up"/>
+								<xsd:enumeration value="Miscellaneous"/>
+							</xsd:restriction>
+						</xsd:simpleType>
+					</xsd:element>
+					<xsd:element minOccurs="0" name="specification" type="LofarBeamMeasurementSpecificationAttributesType"/><!--WTF !!!!1One!! -->
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarBeamMeasurementSpecificationAttributesType">
+		<xsd:sequence>
+			<xsd:element name="targetName" type="xsd:string"/>
+			<xsd:element name="ra" type="xsd:double"/>
+			<xsd:element name="dec" type="xsd:double"/>
+			<xsd:element name="equinox" type="EquinoxType"/>
+			<xsd:element name="duration" type="xsd:duration"/>
+			<xsd:element name="subbandsSpecification" type="LofarSubbandsSpecificationType"/>
+			<xsd:element minOccurs="0" name="tiedArrayBeams" type="LofarArrayBeamsType"/><!--Need to remove for UVMeasurement -->
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="LofarSubbandsSpecificationType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="bandWidth" type="mom2:Frequency"/>
+			<xsd:element minOccurs="0" name="centralFrequency" type="mom2:Frequency"/>
+			<xsd:element minOccurs="0" name="contiguous" type="xsd:boolean"/>
+			<xsd:element minOccurs="0" name="subbands" type="SubbandArrayType"/>
+		</xsd:sequence>
+	</xsd:complexType><!-- xsd:complexType name="LofarCustomSubbandsSpecificationType"/ -->
+	<xsd:simpleType name="SubbandArrayType">
+		<xsd:restriction base="xsd:string">
+			<xsd:pattern value="\d{1,3}(,\d{1,3})*|\d{1,3}\.\.\d{1,3}"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:simpleType name="EquinoxType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="J2000"/>
+			<xsd:enumeration value="B1950"/>
+			<xsd:enumeration value="Other"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="IndexedLofarBeamResultDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarBeamResultDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarBeamResultDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductItemType">
+				<xsd:choice>
+					<xsd:element ref="uvDataProduct"/>
+					<xsd:element ref="bfDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- UV Measurement related declarations -->
+	<xsd:complexType name="UVMeasurementType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarMeasurementType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="uvMeasurementAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedLofarUVResultDataProductListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="uvMeasurementAttributes" substitutionGroup="mom2:specificAttributes" type="LofarBeamMeasurementAttributesType"/>
+	<xsd:complexType name="LofarUVMeasurementAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarBeamMeasurementAttributesType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarUVResultDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="IndexedLofarBeamResultDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarUVResultDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarUVResultDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="IndexedLofarBeamResultDataProductType">
+				<xsd:choice>
+					<xsd:element ref="uvDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- BeamFormed Measurement related declarations -->
+	<xsd:complexType name="BFMeasurementType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarMeasurementType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="bfMeasurementAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedLofarBFResultDataProductListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="bfMeasurementAttributes" substitutionGroup="mom2:specificAttributes" type="LofarBFMeasurementAttributesType"/>
+	<xsd:complexType name="LofarBFMeasurementAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarBeamMeasurementAttributesType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarBFResultDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="IndexedLofarBeamResultDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarBFResultDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarBFResultDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="IndexedLofarBeamResultDataProductType">
+				<xsd:choice>
+					<xsd:element ref="uvDataProduct"/>
+					<xsd:element ref="bfDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- TBB Measurement (Event?) related declarations -->
+	<xsd:complexType name="TBBMeasurementType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarMeasurementType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="tbbMeasurementAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedLofarTBBResultDataProductListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="tbbMeasurementAttributes" substitutionGroup="mom2:specificAttributes" type="LofarTBBMeasurementAttributesType"/>
+	<xsd:complexType name="LofarTBBMeasurementAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarTBBResultDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarTBBResultDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarTBBResultDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductItemType">
+				<xsd:choice>
+					<xsd:element ref="tbbDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Generic Measurement related declarations -->
+	<xsd:complexType name="GenericMeasurementType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarMeasurementType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="genericMeasurementAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedLofarGenericResultDataProductListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="genericMeasurementAttributes" substitutionGroup="mom2:specificAttributes" type="LofarTBBMeasurementAttributesType"/>
+	<xsd:complexType name="LofarGenericMeasurementAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarGenericResultDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarGenericResultDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarGenericResultDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductItemType">
+				<xsd:choice>
+					<xsd:element ref="genericDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- General Pipeline related declarations -->
+	<xsd:element name="pipeline" substitutionGroup="mom2:anyMom2Object" type="LofarPipelineType"/>
+	<xsd:complexType name="LofarPipelineType" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:CollectionType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarPipelineAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="pipelineId" type="xsd:nonNegativeInteger"/>
+					<xsd:element minOccurs="0" name="userSpecification" type="LofarPipelineSpecificationType"/>
+					<xsd:element minOccurs="0" name="systemSpecification" type="LofarPipelineSpecificationType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="LofarPipelineSpecificationType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="startTime" type="xsd:dateTime"/>
+			<xsd:element minOccurs="0" name="endTime" type="xsd:dateTime"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarPipelineChildListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedMom2ObjectListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedLofarPipelineChildItemType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedLofarPipelineChildItemType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedMom2ObjectItemType">
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Averaging Pipeline related declarations -->
+	<xsd:complexType name="AveragingPipelineType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarPipelineType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="predecessor_topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="processingCluster" type="ProcessingClusterType"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="averagingPipelineAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="usedDataProducts" nillable="true" type="mom2:IndexedDataProductListType"/>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="mom2:IndexedDataProductListType"/><!-- xsd:element minOccurs="0" name="children" type="IndexedLofarPipelineChildListType"/ --><!--WTF-->
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="DemixingParametersType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="averagingFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="averagingTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="demixFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="demixTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="demixAlways" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="demixIfNeeded" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="ignoreTarget" type="xsd:boolean" nillable="true"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="BbsParametersType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="averagingFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="averagingTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="demixFreqStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="demixTimeStep" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="demixAlways" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="demixIfNeeded" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="ignoreTarget" type="xsd:boolean"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="averagingPipelineAttributes" substitutionGroup="mom2:specificAttributes" type="AveragingPipelineAttributesType"/>
+	<xsd:complexType name="AveragingPipelineAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarPipelineAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="defaultTemplate" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="duration" type="xsd:duration"/>
+					<xsd:element minOccurs="0" name="startTime" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" name="endTime" type="xsd:dateTime" nillable="true"/>
+					<xsd:element minOccurs="0" name="demixingParameters" type="DemixingParametersType"/>
+					<xsd:element minOccurs="0" name="bbsParameters" type="BbsParametersType"/>
+					<xsd:element minOccurs="0" name="flaggingStrategy" type="xsd:string"/><!-- xsd:element minOccurs="0" name="frequencyIntegrationStep" type="xsd:nonNegativeInteger"/ --><!-- xsd:element minOccurs="0" name="timeIntegrationStep" type="xsd:nonNegativeInteger"/ -->
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Imaging Pipeline related declarations -->
+	<xsd:complexType name="ImagingPipelineType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarPipelineType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="predecessor_topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="processingCluster" type="ProcessingClusterType"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="imagingPipelineAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="usedDataProducts" nillable="true" type="IndexedImagingPipelineUsedDataProductListType"/>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedImagingPipelineResultDataProductListType"/><!-- xsd:element minOccurs="0" name="children" type="IndexedLofarPipelineChildListType"/ --><!--WTF-->
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="imagingPipelineAttributes" substitutionGroup="mom2:specificAttributes" type="ImagingPipelineAttributesType"/>
+	<xsd:complexType name="ImagingPipelineAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="AveragingPipelineAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="imagerIntegrationTime" type="xsd:double"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedImagingPipelineUsedDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedImagingPipelineUsedDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedImagingPipelineUsedDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductItemType">
+				<xsd:choice>
+					<xsd:element ref="uvDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedImagingPipelineResultDataProductListType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductListType">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" name="item" type="IndexedImagingPipelineResultDataProductType"/>
+				</xsd:sequence>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedImagingPipelineResultDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="mom2:IndexedDataProductItemType">
+				<xsd:choice>
+					<xsd:element ref="uvDataProduct"/>
+					<xsd:element ref="skyImageDataProduct"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Pulsar Pipeline related declarations -->
+	<xsd:complexType name="PulsarPipelineType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarPipelineType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="predecessor_topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="processingCluster" type="ProcessingClusterType"/>
+					<xsd:element minOccurs="0" name="parent" type="mom2:CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="mom2:ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="mom2:StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="mom2:CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="mom2:IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="mom2:IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="mom2:IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="mom2:IndexedSchedulingRemarkListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="pulsarPipelineAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="usedDataProducts" nillable="true" type="mom2:IndexedDataProductListType"/>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="mom2:IndexedDataProductListType"/>
+					<xsd:element minOccurs="0" name="children" type="IndexedLofarPipelineChildListType"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="pulsarPipelineAttributes" substitutionGroup="mom2:specificAttributes" type="PulsarPipelineAttributesType"/>
+	<xsd:complexType name="PulsarPipelineAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarPipelineAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="defaultTemplate" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="duration" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="_2bf2fitsExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="_8bitConversionSigma" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="decodeNblocks" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="decodeSigma" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="digifilExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="dspsrExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="dynamicSpectrumTimeAverage" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="nofold" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="nopdmp" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="norfi" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="prepdataExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="prepfoldExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="prepsubbandExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="pulsar" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="rawTo8bit" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="rfifindExtraOpts" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="rrats" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="singlePulse" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="skipDsps" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="skipDynamicSpectrum" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="skipPrepfold" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="tsubint" type="xsd:string"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType><!-- DataProduct related declarations -->
+	<xsd:complexType name="LofarDataProductType" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:DataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:simpleType name="ChecksumAlgorithm">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="MD5"/>
+			<xsd:enumeration value="Adler32"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="ChecksumTypes">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="checksum" type="ChecksumType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="ChecksumType">
+		<xsd:sequence>
+			<xsd:element name="algorithm" type="ChecksumAlgorithm"/>
+			<xsd:element name="value" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType><!-- UV DataProduct related declarations -->
+	<xsd:element name="uvDataProduct" substitutionGroup="mom2:anyDataProduct" type="UVDataProductType"/>
+	<xsd:complexType name="UVDataProductType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificUVDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<!-- xsd:attribute name="id" type="xsd:integer" default="0"/ -->
+				<!-- xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/ -->
+				<xsd:attribute name="topology" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="StorageClusterType">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="partition" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="specificUVDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificUVDataProductAttributesType"/>
+	<xsd:complexType name="SpecificUVDataProductAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="subband" type="xsd:nonNegativeInteger"/>
+					<xsd:element minOccurs="0" name="stationSubband" type="xsd:nonNegativeInteger"/>
+					<xsd:element minOccurs="0" name="centralFrequency" type="mom2:Frequency"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Beamformed DataProduct related declarations -->
+	<xsd:element name="bfDataProduct" substitutionGroup="mom2:anyDataProduct" type="BFDataProductType"/>
+	<xsd:complexType name="BFDataProductType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificBFDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<!-- xsd:attribute name="id" type="xsd:integer" default="0"/ -->
+				<!-- xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/ -->
+				<xsd:attribute name="topology" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificBFDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificBFDataProductAttributesType"/>
+	<xsd:complexType name="SpecificBFDataProductAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType><!-- TBB DataProduct related declarations -->
+	<xsd:element name="tbbDataProduct" substitutionGroup="mom2:anyDataProduct" type="TBBDataProductType"/>
+	<xsd:complexType name="TBBDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificTBBDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificTBBDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificTBBDataProductAttributesType"/>
+	<xsd:complexType name="SpecificTBBDataProductAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="numberOfSamples" type="xsd:positiveInteger"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType><!-- PixelMap DataProduct related declarations -->
+	<xsd:complexType name="PixelMapDataProductType" abstract="true">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificPixelMapDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificPixelMapDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificPixelMapDataProductAttributesType"/>
+	<xsd:complexType name="SpecificPixelMapDataProductAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="numberOfAxes" type="xsd:positiveInteger"/>
+					<xsd:element minOccurs="0" maxOccurs="unbounded" name="axis" type="AxisType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="AxisType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="number" type="xsd:nonNegativeInteger"/>
+			<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="unit" type="xsd:string"/>
+			<xsd:element minOccurs="0" name="length" type="xsd:nonNegativeInteger"/>
+		</xsd:sequence>
+	</xsd:complexType><!-- Sky Image DataProduct related declarations -->
+	<xsd:element name="skyImageDataProduct" substitutionGroup="mom2:anyDataProduct" type="SkyImageDataProductType"/>
+	<xsd:complexType name="SkyImageDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificSkyImageDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificSkyImageDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificSkyImageDataProductAttributesType"/>
+	<xsd:complexType name="SpecificSkyImageDataProductAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="SpecificPixelMapDataProductAttributesType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="pointing" type="PointingType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="PointingType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" name="rightAscension" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="declination" type="xsd:double"/>
+			<xsd:element minOccurs="0" name="equinox" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType><!-- Pulsar Pipeline DataProduct related declarations -->
+	<xsd:element name="pulsarDataProduct" substitutionGroup="mom2:anyDataProduct" type="PulsarDataProductType"/>
+	<xsd:complexType name="PulsarDataProductType">
+		<xsd:complexContent>
+			<xsd:extension base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificBFDataProductAttributes"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence><!-- xsd:attribute name="id" type="xsd:integer" default="0"/ --><!-- xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/ --><!-- xsd:attribute name="topology" type="xsd:string"/ -->
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="specificPulsarDataProductAttributes" substitutionGroup="mom2:specificAttributes" type="SpecificPulsarDataProductAttributesType"/>
+	<xsd:complexType name="SpecificPulsarDataProductAttributesType">
+		<xsd:complexContent>
+			<xsd:extension base="mom2:SpecificAttributesType">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType><!-- Generic DataProduct related declarations -->
+	<xsd:element name="genericDataProduct" substitutionGroup="mom2:anyDataProduct" type="GenericDataProductType"/>
+	<xsd:complexType name="GenericDataProductType">
+		<xsd:complexContent>
+			<xsd:restriction base="LofarDataProductType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="topology" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="status" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="storageCluster" type="StorageClusterType"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="mom2:Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="mom2:DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" name="storageTicket" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="fileSize" type="xsd:unsignedLong"/>
+					<xsd:element minOccurs="0" name="checksums" type="ChecksumTypes"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer" default="0"/>
+				<xsd:attribute name="mom2DPId" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/LofarProject.xsd b/SAS/Specification_Services/lib/LofarProject.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..5c5bd60b635e2113e39295614988951a2114266c
--- /dev/null
+++ b/SAS/Specification_Services/lib/LofarProject.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/LofarTrigger" version="0.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astron.nl/LofarTrigger"  xmlns:base="http://www.astron.nl/LofarBase">
+	<xsd:import schemaLocation="LofarBase.xsd" namespace="http://www.astron.nl/LofarBase"/>
+	<xsd:annotation>
+		<xsd:documentation>Definitions for LOFAR project and user submission</xsd:documentation>
+	</xsd:annotation>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Project entities============================
+	
+		Project and user related objects.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="Project">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="description" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="project" type="Project"/>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/LofarSpecification.xsd b/SAS/Specification_Services/lib/LofarSpecification.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..f6a30b1184b01c36029971b75f1737f129d932e3
--- /dev/null
+++ b/SAS/Specification_Services/lib/LofarSpecification.xsd
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/LofarSpecification" version="0.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astron.nl/LofarSpecification" xmlns:base="http://www.astron.nl/LofarBase">
+	<xsd:import schemaLocation="LofarBase.xsd" namespace="http://www.astron.nl/LofarBase"/>
+	<xsd:annotation>
+		<xsd:documentation>Definitions for LOFAR specification submission
+		
+		This is a document that uses the LofarBase and extends that with objects that are specific to the needs of being able to
+		specify activities, their relations and entities. This is partially compatible with the W3C provenance model in its naming.
+		
+		Compared to the old MoM XSD, this does not contain a project object. It is assumed the project exists, a specification should
+		not be able to edit it or add a new one. Thus only a reference to a project is in the specification.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Specification containers============================
+	
+		Currently we only support MoM folders as a container.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="Container">
+		<xsd:sequence>
+			<xsd:element name="temporaryIdentifier" type="base:Identifier"/>
+			<xsd:choice><!--Or should we be specific to the subtypes here?-->
+				<xsd:element name="folder" type="base:Folder"/>
+				<!-- Might be a SchedulingBlock and other types of containers in the future -->
+			</xsd:choice>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Specification activities============================
+	
+		Activities that the system can do and their related types and objects.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="DurationSpecification">
+		<xsd:sequence>
+			<xsd:element name="duration" type="xsd:duration"/><!-- FIXME we need to think about this some more, it might need to be a choice-->
+			<xsd:element name="minimumDuration" minOccurs="0" type="xsd:duration"/>
+			<xsd:element name="maximumDuration"  minOccurs="0" type="xsd:duration"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="TimeFrameType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="UT"/>
+			<xsd:enumeration value="LST"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="ActivityTimeWindowSpecification"> <!-- An activity will also have an actual (resolved/allocated) time window, this is specific to specifying it -->
+		<xsd:sequence>
+			<xsd:element name="timeFrame" default="UT">
+			</xsd:element>
+			<xsd:choice><!--How much flexibility do we want to support? -->
+				<xsd:sequence><!-- Specifies a window larger than duration -->
+					<xsd:element name="minStartTime" type="xsd:dateTime"/>
+					<xsd:element name="maxEndTime" type="xsd:dateTime"/>
+					<xsd:element name="duration" type="DurationSpecification"/><!-- Should be less than End - Start, othterwise use one of the other options -->
+				</xsd:sequence>		
+				<!-- xsd:sequence><This one seems redundant with startTime/duration?>
+					<xsd:element name="startTime" type="xsd:dateTime"/>
+					<xsd:element name="endTime" type="xsd:dateTime"/>
+				</xsd:sequence -->		
+				<xsd:sequence><!-- EndTime is implicit as startTime+duration -->
+					<xsd:element name="startTime" type="xsd:dateTime"/>
+					<xsd:element name="duration" type="DurationSpecification"/>
+				</xsd:sequence>		
+				<xsd:sequence> <!-- Start time is dependent on other activities/events  -->
+					<xsd:element name="duration" type="DurationSpecification"/>
+				</xsd:sequence>		
+			</xsd:choice>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:simpleType name="LofarStationSelectionType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Single"/>
+			<xsd:enumeration value="Core"/>
+			<xsd:enumeration value="Dutch"/>
+			<xsd:enumeration value="All"/>
+			<xsd:enumeration value="Custom"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="StationSelection">
+		<xsd:sequence>
+			<xsd:element name="stationSet" type="LofarStationSelectionType"/>
+			<xsd:choice>
+				<xsd:sequence>
+					<xsd:element name="minimumConstraint" type="xsd:integer"/>
+					<xsd:element name="maximumConstraint"  minOccurs="0" type="xsd:integer"/>
+				</xsd:sequence>
+				<xsd:element name="stations" type="base:Stations"/>
+			</xsd:choice>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="StationSelectionSpecification">
+		<xsd:sequence>
+			<xsd:element name="stationSelection" maxOccurs="4" type="StationSelection"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="Observation">
+		<xsd:complexContent>
+			<xsd:extension base="base:Observation">
+				<xsd:sequence>
+					<xsd:element name="stationSelectionSpecification" type="StationSelectionSpecification"/>
+					<xsd:element name="timeWindowSpecification" type="ActivityTimeWindowSpecification"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Activity">
+		<xsd:sequence>
+			<xsd:element name="temporaryIdentifier" type="base:Identifier"/>
+			<xsd:choice><!--Or should we be specific to the subtypes here?-->
+				<xsd:element name="observation" type="Observation"/>
+				<xsd:element name="measurement" type="base:Measurement"/><!-- maybe explicit part of Observation but makes it hard to make Relations?-->
+				<!-- we want to be specific about which types can generate wich types of dataproducts/entities -->
+				<xsd:element name="pipeline" type="base:Pipeline"/>
+				<xsd:element name="ingest" type="base:Ingest"/>
+				<xsd:element name="cleanup" type="base:Cleanup"/>
+			</xsd:choice>
+			<xsd:element name="status" minOccurs="0" type="xsd:string"/><!-- default would be opened, might need to be come an enum --> 
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Specification entities============================
+	
+		TBD
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:simpleType name="DataProductType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="UVDataProduct"/>
+			<xsd:enumeration value="BFDataProduct"/>
+			<xsd:enumeration value="TBBDataProduct"/>
+			<xsd:enumeration value="PixelMapDataProduct"/>
+			<xsd:enumeration value="SkyImageDataProduct"/>
+			<xsd:enumeration value="PulsarDataProduct"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Entity">
+		<xsd:sequence>
+			<xsd:element name="temporaryIdentifier" type="base:Identifier"/>
+			<xsd:element name="dataproductType" type="DataProductType"/>
+			<xsd:element name="storageCluster" type="base:StorageCluster"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Specification relations============================
+	
+		These relations allow more flexibility than a purely nested structure. They can show the different ways that objects are related
+		to allow for different types of visualisation.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:simpleType name="ChildRelationType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="folder-folder"/> <!-- should be made more specific -->
+			<xsd:enumeration value="folder-activity"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="ChildRelation">
+		<xsd:complexContent>
+			<xsd:extension base="Relation">
+				<xsd:sequence>
+					<xsd:element name="parent" type="base:Identifier"/>
+					<xsd:element name="child" type="base:Identifier"/>
+					<xsd:element name="type" type="ChildRelationType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:simpleType name="SibblingRelationType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="group"/>
+			<xsd:enumeration value="calibrator"/><!-- Not correct FIXME-->
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="SibblingRelation"><!-- We need to make this smarter for other sibbling relations-->
+		<xsd:complexContent>
+			<xsd:extension base="Relation">
+				<xsd:sequence>
+					<xsd:element name="sibbling" minOccurs="1" maxOccurs="unbounded" type="base:Identifier"/>
+					<xsd:element name="type" type="SibblingRelationType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:simpleType name="ProducerRelationType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="output"/><!-- ProducedBy, needs better name?-->
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="ProducerRelation">
+		<xsd:complexContent>
+			<xsd:extension base="Relation">
+				<xsd:sequence>
+					<xsd:element name="activity" type="base:Identifier"/>
+					<xsd:element name="entity" type="base:Identifier"/>
+					<xsd:element name="type" type="ProducerRelationType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:simpleType name="UserRelationType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="input"/><!-- UsedBy, needs better name?-->
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="UserRelation">
+		<xsd:complexContent>
+			<xsd:extension base="Relation">
+				<xsd:sequence>
+					<xsd:element name="entity" type="base:Identifier"/>
+					<xsd:element name="activity" type="base:Identifier"/>
+					<xsd:element name="type" type="UserRelationType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Relation" abstract="true"/>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Specification root element============================
+	
+		This contains the other objects in the specification and their relations. It also contains properties that pertain to the whole
+		specification and not a specific object. It needs to have at least one container/folder to put into the project in MoM that will then
+		contain other objects. Activities and entities should and can't be related to the project directly.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:simpleType name="QualityOfServiceType">
+		<xsd:restriction base="xsd:string"><!-- These names are not very clear to me without explanation -->
+			<xsd:enumeration value="THROUGHPUT"/> <!-- The current and default behavior -->
+			<xsd:enumeration value="LATENCY"/> <!-- This job needs to be optimized for fast data delivery -->
+			<xsd:enumeration value="IDLE"/> <!-- Jobs that should only be ran if the telescope is idle (test jobs for example). -->
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Specification">
+		<xsd:sequence>
+			<xsd:element name="version" type="xsd:string"/>
+			<xsd:element name="projectReference" type="base:ProjectReference"/>
+			<xsd:element name="userName" type="xsd:string"/>
+			<xsd:element name="comment" type="xsd:string" minOccurs="0"/><!--Might not be needed?-->
+			<xsd:element name="generatorVersion" type="xsd:string"/>
+			<xsd:element name="priority" type="xsd:nonNegativeInteger"/>
+			<xsd:element name="qualityOfService" type="QualityOfServiceType" default="THROUGHPUT"/>
+			<xsd:element name="container" type="Container" maxOccurs="unbounded"/> <!-- do we want it all in one container? without maxOccurs="unbounded"-->
+			<xsd:element name="activity" type="Activity"  minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="entity" type="Entity"  minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="relation" type="Relation"  minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="specification" type="Specification"/>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/LofarTrigger.xsd b/SAS/Specification_Services/lib/LofarTrigger.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..31a71e228d4385e8f879c9d69501dd92ecdbde5a
--- /dev/null
+++ b/SAS/Specification_Services/lib/LofarTrigger.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/LofarTrigger" version="0.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astron.nl/LofarTrigger" xmlns:spec="http://www.astron.nl/LofarSpecification" xmlns:base="http://www.astron.nl/LofarBase">
+	<xsd:import schemaLocation="LofarSpecification.xsd" namespace="http://www.astron.nl/LofarSpecification"/>
+	<xsd:import schemaLocation="LofarBase.xsd" namespace="http://www.astron.nl/LofarBase"/>
+	<xsd:annotation>
+		<xsd:documentation>Definitions for LOFAR trigger submission</xsd:documentation>
+	</xsd:annotation>
+	<xsd:annotation>
+		<xsd:documentation>============================LOFAR Trigger root element============================
+	
+		Class for submission of a specification based on a trigger, with the relevant trigger information.
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="Trigger">
+		<xsd:sequence>
+			<xsd:element name="version" type="xsd:string"/>
+			<xsd:element name="name" type="xsd:string"/>
+			<xsd:element name="description" type="xsd:string"/>
+			<xsd:element name="projectReference" type="base:ProjectReference"/>
+			<xsd:element name="submitter" type="base:ContactInformation"/><!-- Do we want to enforce this as the authenticated user? -->
+			<xsd:element name="userName" type="xsd:string"/><!-- The same as the authenticated user? -->
+			<xsd:element name="comment" type="xsd:string" minOccurs="0"/><!--Might not be needed?-->
+			<xsd:element name="qualityOfService" type="spec:QualityOfServiceType"/><!--Might not be needed?-->
+			<xsd:element name="event" type="base:Event" maxOccurs="unbounded"/><!--Maybe there should be EventList?-->
+			<xsd:element name="specification" type="spec:Specification"/>
+			<xsd:element name="generatorVersion" type="xsd:string"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="trigger" type="Trigger"/>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/MoM2.xsd b/SAS/Specification_Services/lib/MoM2.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..b004ea503e155ccbf7e76bcdf412d8fc83b2a347
--- /dev/null
+++ b/SAS/Specification_Services/lib/MoM2.xsd
@@ -0,0 +1,704 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema targetNamespace="http://www.astron.nl/MoM2" version="1.0" xmlns:persistent="http://www.astron.nl/PersistentObjects" xmlns="http://www.astron.nl/MoM2" xmlns:user="http://www.astron.nl/useradmin" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<xsd:import schemaLocation="UserAdmin.xsd" namespace="http://www.astron.nl/useradmin"/>
+	<xsd:import schemaLocation="PersistentObjects.xsd" namespace="http://www.astron.nl/PersistentObjects"/>
+	<xsd:annotation>
+		<xsd:documentation>
+			XML Schema for the MoM2 datamodel
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:element name="projects">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" ref="project"/>
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="project" type="ProjectType"/>
+	<xsd:complexType name="ProjectType" abstract="true">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="CollectionType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="members" nillable="true" type="IndexedMemberListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="allocation"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="releaseDate" type="xsd:date"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="ProjectRefType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="ProjectType"><!--
+					Project reference is unique if either mom2Id or name is given NB exactly one of these should be provided but no
+					validation in the schema (fundamental schema definition problem)!
+				-->
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedMemberListType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" maxOccurs="unbounded" name="item">
+				<xsd:complexType>
+					<xsd:choice>
+						<xsd:element name="registeredMember" type="RegisteredMemberType"/>
+						<xsd:element name="nonRegisteredMember" type="NonRegisteredMemberType"/>
+					</xsd:choice>
+					<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="MemberType" abstract="true">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="affilliation" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="email" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="country" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="roles">
+						<xsd:complexType>
+							<xsd:sequence maxOccurs="unbounded">
+								<xsd:element ref="anyRole"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="ProjectRoleType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="ProjectRoleRefType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="ProjectRoleType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyRole" type="ProjectRoleRefType"/>
+	<xsd:element name="pi" substitutionGroup="anyRole">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="ProjectRoleRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="Pi" name="name" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="1" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="coi" substitutionGroup="anyRole">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="ProjectRoleRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="Co-I" name="name" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="2" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="friend" substitutionGroup="anyRole">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="ProjectRoleRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="Friend" name="name" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="3" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="contactAuthor" substitutionGroup="anyRole">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="ProjectRoleRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="Contact author" name="name" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="4" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="potentialObserver" substitutionGroup="anyRole">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="ProjectRoleRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="Potential observer" name="name" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="5" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:complexType name="RegisteredMemberType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="MemberType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="user" type="user:UserRefType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="NonRegisteredMemberType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="MemberType">
+				<xsd:sequence/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="AllocationType">
+		<xsd:sequence>
+			<xsd:choice minOccurs="0" maxOccurs="unbounded">
+				<xsd:element ref="anyResource"/>
+			</xsd:choice>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="allocation" type="AllocationType"/>
+	<xsd:complexType name="ResourceType" abstract="true">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:double">
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="unit" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyResource" type="ResourceType"/>
+	<xsd:element name="observingTime" substitutionGroup="anyResource">
+		<xsd:complexType>
+			<xsd:simpleContent>
+				<xsd:restriction base="ResourceType">
+					<xsd:simpleType>
+						<xsd:restriction base="xsd:double"/>
+					</xsd:simpleType>
+					<xsd:attribute fixed="time" name="name" type="xsd:string"/>
+					<xsd:attribute fixed="seconds" name="unit" type="xsd:string"/>
+				</xsd:restriction>
+			</xsd:simpleContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:complexType name="CollectionType" abstract="true">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="Mom2ObjectType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="children" nillable="true" type="IndexedMom2ObjectListType"/>
+					<xsd:element minOccurs="0" name="references" nillable="true" type="IndexedMom2ObjectRefListType"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="CollectionRefType" abstract="true">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="CollectionType">
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger" use="required"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedMom2ObjectListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedMom2ObjectItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedMom2ObjectItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:IndexedListItemType">
+				<xsd:choice>
+					<xsd:any minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:choice>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyMom2Object" type="Mom2ObjectType"/>
+	<xsd:complexType name="IndexedMom2ObjectRefListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedMom2ObjectRefItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedMom2ObjectRefItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:IndexedListItemType">
+				<xsd:choice minOccurs="0">
+					<xsd:element ref="anyMom2ObjectRef"/>
+				</xsd:choice>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyMom2ObjectRef" type="Mom2ObjectRefType"/>
+	<xsd:complexType name="Mom2ObjectType" abstract="true">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="parent" type="CollectionRefType"/>
+					<xsd:element minOccurs="0" name="ownerProject" type="ProjectRefType"/>
+					<xsd:element minOccurs="0" name="statusHistory" type="StatusHistoryType"/>
+					<xsd:element minOccurs="0" name="currentStatus" type="CurrentStatusType"/>
+					<xsd:element minOccurs="0" name="generalRemarks" nillable="true" type="IndexedGeneralRemarkListType"/>
+					<xsd:element minOccurs="0" name="inspectionReports" nillable="true" type="IndexedInspectionReportListType"/>
+					<xsd:element minOccurs="0" name="specificationRemarks" nillable="true" type="IndexedSpecificationRemarkListType"/>
+					<xsd:element minOccurs="0" name="schedulingRemarks" nillable="true" type="IndexedSchedulingRemarkListType"/>
+					<xsd:element minOccurs="0" name="usedDataProducts" nillable="true" type="IndexedDataProductListType"/>
+					<xsd:element minOccurs="0" name="resultDataProducts" nillable="true" type="IndexedDataProductListType"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificAttributes"/>
+					</xsd:choice>
+				</xsd:sequence>
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Mom2ObjectRefType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="Mom2ObjectType">
+				<xsd:attribute name="mom2Id" type="xsd:nonNegativeInteger" use="required"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Mom2ObjectStatusType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:all>
+					<xsd:element minOccurs="0" name="user" type="user:UserRefType"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="roles" type="xsd:string"/>
+					<xsd:element minOccurs="0" ref="anyStatus"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+				</xsd:all>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Mom2ObjectStatusRefType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="persistent:PersistentObjectType">
+				<xsd:attribute name="id" type="xsd:integer" use="required"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="StatusType" abstract="true">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:all>
+					<xsd:element minOccurs="0" name="code" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="description" type="xsd:string"/>
+				</xsd:all>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="StatusRefType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="StatusType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="code" type="xsd:string"/>
+				</xsd:sequence>
+				<xsd:attribute name="id" type="xsd:integer"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyStatus" type="StatusRefType"/>
+	<xsd:complexType name="StatusHistoryType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="StatusHistoryItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="StatusHistoryItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="IndexedMom2ObjectStatusItemType">
+				<xsd:choice>
+					<xsd:element name="mom2ObjectStatus" type="Mom2ObjectStatusType"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedMom2ObjectStatusItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:IndexedListItemType">
+				<xsd:choice>
+					<xsd:element minOccurs="0" name="mom2ObjectStatus" type="Mom2ObjectStatusType"/>
+				</xsd:choice>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="CurrentStatusType">
+		<xsd:choice>
+			<xsd:element name="mom2ObjectStatus" type="Mom2ObjectStatusRefType"/>
+			<xsd:element name="statusHistoryItem" type="StatusHistoryRefType"/>
+			<xsd:element ref="anyStatus"/>
+		</xsd:choice>
+	</xsd:complexType>
+	<xsd:complexType name="StatusHistoryRefType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="IndexedMom2ObjectStatusItemType">
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="openedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="opened" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="1" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="describedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="described" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="2" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="preparedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="prepared" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="3" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="approvedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="approved" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="4" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="scheduledStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="scheduled" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="5" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="activeStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="active" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="6" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="runningStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="running" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="7" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="holdStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="hold" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="8" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="suspendedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="suspended" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="9" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="finishedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="finished" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="10" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="abortedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="aborted" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="11" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="failedStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="failed" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="12" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="successfulStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="successful" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="13" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="notSchedulableStatus" substitutionGroup="anyStatus">
+		<xsd:complexType>
+			<xsd:complexContent mixed="false">
+				<xsd:restriction base="StatusRefType">
+					<xsd:sequence>
+						<xsd:element minOccurs="0" fixed="not schedulable" name="code" type="xsd:string"/>
+					</xsd:sequence>
+					<xsd:attribute fixed="14" name="id" type="xsd:integer"/>
+				</xsd:restriction>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:complexType name="IndexedGeneralRemarkListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedGeneralRemarkItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedGeneralRemarkItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="IndexedTextItemType">
+				<xsd:choice>
+					<xsd:element ref="generalRemark"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedInspectionReportListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedInspectionReportItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedInspectionReportItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="IndexedTextItemType">
+				<xsd:choice>
+					<xsd:element ref="inspectionReport"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedSpecificationRemarkListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedSpecificationRemarkItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedSpecificationRemarkItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="IndexedTextItemType">
+				<xsd:choice>
+					<xsd:element ref="specificationRemark"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedSchedulingRemarkListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedSchedulingRemarkItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedSchedulingRemarkItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:restriction base="IndexedTextItemType">
+				<xsd:choice>
+					<xsd:element ref="schedulingRemark"/>
+				</xsd:choice>
+				<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedTextItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:IndexedListItemType">
+				<xsd:choice>
+					<xsd:element ref="anyText"/>
+				</xsd:choice>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="TextType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:all>
+					<xsd:element minOccurs="0" name="user" type="user:UserRefType"/>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="roles" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="text" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+				</xsd:all>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="GeneralRemarkType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="TextType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="SchedulingRemarkType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="TextType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="SpecificationRemarkType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="TextType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="InspectionReportType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="TextType"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyText" type="TextType"/>
+	<xsd:element name="generalRemark" substitutionGroup="anyText" type="GeneralRemarkType"/>
+	<xsd:element name="inspectionReport" substitutionGroup="anyText" type="InspectionReportType"/>
+	<xsd:element name="specificationRemark" substitutionGroup="anyText" type="SpecificationRemarkType"/>
+	<xsd:element name="schedulingRemark" substitutionGroup="anyText" type="SchedulingRemarkType"/>
+	<xsd:complexType name="IndexedDataProductListType">
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" name="item" type="IndexedDataProductItemType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedDataProductItemType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:IndexedListItemType">
+				<xsd:choice>
+					<xsd:any minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:choice>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="DataProductType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:sequence>
+					<xsd:element minOccurs="0" name="name" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="ownerMom2Object" type="Mom2ObjectRefType"/>
+					<xsd:choice>
+						<xsd:element minOccurs="0" name="uri" type="xsd:string"/>
+						<xsd:element minOccurs="0" name="locations" type="DataProductLocationsType"/>
+					</xsd:choice>
+					<xsd:element minOccurs="0" name="fileFormat" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="type" type="xsd:string"/>
+					<xsd:element minOccurs="0" name="timeStamp" type="xsd:dateTime"/>
+					<xsd:element minOccurs="0" default="false" name="released" type="xsd:boolean"/>
+					<xsd:element minOccurs="0" default="false" name="exported" type="xsd:boolean"/>
+					<xsd:choice minOccurs="0">
+						<xsd:element ref="specificAttributes"/>
+					</xsd:choice>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="DataProductLocationsType">
+		<xsd:sequence>
+			<xsd:element minOccurs="0" maxOccurs="unbounded" name="location" type="DataProductLocationType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="DataProductLocationType">
+		<xsd:complexContent mixed="false">
+			<xsd:extension base="persistent:PersistentObjectType">
+				<xsd:sequence>
+					<xsd:element name="uri" type="xsd:string"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="anyDataProduct" type="DataProductType"/>
+	<xsd:element abstract="true" name="specificAttributes" type="SpecificAttributesType"/>
+	<xsd:complexType name="SpecificAttributesType"/>
+	<xsd:simpleType name="FrequencyUnit">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Hz"/>
+			<xsd:enumeration value="kHz"/>
+			<xsd:enumeration value="MHz"/>
+			<xsd:enumeration value="GHz"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Frequency">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:double">
+				<xsd:attribute name="unit" type="FrequencyUnit" use="required"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/PersistentObjects.xsd b/SAS/Specification_Services/lib/PersistentObjects.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..399e27f5e4bb903052ed2743b88ac82a47c32b60
--- /dev/null
+++ b/SAS/Specification_Services/lib/PersistentObjects.xsd
@@ -0,0 +1,40 @@
+
+<xsd:schema targetNamespace="http://www.astron.nl/PersistentObjects" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.astron.nl/PersistentObjects">
+	<xsd:annotation>
+		<xsd:documentation>Definition of base types for astron web application persistent objects</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="PersistentObjectType" abstract="true">
+		<xsd:annotation>
+			<xsd:documentation>
+    			Base persistent object type
+    		</xsd:documentation>
+		</xsd:annotation>
+		<xsd:attribute name="id" type="xsd:integer" default="0"/>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedListType" abstract="true">
+		<xsd:choice minOccurs="0" maxOccurs="unbounded">
+			<xsd:element ref="indexedListItem"/>
+		</xsd:choice>
+	</xsd:complexType>
+	<xsd:complexType name="IndexedListItemType" abstract="true">
+		<xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
+	</xsd:complexType>
+	<xsd:complexType name="PersistentListType" abstract="true">
+		<xsd:choice minOccurs="0" maxOccurs="unbounded">
+			<xsd:annotation>
+				<xsd:documentation>
+    				A choice group with min/max occurences is used since
+    				the intention is that the referenced (abstract)
+    				element &quot;"persistentListElement&quot;" is
+    				replaced by a member of it's substitution group. (A
+    				sequence with an unbouded number of these elemets
+    				will not work as the substitution group is treated
+    				as a choice group.)
+    			</xsd:documentation>
+			</xsd:annotation>
+			<xsd:element ref="persistentObject"/>
+		</xsd:choice>
+	</xsd:complexType>
+	<xsd:element name="indexedListItem" type="IndexedListItemType" abstract="true"/>
+	<xsd:element name="persistentObject" type="PersistentObjectType" abstract="true"/>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/UserAdmin.xsd b/SAS/Specification_Services/lib/UserAdmin.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..ac228d2a3e8099bdcefe04955e92be0ca228f194
--- /dev/null
+++ b/SAS/Specification_Services/lib/UserAdmin.xsd
@@ -0,0 +1,16 @@
+
+<xsd:schema targetNamespace="http://www.astron.nl/useradmin" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:persistent="http://www.astron.nl/PersistentObjects">
+	<xsd:import namespace="http://www.astron.nl/PersistentObjects" schemaLocation="PersistentObjects.xsd"/>
+	<xsd:annotation>
+		<xsd:documentation>
+			XML Schema for the WSRT user administration datamodel
+		</xsd:documentation>
+	</xsd:annotation>
+	<xsd:complexType name="UserRefType">
+		<xsd:complexContent>
+			<xsd:restriction base="persistent:PersistentObjectType">
+				<xsd:attribute name="id" type="xsd:integer" use="required"/>
+			</xsd:restriction>
+		</xsd:complexContent>
+	</xsd:complexType>
+</xsd:schema>
diff --git a/SAS/Specification_Services/lib/__init__.py b/SAS/Specification_Services/lib/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Specification_Services/lib/config.py b/SAS/Specification_Services/lib/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..a8f3af3eeaf1bc5c8ce73eedfee23dd7b2160e2c
--- /dev/null
+++ b/SAS/Specification_Services/lib/config.py
@@ -0,0 +1,35 @@
+
+""" Config file for specification services. """
+
+# Messaging
+
+CONNECTION_STRING = '127.0.0.1'
+
+MOMQUERY_BUSNAME = "momquerybus"
+MOMQUERY_SERVICENAME = "momqueryservice"
+
+VALIDATION_BUSNAME = "validationbus"
+VALIDATION_SERVICENAME = "validationservice"
+
+SPECIFICATION_BUSNAME = "specificationbus"
+SPECIFICATION_SERVICENAME = "specificationservice"
+
+SPECIFICATIONTRANSLATION_BUSNAME = "specificationtranslationbus"
+SPECIFICATIONTRANSLATION_SERVICENAME = "specificationtranslationservice"
+
+
+# XSD paths (for validation service)
+
+TRIGGER_XSD = "LofarTrigger.xsd"
+LOFARSPEC_XSD = "LofarSpecification.xsd"
+MOMSPEC_XSD = "LofarMoM2.xsd"
+
+
+# These specification elements are to be recoded for MoM as json
+
+MOM_EXTRASPECS = ["triggerid",
+              "priority",
+              "qualityOfService",
+              "activity.observation.timeWindowSpecification",
+              "activity.observation.stationSelectionSpecification",
+              "comment"]
\ No newline at end of file
diff --git a/SAS/Specification_Services/lib/specification_service.py b/SAS/Specification_Services/lib/specification_service.py
new file mode 100644
index 0000000000000000000000000000000000000000..660f6a5890a17bbd7885594f9d2d22738fd30408
--- /dev/null
+++ b/SAS/Specification_Services/lib/specification_service.py
@@ -0,0 +1,128 @@
+#!/usr/bin/env python
+
+# specification_service.py
+#
+# Copyright (C) 2015
+# ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+XMLPATH_TRIGGER="../test/trigger.xml"
+
+from lxml import etree
+from StringIO import StringIO
+from lofar.specificationservices.validation_service_rpc import ValidationRPC
+from lofar.specificationservices.translation_service_rpc import TranslationRPC
+from lofar.mom.momqueryservice.momqueryrpc import MoMQueryRPC
+
+from lofar.messaging import Service
+from lofar.messaging.Service import MessageHandlerInterface
+from lofar.common.util import waitForInterrupt
+
+from config import MOMQUERY_BUSNAME, MOMQUERY_SERVICENAME, VALIDATION_BUSNAME, VALIDATION_SERVICENAME, SPECIFICATION_SERVICENAME, SPECIFICATION_BUSNAME, SPECIFICATIONTRANSLATION_SERVICENAME, SPECIFICATIONTRANSLATION_BUSNAME
+
+momqueryrpc = MoMQueryRPC(MOMQUERY_BUSNAME, MOMQUERY_SERVICENAME)
+validationrpc = ValidationRPC(VALIDATION_BUSNAME, VALIDATION_SERVICENAME)
+specificationtranslationrpc = TranslationRPC(SPECIFICATIONTRANSLATION_BUSNAME, SPECIFICATIONTRANSLATION_SERVICENAME)
+
+
+import logging
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+def _check_specification(lofar_xml):
+    folder = "innermost" # where to find this in xml???
+    #if momqueryrpc.folderExists(folder):
+    #    raise Exception("Folder already exists!")
+    processes = [] # where to obtain these?
+    for process in processes:
+        pass
+        # todo: i. Check whether the specifications are in folder(s), return ERROR if not.
+        # todo: ii. Whether the specifications are observations or pipelines
+        # todo: iii. Whether the specifications go to opened or approved
+        # todo: iv. Queries the MoMQueryService whether user can open or approve specifications in the selected project(s), return ERROR if not.
+    return True
+
+def _authenticate(user, project, jobtype, state):
+    # todo: momqueryrpc.authState(user,project,jobtype,state)
+    return True
+
+def _validate_lofarspec(lofar_xml):
+    return validationrpc.validate_specification(lofar_xml)
+    #return validationhandler.validate_specification(lofar_xml)
+
+def _validate_momspec(mom_xml):
+    return validationrpc.validate_mom_specification(mom_xml)
+    #return validationhandler.validate_mom_specification(mom_xml)
+
+def _add_spec_to_mom(mom_xml):
+    # todo: momrpc.importXML(mom_xml) -- which service is this?
+    return True
+
+def _lofarxml_to_momxml(lofarxml):
+    momxml =  specificationtranslationrpc.specification_to_momspecification(lofarxml)
+    return momxml
+
+class SpecificationHandler(MessageHandlerInterface):
+
+    def __init__(self, **kwargs):
+        super(SpecificationHandler, self).__init__(**kwargs)
+
+        self.service2MethodMap = {
+            'add_specification': self.add_specification,
+            }
+
+    def add_specification(self, user, lofar_xml):
+        logger.info("got specification from user " + str(user))
+        logger.debug("LOFAR-XML: " + lofar_xml)
+        id = None
+        if _authenticate(None, None, None, None):
+            logger.info("authenticated!")
+            if _validate_lofarspec(lofar_xml):
+                logger.info("lofar xml validates!")
+                if _check_specification(lofar_xml):
+                    logger.info("lofar xml check successful!")
+                    mom_xml = _lofarxml_to_momxml(lofar_xml)
+                    if _validate_momspec(mom_xml):
+                        logger.info("mom xml validates!")
+                        _add_spec_to_mom(mom_xml)
+            else:
+                logger.error("Could not create valid LOFAR XML: "+lofar_xml)
+
+        return id
+
+    def get_specification(self, id):
+        logger.info("getting spec of id "+str(id))
+        # todo: return real trigger info as xml
+        # for testing:
+        with open(XMLPATH_TRIGGER) as xml:
+            return xml.read()
+
+
+def create_service(servicename=SPECIFICATION_SERVICENAME, busname=SPECIFICATION_BUSNAME):
+    return Service(servicename,
+                       SpecificationHandler,
+                       busname=busname,
+                       use_service_methods=True,
+    )
+
+
+def main():
+    with create_service():
+       waitForInterrupt()
+
diff --git a/SAS/Specification_Services/lib/specification_service_rpc.py b/SAS/Specification_Services/lib/specification_service_rpc.py
new file mode 100644
index 0000000000000000000000000000000000000000..ffffd259de10e1a2620932cd77620c498d644918
--- /dev/null
+++ b/SAS/Specification_Services/lib/specification_service_rpc.py
@@ -0,0 +1,23 @@
+
+from lofar.messaging.RPC import RPC, RPCException, RPCWrapper
+from config import SPECIFICATION_BUSNAME, SPECIFICATION_SERVICENAME
+import logging
+logger = logging.getLogger(__file__)
+
+
+class SpecificationRPC(RPCWrapper):
+
+    def __init__(self, busname=SPECIFICATION_BUSNAME,
+                 servicename=SPECIFICATION_SERVICENAME,
+                 broker=None,
+                 timeout=120):
+        super(SpecificationRPC, self).__init__(busname, servicename, broker, timeout=timeout)
+
+
+    def add_specification(self, user, lofar_xml):
+        logger.info("Requesting addition of specification XML for user -> "+user)
+        result = self.rpc('add_specification', user, lofar_xml=lofar_xml)
+        logger.info("Received addition result -> " +str(result))
+        return result
+
+
diff --git a/SAS/Specification_Services/lib/translation_service.py b/SAS/Specification_Services/lib/translation_service.py
new file mode 100644
index 0000000000000000000000000000000000000000..ba0b50c5ff6cf65709a00d0c241c9253cb05494d
--- /dev/null
+++ b/SAS/Specification_Services/lib/translation_service.py
@@ -0,0 +1,163 @@
+#!/usr/bin/env python
+
+# translation_service.py
+#
+# Copyright (C) 2015
+# ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# This Service translates specifications, e.g. from a generic LOFAR spec to MoM spec.
+
+
+import logging
+logger = logging.getLogger(__name__)
+from json import dumps
+from collections import OrderedDict
+from lxml import etree
+from xmljson import BadgerFish
+from StringIO import StringIO
+
+from lofar.messaging import Service
+from lofar.messaging.Service import MessageHandlerInterface
+from lofar.common.util import waitForInterrupt
+
+from config import MOM_EXTRASPECS, SPECIFICATIONTRANSLATION_SERVICENAME, SPECIFICATIONTRANSLATION_BUSNAME, VALIDATION_SERVICENAME, VALIDATION_BUSNAME
+
+from validation_service_rpc import ValidationRPC
+validationrpc = ValidationRPC(VALIDATION_BUSNAME, VALIDATION_SERVICENAME)
+
+
+def _jsonify(xml):
+    """encodes an element/subtree as json in the misc field (for MoM)"""
+    bf = BadgerFish(dict_type=OrderedDict)
+    data = bf.data(etree.fromstring(xml))
+    json = dumps(data)
+    return json
+
+
+class SpecificationTranslationHandler(MessageHandlerInterface):
+
+    def __init__(self, **kwargs):
+        super(SpecificationTranslationHandler, self).__init__(**kwargs)
+
+        self.service2MethodMap = {
+            'trigger_to_specification': self.trigger_to_specification,
+            'specification_to_momspecification': self.specification_to_momspecification,
+            }
+
+    def trigger_to_specification(self, trigger_spec, trigger_id, job_priority):
+
+        logger.info("Translating Trigger spec to Lofar spec")
+        logger.debug('trigger before translation ->' + trigger_spec)
+
+        # pick the specification element
+        doc = etree.parse(StringIO(trigger_spec.encode('UTF-8')))
+        spec = doc.getroot().find('specification')
+        logger.debug("root is "+spec.tag)
+
+        # inject priority # todo: if optional item, move to trigger service
+        priority = spec.find("priority")
+        priority.text = str(job_priority)
+
+        # inject identifier # todo: if optional item, move to trigger service
+        identifier = spec.find("activity").find("temporaryIdentifier") # todo: discuss where this is supposed to really go!
+        source = identifier.find("source")
+        ident =  identifier.find("identifier")
+        source.text = "Trigger"
+        ident.text = str(trigger_id)
+
+        # create new document with correct namespace and return xml as string:
+        # todo: check whether a type reference can be used to have the correct namespace on specification!
+        lofar_spec = etree.Element("{http://www.astron.nl/LofarSpecification}specification")
+        for child in spec.getchildren():
+            lofar_spec.append(child)
+        specification_xml = etree.tostring(lofar_spec)
+
+        logger.debug("specification after translation from trigger -> "+specification_xml)
+        if validationrpc.validate_specification(specification_xml):
+            logger.info("Translation successful")
+            return specification_xml
+        else:
+            raise Exception("Lofar specification validation after translation failed!")
+
+
+
+    def specification_to_momspecification(self, spec):
+
+        logger.info("Translating Lofar spec to MoM spec")
+        logger.debug("Specification before translation -> " + spec)
+
+        # Remove and jsonify extra specs from specification
+        spectree = etree.parse(StringIO(spec.encode('UTF-8')))
+        extraspectree = etree.Element("extraspec")
+
+        for extraspec in MOM_EXTRASPECS:
+            elements = extraspec.split(".")
+            source = spectree
+            target = extraspectree
+            prevelement = None
+            for element in elements:
+                # walk to source:
+                source = source.find(element)
+                # create parents in data for misc:
+                if prevelement:
+                    if target.find(prevelement) is None:
+                        target = etree.SubElement(target, prevelement)
+                    else:
+                        target = target.find(prevelement)
+                prevelement = element
+            if source is not None:
+                source.getparent().remove(source)
+                target.append(source)
+
+        # Add json text to misc element:
+        m = spectree.find("misc")
+        if m is not None:
+            misc = str(m.text+"\n")
+        else:
+            m = etree.SubElement(spectree.getroot(), "misc")
+            misc = ""
+        misc = misc + _jsonify(etree.tostring(extraspectree))
+        m.text = misc
+
+        # create new document with correct namespace and return xml as string:
+        # todo: check whether a type reference can be used to have the correct namespace on specification!
+        momspec = etree.Element("{http://www.astron.nl/MoM2-Lofar}observation", nsmap={})
+        for child in spectree.getroot().find("activity").find("observation").getchildren():
+            momspec.append(child)
+
+        momspec_xml = etree.tostring(momspec)
+        logger.debug("MoM spec after translation -> " + momspec_xml)
+        if validationrpc.validate_mom_specification(momspec_xml):
+            logger.info("Translation successful")
+            return momspec_xml
+        else:
+            raise Exception("MoM specification validation after translation failed!")
+
+def create_service(servicename=SPECIFICATIONTRANSLATION_SERVICENAME, busname=SPECIFICATIONTRANSLATION_BUSNAME):
+    return Service(servicename,
+                       SpecificationTranslationHandler,
+                       busname=busname,
+                       use_service_methods=True,
+    )
+
+
+def main():
+    with create_service():
+       waitForInterrupt()
+
diff --git a/SAS/Specification_Services/lib/translation_service_rpc.py b/SAS/Specification_Services/lib/translation_service_rpc.py
new file mode 100644
index 0000000000000000000000000000000000000000..dbcf03abd7a21cd82db0968285c0ccadda1a4254
--- /dev/null
+++ b/SAS/Specification_Services/lib/translation_service_rpc.py
@@ -0,0 +1,28 @@
+
+from lofar.messaging.RPC import RPC, RPCException, RPCWrapper
+from config import SPECIFICATIONTRANSLATION_BUSNAME, SPECIFICATIONTRANSLATION_SERVICENAME
+import logging
+logger = logging.getLogger(__file__)
+
+
+class TranslationRPC(RPCWrapper):
+
+    def __init__(self, busname=SPECIFICATIONTRANSLATION_BUSNAME,
+                 servicename=SPECIFICATIONTRANSLATION_SERVICENAME,
+                 broker=None,
+                 timeout=120):
+        super(TranslationRPC, self).__init__(busname, servicename, broker, timeout=timeout)
+
+
+    def trigger_to_specification(self, trigger_spec, trigger_id, job_priority):
+        logger.info("Requesting validation of trigger XML")
+        result = self.rpc('trigger_to_specification', trigger_spec=trigger_spec, trigger_id=trigger_id, job_priority=job_priority)
+        logger.info("Received validation result -> " +result)
+        return result
+
+
+    def specification_to_momspecification(self, spec):
+        logger.info("Requesting validation of trigger XML")
+        result = self.rpc('specification_to_momspecification', spec=spec)
+        logger.info("Received validation result -> " +result)
+        return result
diff --git a/SAS/Specification_Services/lib/validation_service.py b/SAS/Specification_Services/lib/validation_service.py
new file mode 100644
index 0000000000000000000000000000000000000000..ea982cad6d89ac21e2d0b0f60529a7ab0a1cb152
--- /dev/null
+++ b/SAS/Specification_Services/lib/validation_service.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+
+# validation_service.py
+#
+# Copyright (C) 2015
+# ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# This service validates specifications provided as XML against according XSD definitions.
+
+
+import logging
+from StringIO import StringIO
+from lxml import etree
+import os
+from lofar.messaging import Service
+from lofar.messaging.Service import MessageHandlerInterface
+from lofar.common.util import waitForInterrupt
+
+from config import TRIGGER_XSD, LOFARSPEC_XSD, MOMSPEC_XSD, VALIDATION_SERVICENAME, VALIDATION_BUSNAME
+
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+def _validateXSD(xml, xsdpath):
+    '''validates given xml against given xsd file'''
+
+    logger.debug("validating against -> " + str(xsdpath))
+    logger.debug("xml -> "+xml)
+    pwd, file = os.path.split(os.path.realpath(__file__))
+    xsdpath = pwd + "/" +xsdpath
+    with open(xsdpath) as xsd:
+        xmlschema_doc = etree.parse(xsd)
+        xmlschema = etree.XMLSchema(xmlschema_doc)
+        doc = etree.parse(StringIO(xml.encode('utf8')))
+        valid = xmlschema.validate(doc)
+
+        if not valid:
+             try:
+                 xmlschema.assertValid(doc)
+             except Exception as err:
+                 logger.error(err)
+        logger.debug("valid -> "+str(valid))
+        return valid
+
+#class ValidationHandler():
+class ValidationHandler(MessageHandlerInterface):
+    def __init__(self, **kwargs):
+        super(ValidationHandler, self).__init__(**kwargs)
+
+        self.service2MethodMap = {
+            'validate_trigger_specification': self.validate_trigger_specification,
+            'validate_specification': self.validate_specification,
+            'validate_mom_specification': self.validate_mom_specification,
+            }
+
+    def validate_trigger_specification(self, xml):
+        return str(_validateXSD(xml, TRIGGER_XSD))
+
+    def validate_specification(self, xml):
+        # todo: further checks
+        return str(_validateXSD(xml, LOFARSPEC_XSD))
+
+    def validate_mom_specification(self, xml):
+        # todo: further checks
+        return str(_validateXSD(xml, MOMSPEC_XSD))
+
+
+
+def create_service(servicename=VALIDATION_SERVICENAME, busname=VALIDATION_BUSNAME):
+    return Service(servicename,
+                       ValidationHandler,
+                       busname=busname,
+                       use_service_methods=True,
+    )
+
+
+def main():
+    with create_service():
+       waitForInterrupt()
\ No newline at end of file
diff --git a/SAS/Specification_Services/lib/validation_service_rpc.py b/SAS/Specification_Services/lib/validation_service_rpc.py
new file mode 100644
index 0000000000000000000000000000000000000000..9ba8582da428657b9ef4ddaa6bd700da09b67de2
--- /dev/null
+++ b/SAS/Specification_Services/lib/validation_service_rpc.py
@@ -0,0 +1,34 @@
+
+from lofar.messaging.RPC import RPC, RPCException, RPCWrapper
+from config import VALIDATION_BUSNAME, VALIDATION_SERVICENAME
+import logging
+logger = logging.getLogger(__file__)
+
+
+class ValidationRPC(RPCWrapper):
+
+    def __init__(self, busname=VALIDATION_BUSNAME,
+                 servicename=VALIDATION_SERVICENAME,
+                 broker=None,
+                 timeout=120):
+        super(ValidationRPC, self).__init__(busname, servicename, broker, timeout=timeout)
+
+    def validate_trigger_specification(self, xml):
+        logger.info("Requesting validation of trigger XML")
+        result = self.rpc('validate_trigger_specification', xml=xml)
+        logger.info("Received validation result -> " +result)
+        return bool(result)
+
+    def validate_specification(self, xml):
+        logger.info("Requesting validation of specification XML")
+        result = self.rpc('validate_specification', xml=xml)
+        logger.info("Received validation result -> " +result)
+        return bool(result)
+
+    def validate_mom_specification(self, xml):
+        logger.info("Requesting validation of MoM specification XML")
+        result = self.rpc('validate_mom_specification', xml=xml)
+        logger.info("Received validation result -> " +result)
+        return bool(result)
+
+
diff --git a/SAS/Specification_Services/test/CMakeLists.txt b/SAS/Specification_Services/test/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Specification_Services/test/setup_queues_and_services.sh b/SAS/Specification_Services/test/setup_queues_and_services.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fcfd4120abf3f323c2d3299e7a61623a9c5544cc
--- /dev/null
+++ b/SAS/Specification_Services/test/setup_queues_and_services.sh
@@ -0,0 +1,17 @@
+#/bin/sh
+
+echo "Setting up queues"
+./qpid-config add exchange topic translationbus
+./qpid-config add exchange topic specificationtranslationbus
+./qpid-config add exchange topic specificationbus
+./qpid-config add exchange topic triggerbus
+./qpid-config add exchange topic validationbus
+
+echo "Starting spec service"
+specificationservice &
+
+echo "Starting spec translation service"
+specificationtranslationservice &
+
+echo "Starting spec validation service"
+specificationvalidationservice &
\ No newline at end of file
diff --git a/SAS/Trigger_Services/CMakeLists.txt b/SAS/Trigger_Services/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..35e78fb6a128d4be003ea671e066f0c819c6fa1a
--- /dev/null
+++ b/SAS/Trigger_Services/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(TriggerReceptionService)
diff --git a/SAS/Trigger_Services/TriggerReceptionService/CMakeLists.txt b/SAS/Trigger_Services/TriggerReceptionService/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc4f4b12f303d3152c94ba713954b332e035af69
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/CMakeLists.txt
@@ -0,0 +1,9 @@
+
+lofar_find_package(Python 2.7 REQUIRED)
+lofar_package(sip 0.1 DEPENDS PyCommon)
+
+include(PythonInstall)
+
+add_subdirectory(lib)
+add_subdirectory(bin)
+add_subdirectory(test)
diff --git a/SAS/Trigger_Services/TriggerReceptionService/__init__.py b/SAS/Trigger_Services/TriggerReceptionService/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Trigger_Services/TriggerReceptionService/bin/CMakeLists.txt b/SAS/Trigger_Services/TriggerReceptionService/bin/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a174651b633676510c572bb8b2084f3d2894ea72
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/bin/CMakeLists.txt
@@ -0,0 +1,2 @@
+lofar_add_bin_scripts(triggerrestinterface)
+lofar_add_bin_scripts(triggerservice)
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/bin/triggerrestinterface b/SAS/Trigger_Services/TriggerReceptionService/bin/triggerrestinterface
new file mode 100755
index 0000000000000000000000000000000000000000..f24434e3e3bde16fe4c5221098573e7d2f5cfb7e
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/bin/triggerrestinterface
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Copyright (C) 2012-2015  ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O. Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# Startup script for the external trigger rest webservice
+
+echo "---"
+echo "! This is for testing only, properly deploy in Apache for production use!"
+echo "---"
+python ../django_rest/manage.py runserver
+
+
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/bin/triggerservice b/SAS/Trigger_Services/TriggerReceptionService/bin/triggerservice
new file mode 100755
index 0000000000000000000000000000000000000000..8354503b39194c53d45814ddd3062ce655cc94f0
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/bin/triggerservice
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+
+# Copyright (C) 2012-2015  ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O. Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+# Executable for the trigger reception service
+# The service glues together a bunch of services to
+#  - read trigger XML from Qpid,
+#  - validate the trigger XML through a validation service
+#  - authorize the action through a authorization service,
+#  - create a trigger entry in MoM db through MoM query service,
+#  - convert the trigger XML to valid LOFAR specification XML,
+#  - add the LOFAR specification to MoM through the LofarSpecificationService.
+
+from lofar.triggerservices.trigger_service import main
+import sys
+import logging
+
+logger = logging.getLogger(__name__)
+
+if __name__ == '__main__':
+    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
+    main()
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/db.sqlite3 b/SAS/Trigger_Services/TriggerReceptionService/django_rest/db.sqlite3
new file mode 100644
index 0000000000000000000000000000000000000000..655c393e299d1d653bc0f15b07ea8325f54dcc6e
Binary files /dev/null and b/SAS/Trigger_Services/TriggerReceptionService/django_rest/db.sqlite3 differ
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/manage.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/manage.py
new file mode 100755
index 0000000000000000000000000000000000000000..db7262f3817cb93b7227b496948d7e6f2c9ef5b1
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == "__main__":
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "restinterface.settings")
+    try:
+        from django.core.management import execute_from_command_line
+    except ImportError:
+        # The above import may fail for some other reason. Ensure that the
+        # issue is really that Django is missing to avoid masking other
+        # exceptions on Python 2.
+        try:
+            import django
+        except ImportError:
+            raise ImportError(
+                "Couldn't import Django. Are you sure it's installed and "
+                "available on your PYTHONPATH environment variable? Did you "
+                "forget to activate a virtual environment?"
+            )
+        raise
+    execute_from_command_line(sys.argv)
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/.name b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/.name
new file mode 100644
index 0000000000000000000000000000000000000000..3bb6909635d0e9dd2250bb13e0d6b1f0cc0603f1
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/.name
@@ -0,0 +1 @@
+triggerservice
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/encodings.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/encodings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e206d70d8595e2a50675ba11de48efcfa012497d
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/encodings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/Project_Default.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c66df0037a79ba66bcfee856db73688a71cc708e
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,11 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0" is_locked="false">
+    <option name="myName" value="Project Default" />
+    <option name="myLocal" value="false" />
+    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
+      <option name="processCode" value="true" />
+      <option name="processLiterals" value="true" />
+      <option name="processComments" value="true" />
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/profiles_settings.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b312839bf2e939fea3ebdef15630a4b33e57caf
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/misc.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a5a06bffb5d49f398b4ba0cadff6e2d5c603f832
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/misc.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.3 (/usr/bin/python2.7)" project-jdk-type="Python SDK" />
+</project>
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/modules.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6800723c32af6027a1e7c00007bfff3ed19948de
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/triggerservice.iml" filepath="$PROJECT_DIR$/.idea/triggerservice.iml" />
+    </modules>
+  </component>
+</project>
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/scopes/scope_settings.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/scopes/scope_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..922003b8433bcad6ce9778a37628d738faa26389
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+  <state>
+    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/triggerservice.iml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/triggerservice.iml
new file mode 100644
index 0000000000000000000000000000000000000000..a34a85703f063917904e9e958b91cf9f4a2504e1
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/triggerservice.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/vcs.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..def6a6a18457989c7d18825c7c1bbfeefc8b261d
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="" />
+  </component>
+</project>
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/workspace.xml b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/workspace.xml
new file mode 100644
index 0000000000000000000000000000000000000000..38834218dc87cf04b949da82500b63b2bb4a707c
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/.idea/workspace.xml
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="916e11f9-b552-4cfd-aa22-d5d742c85ce5" name="Default" comment="" />
+    <ignored path="triggerservice.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="DaemonCodeAnalyzer">
+    <disable_hints />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FavoritesManager">
+    <favorites_list name="triggerservice" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="views.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/triggerinterface/views.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="10" column="0" selection-start="437" selection-end="437" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1065">
+              <folding>
+                <element signature="e#0#35#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="settings.py" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/settings.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="84" column="0" selection-start="2347" selection-end="2347" vertical-scroll-proportion="0.14239483" vertical-offset="1128" max-vertical-offset="2100">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="serializers.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/triggerinterface/serializers.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="17" column="0" selection-start="587" selection-end="587" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="405">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="mom.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/triggerinterface/mom.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="3" column="30" selection-start="61" selection-end="61" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="675">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="models.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/triggerinterface/models.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="6" column="28" selection-start="160" selection-end="160" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="285">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="urls.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/urls.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="16" column="0" selection-start="649" selection-end="649" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FindManager">
+    <FindUsagesManager>
+      <setting name="OPEN_NEW_TAB" value="false" />
+    </FindUsagesManager>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="changedFiles">
+      <list>
+        <option value="$PROJECT_DIR$/urls.py" />
+        <option value="$PROJECT_DIR$/triggerinterface/models.py" />
+        <option value="$PROJECT_DIR$/triggerinterface/serializers.py" />
+        <option value="$PROJECT_DIR$/settings.py" />
+        <option value="$PROJECT_DIR$/triggerinterface/views.py" />
+        <option value="$PROJECT_DIR$/triggerinterface/mom.py" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="width" value="1920" />
+    <option name="height" value="1055" />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectReloadState">
+    <option name="STATE" value="0" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+    </navigator>
+    <panes>
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="triggerservice" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="triggerservice" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="triggerservice" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="triggerservice" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="triggerservice" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="triggerinterface" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../SIP-lib" />
+  </component>
+  <component name="RunManager">
+    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="triggerservice" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="PARAMETERS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Unittests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="triggerservice" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PUREUNITTEST" value="true" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="py.test">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="triggerservice" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="testToRun" value="" />
+      <option name="keywords" value="" />
+      <option name="params" value="" />
+      <option name="USE_PARAM" value="false" />
+      <option name="USE_KEYWORD" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Attests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="triggerservice" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Doctests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="triggerservice" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Nosetests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="triggerservice" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <list size="0" />
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="916e11f9-b552-4cfd-aa22-d5d742c85ce5" name="Default" comment="" />
+      <created>1478766676565</created>
+      <updated>1478766676565</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="0" y="0" width="1920" height="1055" extended-state="0" />
+    <editor active="true" />
+    <layout>
+      <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24869384" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="Vcs.Log.UiProperties">
+    <option name="RECENTLY_FILTERED_USER_GROUPS">
+      <collection />
+    </option>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="myTodoPanelSettings">
+      <TodoPanelSettings />
+    </option>
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/triggerinterface/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="9" column="22" selection-start="416" selection-end="416" vertical-scroll-proportion="0.0" vertical-offset="135" max-vertical-offset="1065">
+          <folding>
+            <element signature="e#0#35#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/settings.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="86" column="5" selection-start="2375" selection-end="2375" vertical-scroll-proportion="0.0" vertical-offset="1203" max-vertical-offset="2100">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/serializers.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="3" column="0" selection-start="99" selection-end="99" vertical-scroll-proportion="0.0" vertical-offset="45" max-vertical-offset="420">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/mom.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="26" column="0" selection-start="635" selection-end="635" vertical-scroll-proportion="0.0" vertical-offset="390" max-vertical-offset="675">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/models.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="8" column="48" selection-start="258" selection-end="258" vertical-scroll-proportion="0.0" vertical-offset="120" max-vertical-offset="315">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="31" column="0" selection-start="1202" selection-end="1202" vertical-scroll-proportion="0.0" vertical-offset="465" max-vertical-offset="555">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/apps.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="929" />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="10" column="0" selection-start="437" selection-end="437" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1065">
+          <folding>
+            <element signature="e#0#35#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/serializers.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="17" column="0" selection-start="587" selection-end="587" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="405">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/mom.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="3" column="30" selection-start="61" selection-end="61" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="675">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/triggerinterface/models.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="6" column="28" selection-start="160" selection-end="160" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="285">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="16" column="0" selection-start="649" selection-end="649" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/settings.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="84" column="0" selection-start="2347" selection-end="2347" vertical-scroll-proportion="0.14239483" vertical-offset="1128" max-vertical-offset="2100">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/__init__.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/credentials.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/credentials.py
new file mode 100644
index 0000000000000000000000000000000000000000..7a459457fe3b396245d0cb1166376115ce28b4fa
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/credentials.py
@@ -0,0 +1,9 @@
+SECRET_KEY = 'c0m_v*ghv5-^+xy@dm7-skg5d7#q(q+*pl!@rie)6+h$ln!zoi'
+
+AUTH_LDAP_SERVER_URI = "ldaps://webportal.astron.nl:30636"
+#AUTH_LDAP_SERVER_URI = "ldaps://dop225.astron.nl:636"
+#AUTH_LDAP_SERVER_URI = "ldap://10.87.2.225"
+AUTH_LDAP_USER_DN_TEMPLATE="uid=%(user)s,ou=Users,o=lofar,c=eu?cn"
+
+AUTH_LDAP_BIND_DN = "cn=ltadownload,o=services"
+AUTH_LDAP_BIND_PASSWORD = "<redacted>"
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/settings.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/settings.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d4545d5ed512522ee3b5a24738f0e0cd37aac5a
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/settings.py
@@ -0,0 +1,189 @@
+"""
+Django settings for the trigger rest interface project.
+
+Generated by 'django-admin startproject' using Django 1.10.3.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.10/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/1.10/ref/settings/
+"""
+
+import os
+import ldap
+import credentials
+import logging
+logger = logging.getLogger('django_auth_ldap')
+logger.addHandler(logging.StreamHandler())
+logger.setLevel(logging.INFO)
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = credentials.SECRET_KEY
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.messages',
+    'django.contrib.staticfiles',
+    'rest_framework',
+    'restinterface'
+]
+
+MIDDLEWARE = [
+    'django.middleware.security.SecurityMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.common.CommonMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'restinterface.urls'
+
+TEMPLATES = [
+    {
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
+        'DIRS': [],
+        'APP_DIRS': True,
+        'OPTIONS': {
+            'context_processors': [
+                'django.template.context_processors.debug',
+                'django.template.context_processors.request',
+                'django.contrib.auth.context_processors.auth',
+                'django.contrib.messages.context_processors.messages',
+            ],
+        },
+    },
+]
+
+WSGI_APPLICATION = 'restinterface.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), #':memory:',
+    }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+    },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/1.10/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/1.10/howto/static-files/
+
+STATIC_URL = BASE_DIR+'/static/'
+
+
+REST_FRAMEWORK = {
+
+    'DEFAULT_PARSER_CLASSES': (
+        'rest_framework_xml.parsers.XMLParser',
+        'rest_framework.parsers.JSONParser',
+    ),
+    'DEFAULT_RENDERER_CLASSES': (
+        'rest_framework.renderers.BrowsableAPIRenderer',
+        'rest_framework_xml.renderers.XMLRenderer',
+        'rest_framework.renderers.JSONRenderer',
+    ),
+
+    'DEFAULT_AUTHENTICATION_CLASSES': (
+        'rest_framework.authentication.BasicAuthentication',
+        'rest_framework.authentication.SessionAuthentication',
+    ), 
+    #'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
+    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),         # todo: CHANGE FOR PRODUCTION TO --> IsAuthenticated
+    #'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
+    'PAGE_SIZE': 10,
+}
+
+# LDAP DEBUG:
+#import logging, logging.handlers
+#logfile = "/tmp/django-ldap-debug.log"
+#my_logger = logging.getLogger('django_auth_ldap')
+#my_logger.setLevel(logging.DEBUG)
+#handler = logging.handlers.RotatingFileHandler(
+#   logfile, maxBytes=1024 * 500, backupCount=5)
+#my_logger.addHandler(handler)
+#import ldap
+#print "---"
+#server = 'ldap://10.87.2.225'
+#user_dn = credentials.AUTH_LDAP_BIND_DN
+#password = credentials.AUTH_LDAP_BIND_PASSWORD
+#con = ldap.initialize(server)
+#print "---"
+#con.simple_bind_s(user_dn, password)
+#print "---"
+
+#AUTH_LDAP_CONNECTION_OPTIONS = { ldap.OPT_X_TLS_REQUIRE_CERT : ldap.OPT_X_TLS_NEVER }
+AUTH_LDAP_SERVER_URI = credentials.AUTH_LDAP_SERVER_URI
+AUTH_LDAP_BIND_DN = credentials.AUTH_LDAP_BIND_DN
+AUTH_LDAP_BIND_PASSWORD = credentials.AUTH_LDAP_BIND_PASSWORD
+AUTH_LDAP_USER_DN_TEMPLATE = credentials.AUTH_LDAP_USER_DN_TEMPLATE
+#AUTH_LDAP_CACHE_GROUPS = True
+#AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
+
+AUTH_LDAP_USER_ATTR_MAP = {
+    "first_name": "givenName",
+    "last_name": "sn",
+    "email": "mail"
+}
+
+
+AUTHENTICATION_BACKENDS = (
+    'django_auth_ldap.backend.LDAPBackend',
+    'django.contrib.auth.backends.ModelBackend',
+)
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/__init__.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/admin.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c38f3f3dad51e4585f3984282c2a4bec5349c1e
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/apps.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..f507d9de68cacd4e5f8f33aedd8ea138c1d32559
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/apps.py
@@ -0,0 +1,7 @@
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+
+class TriggerinterfaceConfig(AppConfig):
+    name = 'triggerinterface'
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/migrations/__init__.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/models.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..762d0536e82467b131664dcc9b271983ea53807d
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/models.py
@@ -0,0 +1,28 @@
+"""
+This is a stub. Currently not used, but can be implemented to get some better control on data in the interface,
+do type checks, conversion, configure defaults, etc.
+"""
+
+
+from __future__ import unicode_literals
+from django.db import models
+from django.utils import timezone
+
+# Create your models here.
+
+class Trigger(models.Model):
+
+    pass # see note above
+
+    # read-only:
+    #submittedby= models.CharField(max_length=200,default='request.user', editable=False)
+    #receivedat = models.DateTimeField(max_length=200,default=timezone.now, editable=False)
+    # view_injected_get = models.CharField(max_length=200) # injection example
+
+    # writable:
+    #project_id = models.CharField(max_length=200)
+    #metadata = models.CharField(max_length=20000, blank=True)
+    #station_list = models.CharField(max_length=2000, blank=True)
+    #qos = models.CharField(max_length=2000, blank=True )
+    #spec = models.CharField(max_length=20000)
+    #priority = models.IntegerField(max_length=200, default = 1000)
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/serializers.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..81dd88583fc609d3d9d9cd2da7af0e5e259c7c2b
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/serializers.py
@@ -0,0 +1,39 @@
+"""
+This is a stub.
+Currently not used, but can be implemented to populate and validate the trigger data model.
+Check views.py for data parsing and rendering on get/post.
+"""
+
+
+from rest_framework import serializers
+from models import Trigger
+from rest_framework_xml.renderers import XMLRenderer
+from django.utils import timezone
+
+import trigger_handler
+import logging
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+class TriggerSerializer(serializers.ModelSerializer):
+
+    #submittedby= serializers.CharField(max_length=200, read_only=True)
+    #receivedat = serializers.DateTimeField(default=timezone.now)
+
+    def save(self, user):
+        logger.debug('saving data')
+        logger.debug('data ->' + str(self.data))
+        logger.debug('validated data ->' + str(self.validated_data))
+        logger.debug('fields ->' + str(self.fields))
+        logger.debug('errors ->' + str(self.errors))
+        logger.debug('rendering XML')
+        xml = XMLRenderer().render(self.validated_data)
+        logger.debug('calling trigger handler')
+        id = trigger_handler.handle_trigger(user, xml)
+        return id
+
+    class Meta:
+        model = Trigger
+        fields = '__all__'
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/tests.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/views.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..ca6fb0923a5a9bdfe637004307ba787b4e251556
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/triggerinterface/views.py
@@ -0,0 +1,136 @@
+"""
+Handles GET / POST requests by users.
+"""
+
+
+from rest_framework import viewsets
+from rest_framework import views
+from rest_framework.response import Response
+from rest_framework import status
+#from serializers import TriggerSerializer
+from rest_framework.renderers import JSONRenderer
+from rest_framework.parsers import JSONParser
+from rest_framework_xml.parsers import XMLParser
+from rest_framework_xml.renderers import XMLRenderer
+
+from io import BytesIO
+from rest_framework.fields import CurrentUserDefault
+from lxml import etree
+from StringIO import StringIO
+
+form lofar.triggerservices.trigger_service_rpc import TriggerRPC
+from lofar.specificationservices.specification_service_rpc import SpecificationRPC
+
+import logging
+import traceback
+logging.basicConfig(level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
+
+class TriggerListView(views.APIView):
+
+    def get(self,request, format=None, **kwargs):
+        logger.debug('got GET from -> '+str(request.META['REMOTE_ADDR']))
+        return Response("Listing not implemented yet, sorry! Post trigger XML on this URL to add a new trigger.", status=status.HTTP_501_NOT_IMPLEMENTED)
+
+
+
+    def post(self, request, format=None, **kwargs):
+        logger.debug('got POST from -> '+str(request.META['REMOTE_ADDR']))
+        #logger.debug('received text -> '+str(request.body))
+        #logger.debug('received data -> '+str(request.data))
+        logger.debug('from user -> '+str( request.user))
+
+
+        # OPTIONALLY USE DATA MODEL:
+        #serializer = TriggerSerializer(data=request.data)
+        #logger.debug('data is valid -> ' +str(serializer.is_valid()))
+        #if serializer.is_valid():
+        #    id = serializer.save(request.user)
+        #    #r = serializer.validated_data
+        #    #r["trigger_id"]=id
+
+        # EITHER: RENDER FRESH XML FROM PARSED DATA:
+        #xml = XMLRenderer().render(request.data) # ! django replaces the root element
+        #xml = self._renameXMLroot(xml, "lofar:trigger")
+        #print xml
+
+        # OR: USE RECEIVED XML DIRECTLY:
+        xml = str(request.body)
+
+
+        logger.debug('calling trigger handler')
+        try:
+            id = self._handle_trigger(request.user, xml)
+        except Exception as err:
+            traceback.print_exc()
+            return Response('Provided data has some issues! (Details: '+str(err)+")",  status=status.HTTP_400_BAD_REQUEST)
+            # for use with data model:  return Response('Provided data has some issues: ' +str(serializer.errors)+" (Accepted were: "+str(serializer.data)+")", status=status.HTTP_400_BAD_REQUEST)
+
+
+        return Response(id, status=status.HTTP_201_CREATED)
+
+    def _renameXMLroot(self, xml, newname):
+        root = etree.parse(StringIO(xml))
+        root.tag = newname
+        return etree.tostring(root)
+
+    def _handle_trigger(self, user, xml):
+        return TriggerRPC.handle_trigger(user, xml)
+
+
+class TriggerView(views.APIView):
+
+
+    #def post(self, request, format=None, **kwargs):
+    #    return Response("It is not possible to alter an existing trigger (i.e. POST for an existing trigger ID), sorry!", status=status.HTTP_405_METHOD_NOT_ALLOWED)
+
+
+    def get(self,request, format=None, **kwargs):
+        logger.debug('got GET from: '+str(request.META['REMOTE_ADDR']))
+        try:
+            if 'pk' in kwargs:
+                identifier = kwargs.get('pk')
+                logger.info('requested id is: '+str(id))
+                logger.info('requesting user is:'+ str(request.user))
+
+                xml = self._get_specification(identifier)
+
+                # EITHER DIRECT RESPONSE:
+                return Response(xml)
+
+                # OR USE DATA MODEL:
+                # data = XMLParser().parse(BytesIO(xml))
+
+                # example: data injection with validation:
+                # data['view_injected_get'] = 'pre-serializing'
+
+                #serializer = TriggerSerializer(data=data)
+                #logger.debug('returning valid data:' + str(serializer.is_valid()))
+                #r = serializer.validated_data
+
+                # example: data injection after validation:
+                # r['view_injected_get_2'] = 'post-validation'
+
+                #return Response(r)
+            else:
+                return Response("No ID provided!")
+        except Exception as err:
+            print err
+            return Response("Unable to retrieve the requested trigger, sorry!", status=status.HTTP_404_NOT_FOUND)
+
+
+    def _get_specification(self, identifier):
+
+        logger.info("Getting spec from specification service")
+
+        response = SpecificationRPC.get_specification(identifier)
+        return response
+
+        # test json data:
+        #json = '{"project_id": "p1", "triggerid": "t1", "triggerxml": "<trigger />", "status": "new", "momid": "m1", "sasid": "s1", "submittedby":"user"}'
+        #stream = BytesIO(json)
+        #data = JSONParser().parse(stream)
+        # return XMLRenderer().render(data)
+
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/urls.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..f8367292e911cffd1fe22d6439341a4efc1759c4
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/urls.py
@@ -0,0 +1,31 @@
+"""restinterface URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+    https://docs.djangoproject.com/en/1.10/topics/http/urls/
+Examples:
+Function views
+    1. Add an import:  from my_app import views
+    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
+Class-based views
+    1. Add an import:  from other_app.views import Home
+    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
+Including another URLconf
+    1. Import the include() function: from django.conf.urls import url, include
+    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
+"""
+
+
+from django.conf.urls import url, include
+from rest_framework import routers
+from triggerinterface.views import TriggerListView, TriggerView
+
+router = routers.DefaultRouter()
+
+# Wire up our API using automatic URL routing.
+# Additionally, we include login URLs for the browsable API.
+urlpatterns = [
+    url(r'^', include(router.urls)),
+    url(r'^triggers/$', TriggerListView.as_view()),
+    url(r'^triggers/(?P<pk>[0-9]+)/$', TriggerView.as_view()),
+    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
+]
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/wsgi.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/wsgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e66ebf284a882d31b630103305d9345a40850ef
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/restinterface/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for triggerservice project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "restinterface.settings")
+
+application = get_wsgi_application()
diff --git a/SAS/Trigger_Services/TriggerReceptionService/django_rest/urls.py b/SAS/Trigger_Services/TriggerReceptionService/django_rest/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..4cb07ff2e69264a2b059be4a9521c83ad52fed90
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/django_rest/urls.py
@@ -0,0 +1,25 @@
+from django.conf.urls import url, include
+from django.contrib.auth.models import User
+from rest_framework import routers, serializers, viewsets
+
+# Serializers define the API representation.
+class UserSerializer(serializers.HyperlinkedModelSerializer):
+    class Meta:
+        model = User
+        fields = ('url', 'username', 'email', 'is_staff')
+
+# ViewSets define the view behavior.
+class UserViewSet(viewsets.ModelViewSet):
+    queryset = User.objects.all()
+    serializer_class = UserSerializer
+
+# Routers provide an easy way of automatically determining the URL conf.
+router = routers.DefaultRouter()
+router.register(r'users', UserViewSet)
+
+# Wire up our API using automatic URL routing.
+# Additionally, we include login URLs for the browsable API.
+urlpatterns = [
+    url(r'^', include(router.urls)),
+    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
+]
diff --git a/SAS/Trigger_Services/TriggerReceptionService/lib/CMakeLists.txt b/SAS/Trigger_Services/TriggerReceptionService/lib/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5ff5fef8c959439108fab2958ad6de4f25c328cb
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/lib/CMakeLists.txt
@@ -0,0 +1,11 @@
+lofar_find_package(Python 2.7 REQUIRED)
+include(PythonInstall)
+
+set(_py_files
+    trigger_service.py
+    trigger_service_rpc.py
+    config.py
+    )
+
+python_install(${_py_files}
+    DESTINATION lofar/triggerservices)
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/lib/__init__.py b/SAS/Trigger_Services/TriggerReceptionService/lib/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Trigger_Services/TriggerReceptionService/lib/config.py b/SAS/Trigger_Services/TriggerReceptionService/lib/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..8632b3f747dc2a4fb99f1fda0165aab732df73c2
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/lib/config.py
@@ -0,0 +1,21 @@
+
+""" Config file for trigger services. """
+
+# Messaging
+
+CONNECTION_STRING = '127.0.0.1'
+
+MOMQUERY_BUSNAME = "momquerybus"
+MOMQUERY_SERVICENAME = "momqueryservice"
+
+VALIDATION_BUSNAME = "validationbus"
+VALIDATION_SERVICENAME = "validationservice"
+
+SPECIFICATION_BUSNAME = "specificationbus"
+SPECIFICATION_SERVICENAME = "specificationservice"
+
+SPECIFICATIONTRANSLATION_BUSNAME = "specificationtranslationbus"
+SPECIFICATIONTRANSLATION_SERVICENAME = "specificationtranslationservice"
+
+TRIGGER_BUSNAME = "triggerbus"
+TRIGGER_SERVICENAME = "triggerservice"
diff --git a/SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service.py b/SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd46427368e683fe8ab88a50c8d9c37ab8c88bc4
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+
+# trigger_handler.py
+#
+# Copyright (C) 2015
+# ASTRON (Netherlands Institute for Radio Astronomy)
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This file is part of the LOFAR software suite.
+# The LOFAR software suite is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The LOFAR software suite is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
+
+
+from StringIO import StringIO
+from lxml import etree
+
+from lofar.messaging import Service
+from lofar.messaging.Service import MessageHandlerInterface
+from lofar.common.util import waitForInterrupt
+
+from lofar.mom.momqueryservice.momqueryrpc import MoMQueryRPC
+from lofar.specificationservices.specification_service_rpc import SpecificationRPC
+from lofar.specificationservices.validation_service_rpc import ValidationRPC
+from lofar.specificationservices.translation_service_rpc import TranslationRPC
+
+from config import MOMQUERY_BUSNAME, MOMQUERY_SERVICENAME, SPECIFICATION_BUSNAME, SPECIFICATION_SERVICENAME, VALIDATION_BUSNAME, VALIDATION_SERVICENAME, SPECIFICATIONTRANSLATION_BUSNAME, SPECIFICATIONTRANSLATION_SERVICENAME, TRIGGER_SERVICENAME, TRIGGER_BUSNAME
+
+import logging
+logger = logging.getLogger(__name__)
+
+momqueryrpc = MoMQueryRPC(MOMQUERY_BUSNAME, MOMQUERY_SERVICENAME)
+validationrpc = ValidationRPC(VALIDATION_BUSNAME, VALIDATION_SERVICENAME)
+specificationrpc = SpecificationRPC(SPECIFICATION_BUSNAME, SPECIFICATION_SERVICENAME)
+translationrpc = TranslationRPC(SPECIFICATIONTRANSLATION_BUSNAME, SPECIFICATIONTRANSLATION_SERVICENAME)
+
+
+def _auth_allows_triggers(project):
+    # todo: momqueryrpc.authAllowsTriggers(project)
+    return True
+
+
+def _validate_trigger(trigger_xml):
+    return validationrpc.validate_trigger_specification(trigger_xml)
+
+
+def _validate_lofarspec(lofar_xml):
+    return validationrpc.validate_specification(lofar_xml)
+
+def _add_trigger(trigger_xml):
+    logger.info("Adding trigger")
+    # trigger_id = momqueryrp.addTrigger(xml)
+    trigger_id = 42
+    return trigger_id
+
+def _get_job_priority(project):
+    # prio = momqueryrp.getProjectPriority(project)
+    prio = 20
+    return prio
+
+def _add_specification(user, lofar_xml):
+    logger.info("Sending spec to specification service")
+    specificationrpc.add_specification(user, lofar_xml)
+
+
+def _translate_trigger_to_specification(trigger_xml, trigger_id, job_priority):
+    logger.info("translating trigger to spec")
+    specification_xml = translationrpc.trigger_to_specification(trigger_xml, trigger_id, job_priority)
+    return specification_xml
+
+
+def _send_notification(text):
+    logger.info("sending notification")
+    # todo: send notification to bus
+
+
+def _parse_project_id(trigger_xml):
+    doc = etree.parse(StringIO(trigger_xml.encode('utf-8')))
+    ref = doc.find("projectReference")
+    return ref.find("identifier").find("identifier").text
+
+class TriggerHandler(MessageHandlerInterface):
+
+    def __init__(self, **kwargs):
+        super(TriggerHandler, self).__init__(**kwargs)
+
+        self.service2MethodMap = {
+            'handle_trigger': self.handle_trigger,
+            }
+
+    def handle_trigger(self, user, trigger_xml):
+        logger.info("Handling trigger from user -> "+str(user))
+        trigger_id = None
+        if _validate_trigger(trigger_xml):
+            logger.info("Trigger XML is valid")
+            project = _parse_project_id(trigger_xml)
+            logger.debug('project is -> ' + str(project))
+            priority = _get_job_priority(project) #todo: how to determine job_prio based on project prio? Consider priority from trigger xml?
+            logger.debug('project priority is ->' + str(priority))
+            if _auth_allows_triggers(project):
+                logger.info("trigger is authorized, adding to trigger and specification")
+                trigger_id = _add_trigger(trigger_xml)
+                logger.debug("Trigger was assigned id -> "+str(trigger_id))
+                if trigger_id:
+                    lofar_xml = _translate_trigger_to_specification(trigger_xml, trigger_id, priority)
+                    if _validate_lofarspec(lofar_xml):
+                        logger.debug("Lofar specification is valid!")
+                        _add_specification(user, lofar_xml)
+                    else:
+                        msg = "Translation to Lofar specification failed!"
+                        logger.error(msg)
+                        raise Exception(msg)
+                else:
+                    msg = "There was a problem adding the trigger!"
+                    logger.error(msg)
+                    raise Exception(msg)
+            else:
+                msg = "Trigger authorization failed!"
+                logger.error(msg)
+                raise Exception(msg)
+
+        else:
+            msg = "Got invalid trigger XML"
+            logger.error(msg)
+            raise Exception(msg)
+
+        logger.info("trigger handling done. -> "+str(trigger_id))
+        return str(trigger_id)
+
+def create_service(servicename=TRIGGER_SERVICENAME, busname=TRIGGER_BUSNAME):
+    return Service(servicename,
+                       TriggerHandler,
+                       busname=busname,
+                       use_service_methods=True,
+    )
+
+
+def main():
+    with create_service():
+       waitForInterrupt()
+
diff --git a/SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service_rpc.py b/SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service_rpc.py
new file mode 100644
index 0000000000000000000000000000000000000000..8950742932b3238a99d326f6084189473c3e0ea8
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/lib/trigger_service_rpc.py
@@ -0,0 +1,21 @@
+
+from lofar.messaging.RPC import RPC, RPCException, RPCWrapper
+from config import TRIGGER_BUSNAME, TRIGGER_SERVICENAME
+import logging
+logger = logging.getLogger(__file__)
+
+
+class TriggerRPC(RPCWrapper):
+
+    def __init__(self, busname=TRIGGER_BUSNAME,
+                 servicename=TRIGGER_SERVICENAME,
+                 broker=None,
+                 timeout=120):
+        super(TriggerRPC, self).__init__(busname, servicename, broker, timeout=timeout)
+
+
+    def handle_trigger(self, user, trigger_xml):
+        logger.info("Requesting handling of trigger")
+        result = self.rpc('handle_trigger', user=user, trigger_xml=trigger_xml)
+        logger.info("Received trigger handling result -> " +result)
+        return result
diff --git a/SAS/Trigger_Services/TriggerReceptionService/test/CMakeLists.txt b/SAS/Trigger_Services/TriggerReceptionService/test/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SAS/Trigger_Services/TriggerReceptionService/test/setup_queues_and_services.sh b/SAS/Trigger_Services/TriggerReceptionService/test/setup_queues_and_services.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a40643b3c0a0bfe1624f2fcfd00d22148e3c6a1f
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/test/setup_queues_and_services.sh
@@ -0,0 +1,7 @@
+#/bin/sh
+
+echo "Setting up queues"
+./qpid-config add exchange topic triggerbus
+
+echo "Starting trigger service"
+triggerservice &
\ No newline at end of file
diff --git a/SAS/Trigger_Services/TriggerReceptionService/test/trigger-testing.xml b/SAS/Trigger_Services/TriggerReceptionService/test/trigger-testing.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2cda3788b5a5798652e10b2bb718b3476849f131
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/test/trigger-testing.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<p:trigger xmlns:p="http://www.astron.nl/LofarTrigger" xmlns:p1="http://www.astron.nl/LofarBase" xmlns:p2="http://www.astron.nl/LofarSpecification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.astron.nl/LofarTrigger LofarTrigger.xsd ">
+  <version>version</version>
+  <name>name</name>
+  <description>description</description>
+  <projectReference>
+    <identifier>
+      <source>source</source>
+      <identifier>0</identifier>
+      <description>description</description>
+    </identifier>
+  </projectReference>
+  <submitter>
+    <name>name</name>
+    <email>email</email>
+    <affiliation>affiliation</affiliation>
+  </submitter>
+  <userName>userName</userName>
+  <comment>comment</comment>
+  <qualityOfService>THROUGHPUT</qualityOfService>
+  <event>
+    <identification>identification</identification>
+    <description>description</description>
+    <type>VOEvent</type>
+  </event>
+  <specification>
+    <version>version</version>
+    <projectReference>
+      <identifier>
+        <source>source</source>
+        <identifier>0</identifier>
+        <description>description</description>
+      </identifier>
+    </projectReference>
+    <userName>userName</userName>
+    <comment>comment</comment>
+    <generatorVersion>generatorVersion</generatorVersion>
+    <priority>0</priority>
+    <qualityOfService>THROUGHPUT</qualityOfService>
+    <container>
+      <temporaryIdentifier>
+        <source>source</source>
+        <identifier>0</identifier>
+        <description>description</description>
+      </temporaryIdentifier>
+      <folder>
+        <name>name</name>
+        <description>description</description>
+        <topology>topology</topology>
+      </folder>
+    </container>
+    <activity>
+      <temporaryIdentifier>
+        <source>source</source>
+        <identifier>0</identifier>
+        <description>description</description>
+      </temporaryIdentifier>
+      <observation>
+        <name>name</name>
+        <description>description</description>
+        <processingCluster>
+          <name>name</name>
+          <partition>partition</partition>
+          <numberOfTasks>0</numberOfTasks>
+          <minRAMPerTask unit="byte">0</minRAMPerTask>
+          <minScratchPerTask unit="byte">0</minScratchPerTask>
+          <maxDurationPerTask>P1D</maxDurationPerTask>
+          <numberOfCoresPerTask>0</numberOfCoresPerTask>
+          <runSimultaneous>true</runSimultaneous>
+        </processingCluster>
+        <instrument>Beam Observation</instrument>
+        <defaultTemplate>defaultTemplate</defaultTemplate>
+        <tbbPiggybackAllowed>true</tbbPiggybackAllowed>
+        <aartfaacPiggybackAllowed>true</aartfaacPiggybackAllowed>
+        <correlatedData>true</correlatedData>
+        <filteredData>true</filteredData>
+        <beamformedData>true</beamformedData>
+        <coherentStokesData>true</coherentStokesData>
+        <incoherentStokesData>true</incoherentStokesData>
+        <antenna>HBA Zero</antenna>
+        <clock mode="160 MHz">
+          <channelWidth unit="Hz">0.0</channelWidth>
+          <samplesPerSecond>0.0</samplesPerSecond>
+          <subbandWidth unit="Hz">0.0</subbandWidth>
+          <systemClock unit="Hz">0.0</systemClock>
+        </clock>
+        <instrumentFilter>10-70 MHz</instrumentFilter>
+        <integrationInterval>0.0</integrationInterval>
+        <channelsPerSubband>0</channelsPerSubband>
+        <coherentDedisperseChannels>true</coherentDedisperseChannels>
+        <tiedArrayBeams>
+          <flyseye>true</flyseye>
+          <nrTabRings>0</nrTabRings>
+          <tabRingSize>0.0</tabRingSize>
+          <tiedArrayBeamList>
+            <pencilBeam index="0">
+              <angle1>0.0</angle1>
+              <angle2>0.0</angle2>
+            </pencilBeam>
+          </tiedArrayBeamList>
+        </tiedArrayBeams>
+        <stokes>
+          <integrateChannels>true</integrateChannels>
+          <subbandsPerFileCS>0</subbandsPerFileCS>
+          <numberCollapsedChannelsCS>0</numberCollapsedChannelsCS>
+          <stokesDownsamplingStepsCS>0</stokesDownsamplingStepsCS>
+          <whichCS>I</whichCS>
+          <subbandsPerFileIS>0</subbandsPerFileIS>
+          <numberCollapsedChannelsIS>0</numberCollapsedChannelsIS>
+          <stokesDownsamplingStepsIS>0</stokesDownsamplingStepsIS>
+          <whichIS>I</whichIS>
+        </stokes>
+        <bypassPff>true</bypassPff>
+        <enableSuperterp>true</enableSuperterp>
+        <numberOfBitsPerSample>0</numberOfBitsPerSample>
+        <stationSelectionSpecification>
+          <stationSelection>
+            <stationSet>Single</stationSet>
+            <minimumConstraint>1</minimumConstraint>
+          </stationSelection>
+        </stationSelectionSpecification>
+        <timeWindowSpecification>
+          <timeFrame>UT</timeFrame>
+          <duration><duration>P5Y</duration></duration>
+        </timeWindowSpecification>
+      </observation>
+      <status>status</status>
+    </activity>
+    <entity>
+      <temporaryIdentifier>
+        <source>source</source>
+        <identifier>0</identifier>
+        <description>description</description>
+      </temporaryIdentifier>
+      <dataproductType>UVDataProduct</dataproductType>
+      <storageCluster>
+        <name>name</name>
+        <partition>partition</partition>
+      </storageCluster>
+    </entity>
+  </specification>
+  <generatorVersion>generatorVersion</generatorVersion>
+</p:trigger>
diff --git a/SAS/Trigger_Services/TriggerReceptionService/test/trigger_misc_testing_nov2016.xml b/SAS/Trigger_Services/TriggerReceptionService/test/trigger_misc_testing_nov2016.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97445e398355b68cb25b8d5ef91ed324cb01b963
--- /dev/null
+++ b/SAS/Trigger_Services/TriggerReceptionService/test/trigger_misc_testing_nov2016.xml
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="UTF-8"?>
+  <lofar:project xmlns:lofar="http://www.astron.nl/MoM2-Lofar" xmlns:mom2="http://www.astron.nl/MoM2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.astron.nl/MoM2-Lofar http://lofar.astron.nl:8080/mom3/schemas/LofarMoM2.xsd http://www.astron.nl/MoM2 http://lofar.astron.nl:8080/mom3/schemas/MoM2.xsd ">
+  <version>2.16.3</version>
+  <template version="2.16.3" author="Alwin de Jong,Adriaan Renting" changedBy="Adriaan Renting">
+  <description>XML Template generator version 2.16.3</description>
+  </template>
+  <name>test-lofar</name>
+  <children>
+   <item index="0">
+    <lofar:folder topology_parent="false">
+    <name>MISC-trigger-testing NV</name>
+    <description>MISC-trigger-testing NV (8 nov 2016)</description>
+    <children>
+   <item index="0">
+        <lofar:folder topology_parent="true">
+          <topology>0</topology>
+          <name>TheParentFolder</name>
+          <description>3C196/3C147 LBA standard imaging (Imaging)</description>
+          <children>
+          <item index="0">
+                <lofar:observation>
+                  <name>TargetObservation</name>
+                  <description>3C147/1/TO (Target Observation)</description>
+                  <topology>B0.1.T</topology>
+                  <predecessor_topology></predecessor_topology>
+                  <currentStatus>
+                    <mom2:openedStatus/>
+                  </currentStatus>
+                  <lofar:observationAttributes>
+                    <observationId>
+                    </observationId>
+                    <name>3C147/1/TO</name>
+                    <projectName>CEP4tests</projectName>
+                    <instrument>Beam Observation</instrument>
+                    <defaultTemplate>BeamObservation</defaultTemplate>
+                    <tbbPiggybackAllowed>true</tbbPiggybackAllowed>
+                    <aartfaacPiggybackAllowed>true</aartfaacPiggybackAllowed>
+                    <userSpecification>
+                      <correlatedData>true</correlatedData>
+                      <coherentStokesData>true</coherentStokesData>
+                      <incoherentStokesData>false</incoherentStokesData>
+                      <antenna>LBA Outer</antenna>
+                      <clock mode="200 MHz"/>
+                      <instrumentFilter>10-90 MHz</instrumentFilter>
+                      <integrationInterval>1.0</integrationInterval>
+                      <channelsPerSubband>64</channelsPerSubband>
+                      <coherentDedisperseChannels>false</coherentDedisperseChannels>
+                      <tiedArrayBeams>
+                        <flyseye>false</flyseye>
+                      </tiedArrayBeams>
+                      <stokes>
+                        <integrateChannels>false</integrateChannels>
+                        <subbandsPerFileCS>512</subbandsPerFileCS>
+                        <numberCollapsedChannelsCS>16</numberCollapsedChannelsCS>
+                        <stokesDownsamplingStepsCS>128</stokesDownsamplingStepsCS>
+                        <whichCS>IQUV</whichCS>
+                        <subbandsPerFileIS></subbandsPerFileIS>
+                        <numberCollapsedChannelsIS></numberCollapsedChannelsIS>
+                        <stokesDownsamplingStepsIS></stokesDownsamplingStepsIS>
+                        <whichIS></whichIS>
+                      </stokes>
+                      <stationSet>Custom</stationSet>
+                      <stations>CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501,RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508,RS509</stations>
+                      <timeFrame>UT</timeFrame>
+                      <startTime>2016-06-10T14:29:27</startTime>
+                      <endTime>2016-06-10T14:34:27</endTime>
+                      <duration>300</duration>
+                      <bypassPff>false</bypassPff>
+                      <enableSuperterp>false</enableSuperterp>
+                      <numberOfBitsPerSample>8</numberOfBitsPerSample>
+	  				  <misc>
+				  {"employees":[
+    {"firstName":"John", "lastName":"Doe"},
+    {"firstName":"Anna", "lastName":"Smith"},
+    {"firstName":"Peter", "lastName":"Jones"}
+]}
+				  </misc>
+
+                    </userSpecification>
+                  </lofar:observationAttributes>
+				  <storageCluster>
+                     <name>CEP666_obs_level</name>
+                     <partition>/data/projects/observation</partition>
+                   </storageCluster>
+                  <children>
+<item index="0">
+                      <lofar:measurement xsi:type="lofar:BFMeasurementType">
+                        <name>3C147</name>
+                        <description>3C147</description>
+                        <topology>B0.1.T.SAP000</topology>
+                        <currentStatus>
+                          <mom2:openedStatus/>
+                        </currentStatus>
+                        <lofar:bfMeasurementAttributes>
+                          <measurementType>Target</measurementType>
+                          <specification>
+                            <targetName>3C147</targetName>
+                            <ra>85.6510833333</ra>
+                            <dec>49.8519666667</dec>
+                            <equinox>J2000</equinox>
+                            <duration>0</duration>
+                            <subbandsSpecification>
+                              <subbands>114..353</subbands>
+                            </subbandsSpecification>
+                          <tiedArrayBeams>
+                            <flyseye>false</flyseye>
+                          <nrTabRings>0</nrTabRings>
+                          <tabRingSize></tabRingSize>
+                            <tiedArrayBeamList>
+                              
+                            </tiedArrayBeamList>
+                          </tiedArrayBeams>
+                          </specification>
+                        </lofar:bfMeasurementAttributes>
+                        <resultDataProducts>
+                            <item>
+								<lofar:uvDataProduct>
+									<name>B0.1.T.SAP000.dps.uv</name>
+									<topology>B0.1.T.SAP000.dps.uv</topology>
+									<status>no_data</status>
+									<storageCluster>
+										<name>CEP4</name>
+										<partition>/data/projects/</partition>
+										<remark>this will not overwrite the settings on observation level</remark>
+									</storageCluster>
+								</lofar:uvDataProduct>
+							</item>
+                            <item>
+								<lofar:bfDataProduct>
+									<name>B0.1.T.SAP000.dps.cs</name>
+									<topology>B0.1.T.SAP000.dps.cs</topology>
+									<status>no_data</status>
+									<storageCluster>
+										<name>CEP4</name>
+										<partition>/data/projects/</partition>
+										<remark>this will not overwrite the settings on observation level</remark>
+									</storageCluster>
+								</lofar:bfDataProduct>
+							</item>							
+                        </resultDataProducts>   
+                      </lofar:measurement>
+                    </item>
+<item index="0">
+                      <lofar:measurement xsi:type="lofar:BFMeasurementType">
+                        <name>3C196</name>
+                        <description>3C196</description>
+                        <topology>B0.1.T.SAP001</topology>
+                        <currentStatus>
+                          <mom2:openedStatus/>
+                        </currentStatus>
+                        <lofar:bfMeasurementAttributes>
+                          <measurementType>Calibration</measurementType>
+                          <specification>
+                            <targetName>3C196</targetName>
+                            <ra>123.400291667</ra>
+                            <dec>48.2173833333</dec>
+                            <equinox>J2000</equinox>
+                            <duration>0</duration>
+                            <subbandsSpecification>
+                              <subbands>114..353</subbands>
+                            </subbandsSpecification>
+                          <tiedArrayBeams>
+                            <flyseye>false</flyseye>
+                          <nrTabRings></nrTabRings>
+                          <tabRingSize></tabRingSize>
+                            <tiedArrayBeamList>
+                                              <tiedArrayBeam>
+                  <coherent>true</coherent>
+                  <angle1>1.4611271088</angle1>
+                  <angle2>0.38422550818</angle2>
+                </tiedArrayBeam>
+                            </tiedArrayBeamList>
+                          </tiedArrayBeams>
+                          </specification>
+                        </lofar:bfMeasurementAttributes>
+                        <resultDataProducts>
+                                          <item>
+                    <lofar:uvDataProduct>
+                    <name>B0.1.T.SAP001.dps.uv</name>
+                    <topology>B0.1.T.SAP001.dps.uv</topology>
+                    <status>no_data</status>
+                    <storageCluster>
+                      <name>CEP4</name>
+                      <partition>/data/projects/</partition>
+                    </storageCluster>
+                    </lofar:uvDataProduct>
+                  </item>
+                        </resultDataProducts>   
+                      </lofar:measurement>
+                    </item>
+				</children>
+                </lofar:observation>
+                </item>
+        <item index="0">
+		
+              <lofar:pipeline xsi:type="lofar:CalibrationPipelineType">
+                <topology>B0.1.CPT</topology>
+                <predecessor_topology>B0.1.T</predecessor_topology>
+                <name>3C196/1/CPT</name>
+                <description>3C196/1/CPT (Cal Pipe Target)</description>
+                <currentStatus>
+                  <mom2:openedStatus/>
+                </currentStatus>
+				
+					<processingCluster>
+						<name>CEP4</name>
+						<partition>/data/projects/</partition>
+						<numberOfTasks>244</numberOfTasks>
+						<minRAMPerTask unit="byte">1000000000</minRAMPerTask>
+						<minScratchPerTask unit="byte">100000000</minScratchPerTask>    
+						<maxDurationPerTask>PT600S</maxDurationPerTask>
+						<numberOfCoresPerTask>20</numberOfCoresPerTask>
+						<runSimultaneous>true</runSimultaneous>
+                  </processingCluster>
+				  
+                <pipelineAttributes>
+                  <defaultTemplate>Calibrator Pipeline (no export)</defaultTemplate>
+                  <flaggingStrategy>LBAdefault</flaggingStrategy>
+                  <duration>600</duration>
+                  <skyModelDatabase>3C196</skyModelDatabase>
+                  <demixingParameters>
+                    <averagingFreqStep>16</averagingFreqStep>
+                    <averagingTimeStep>5</averagingTimeStep>
+                    <demixFreqStep>64</demixFreqStep>
+                    <demixTimeStep>10</demixTimeStep>
+                    <demixAlways>CasA,CygA</demixAlways>
+                    <demixIfNeeded></demixIfNeeded>
+                    <ignoreTarget></ignoreTarget>
+                  </demixingParameters>
+					<bbsParameters>
+					  <baselines></baselines>
+					  <correlations></correlations>
+					  <beamModelEnable>true</beamModelEnable>
+					  <solveParms></solveParms>
+					  <solveUVRange></solveUVRange>
+					  <strategyBaselines></strategyBaselines>
+					  <strategyTimeRange></strategyTimeRange>
+					</bbsParameters>
+				<misc>
+				  {"employees":[
+					{"firstName":"John", "lastName":"Doe"},
+					{"firstName":"Anna", "lastName":"Smith"},
+					{"firstName":"Peter", "lastName":"Jones"}
+				]}
+				  </misc>
+
+				</pipelineAttributes>
+			<storageCluster>
+				<name>CEP666_pip</name>
+				<partition>/data/projects/</partition>
+			</storageCluster>
+
+		<generic>
+		    <additional-otdb-keys>
+			    Version=2.18
+				Cluster.ProcessingCluster.clusterName=CEP4
+				Cluster.ProcessingCluster.clusterPartition=/data/projects/
+				Cluster.ProcessingCluster.numberOfTasks=244
+				Cluster.ProcessingCluster.minRAMPerTask=1000000000
+				Cluster.ProcessingCluster.minScratchPerTask=100000000
+				Cluster.ProcessingCluster.maxDurationPerTask=PT600S
+				Cluster.ProcessingCluster.numberOfCoresPerTask=20
+				Cluster.ProcessingCluster.runSimultaneous=true
+				
+				DataProducts.Output_Correlated.storageClusterName=CEP4
+				DataProducts.Output_Correlated.storageClusterPartition=/data/projects/
+			</additional-otdb-keys>
+        </generic>		
+                <usedDataProducts>
+                  <item>
+                    <lofar:uvDataProduct topology="B0.1.T.SAP001.dps.uv">
+                    </lofar:uvDataProduct>
+                  </item>
+                </usedDataProducts>
+                <resultDataProducts>
+                  <item>
+                    <lofar:instrumentModelDataProduct>
+                      <name>B0.1.CPT.dps.im</name>
+                      <topology>B0.1.CPT.dps.im</topology>
+                      <status>no_data</status>
+                      <storageCluster>
+                      <name>CEP4_dps_im</name>
+                      <partition>/data/projects/</partition>
+                    </storageCluster>
+                    </lofar:instrumentModelDataProduct>
+                  </item>
+                  <item>
+                    <lofar:uvDataProduct>
+                      <name>B0.1.CPT.dps.uv</name>
+                      <topology>B0.1.CPT.dps.uv</topology>
+                      <status>no_data</status>
+                      <storageCluster>
+                      <name>CEP4_dps_uv</name>
+                      <partition>/data/projects/</partition>
+                    </storageCluster>
+                    </lofar:uvDataProduct>
+                  </item>
+                </resultDataProducts>
+              </lofar:pipeline>
+            </item>
+<item index="0">
+                  <lofar:pipeline xsi:type="lofar:CalibrationPipelineType">
+                    <topology>B0.1.PT0</topology>
+                    <predecessor_topology>B0.1.T,B0.1.CPT</predecessor_topology>
+                    <name>3C147/1.0/TP</name>
+                    <description>3C147/1.0/TP (Target Pipeline)</description>
+                    <currentStatus>
+                      <mom2:openedStatus/>
+                    </currentStatus>
+					<processingCluster>
+						<name>CEP4</name>
+						<partition>/data/projects/</partition>
+						<numberOfTasks>244</numberOfTasks>
+						<minRAMPerTask unit="byte">1000000000</minRAMPerTask>
+						<minScratchPerTask unit="byte">100000000</minScratchPerTask>    
+						<maxDurationPerTask>PT600S</maxDurationPerTask>
+						<numberOfCoresPerTask>20</numberOfCoresPerTask>
+						<runSimultaneous>true</runSimultaneous>
+					</processingCluster>
+                    <pipelineAttributes>
+                      <defaultTemplate>Calibration Pipeline Target</defaultTemplate>
+                      <flaggingStrategy>LBAdefault</flaggingStrategy>
+                      <duration>600</duration>
+                  <demixingParameters>
+                    <averagingFreqStep>16</averagingFreqStep>
+                    <averagingTimeStep>5</averagingTimeStep>
+                    <demixFreqStep>64</demixFreqStep>
+                    <demixTimeStep>10</demixTimeStep>
+                    <demixAlways>CasA,CygA</demixAlways>
+                    <demixIfNeeded></demixIfNeeded>
+                    <ignoreTarget></ignoreTarget>
+                  </demixingParameters>
+            <bbsParameters>
+              <baselines></baselines>
+              <correlations></correlations>
+              <beamModelEnable>true</beamModelEnable>
+              <solveParms></solveParms>
+              <solveUVRange></solveUVRange>
+              <strategyBaselines></strategyBaselines>
+              <strategyTimeRange></strategyTimeRange>
+            </bbsParameters>
+							<misc>
+				  {"employees":[
+					{"firstName":"John", "lastName":"Doe"},
+					{"firstName":"Anna", "lastName":"Smith"},
+					{"firstName":"Peter", "lastName":"Jones"}
+				]}
+				  </misc>
+
+	</pipelineAttributes>
+			<storageCluster>
+				<name>CEP666_pip</name>
+				<partition>/data/projects/</partition>
+			</storageCluster>
+
+                    <usedDataProducts>
+                      <item>
+                        <lofar:uvDataProduct topology="B0.1.T.SAP000.dps.uv">
+                          <name>B0.1.T.SAP000.dps.uv</name>
+                        </lofar:uvDataProduct>
+                      </item>
+                      <item>
+                        <lofar:instrumentModelDataProduct topology="B0.1.CPT.dps.im">
+                          <name>B0.1.CPT.dps.im</name>
+                        </lofar:instrumentModelDataProduct>
+                      </item>
+                    </usedDataProducts>
+                    <resultDataProducts>
+                        <item>
+                          <lofar:uvDataProduct>
+                            <name>B0.1.PT0.dps.uv</name>
+                            <topology>B0.1.PT0.dps.uv</topology>
+                            <status>no_data</status>
+                    <storageCluster>
+                      <name>CEP4_dps_uv</name>
+                      <partition>/data/projects/</partition>
+                    </storageCluster>
+                          </lofar:uvDataProduct>
+                        </item> 
+                    </resultDataProducts>               
+                    </lofar:pipeline>
+                  </item>
+<item index="0">
+        <lofar:pipeline xsi:type="lofar:ImagingPipelineType">
+          <topology>B0.PI0</topology>
+          <predecessor_topology>B0.1.PT0</predecessor_topology>
+          <name>3C147/IM</name>
+          <description>3C147/IM (Imaging pipeline beam 0)</description>
+          <currentStatus>
+            <mom2:openedStatus/>
+          </currentStatus>
+  <processingCluster>
+                    <name>CEP4</name>
+                    <partition>/data/projects/</partition>
+                    <numberOfTasks>244</numberOfTasks>
+                    <minRAMPerTask unit="byte">1000000000</minRAMPerTask>
+                    <minScratchPerTask unit="byte">100000000</minScratchPerTask>    
+                    <maxDurationPerTask>PT600S</maxDurationPerTask>
+                    <numberOfCoresPerTask>20</numberOfCoresPerTask>
+                    <runSimultaneous>true</runSimultaneous>
+                  </processingCluster>
+				  <storageCluster>
+                     <name>CEP666_pip_imaging</name>
+                     <partition>/data/projects/</partition>
+                   </storageCluster>
+                <imagingPipelineAttributes>
+            <defaultTemplate>Imaging Pipeline LBA</defaultTemplate>
+            <duration>1500</duration>
+            <nrOfOutputSkyImage>24</nrOfOutputSkyImage>
+            <imagingParameters>
+              <nrSlicesPerImage>1</nrSlicesPerImage>
+              <nrSubbandsPerImage>10</nrSubbandsPerImage>
+              <maxBaseline></maxBaseline>
+              <fieldOfView>5.0</fieldOfView>
+              <weight></weight>
+              <robust></robust>
+              <iterations></iterations>
+              <threshold></threshold>
+              <uvMin></uvMin>
+              <uvMax></uvMax>
+              <stokes></stokes>
+            </imagingParameters>
+				<misc>
+				  {"employees":[
+					{"firstName":"John", "lastName":"Doe"},
+					{"firstName":"Anna", "lastName":"Smith"},
+					{"firstName":"Peter", "lastName":"Jones"}
+				]}
+				  </misc>
+
+          </imagingPipelineAttributes>
+		  <storageCluster>
+			<name>CEP555_pipe_level</name>
+			<partition>/data/projects/imaging</partition>
+		   </storageCluster>
+
+                <usedDataProducts>
+                <item>
+              <lofar:uvDataProduct topology="B0.1.PT0.dps.uv">
+                <name>B0.1.PT0.dps.uv</name>
+              </lofar:uvDataProduct>
+            </item>
+               </usedDataProducts>
+                <resultDataProducts>
+                  <item>
+                    <lofar:skyImageDataProduct>
+                      <name>B0.PI0.dps.si</name>
+                      <topology>B0.PI0.dps.si</topology>
+                      <status>no_data</status>
+                      <storageCluster_xxx>
+                      <name>CEP666_dps_si</name>
+                      <partition>/data/projects/skyImageDataProduct</partition>
+                    </storageCluster_xxx>
+                    </lofar:skyImageDataProduct>
+                  </item>
+                </resultDataProducts>
+              </lofar:pipeline>
+            </item>
+		</children>
+  </lofar:folder>
+  </item>
+</children>
+  </lofar:folder>
+  </item>
+          </children>
+  </lofar:project>