diff --git a/.gitignore b/.gitignore
index 0e74a9d7a77cad0bf68e6ddcdf246a87fa833f15..68a4e9ad8f207845fd1e8dc40769e4871a7ba508 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,3 +79,9 @@ services/**/**/testing
 tmp
 delivery_root
 lustre/
+
+# ignore local NGAS
+local_ngas_root/cache/
+local_ngas_root/log/
+local_ngas_root/processing/
+local_ngas_root/*.pid
diff --git a/Dockerfile.ngas b/Dockerfile.ngas
new file mode 100644
index 0000000000000000000000000000000000000000..ff7f77bda8f0874a5903ebb8e523ef6b100f82d3
--- /dev/null
+++ b/Dockerfile.ngas
@@ -0,0 +1,10 @@
+FROM icrar/ngas:11.0.2
+
+# Get postgres/mysql development stuff in the image
+RUN yum -y install epel-release && \
+        yum install -y postgresql-libs
+
+USER ngas
+RUN ./home/ngas/ngas_rt/bin/pip install psycopg2-binary==2.7.7
+
+USER root
diff --git a/ci/psql/Dockerfile.db b/ci/psql/Dockerfile.db
index b3030c5badda3d5d78d3cd5eb650bf7452b02e42..32af839a3770a867063d741ba82f57464159a260 100644
--- a/ci/psql/Dockerfile.db
+++ b/ci/psql/Dockerfile.db
@@ -1,5 +1,14 @@
 FROM postgres:12.6-alpine
 
-COPY ./ci/psql/test_data_archive.sql.gz /docker-entrypoint-initdb.d/test_data_archive.sql.gz
+ARG NGAS_VERSION=11.0.2
+
+WORKDIR /repos
+
+RUN apk add git && \
+    git clone --depth 1 --branch "v${NGAS_VERSION}" https://github.com/ICRAR/ngas.git
+
+WORKDIR /
+
+COPY ./ci/psql/init_ngas_db.sh ./ci/psql/test_data_archive.sql.gz /docker-entrypoint-initdb.d/
 
 CMD ["postgres"]
\ No newline at end of file
diff --git a/ci/psql/init_ngas_db.sh b/ci/psql/init_ngas_db.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6157a5b6732b006242a066fb85015398b40a87af
--- /dev/null
+++ b/ci/psql/init_ngas_db.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -e
+set -o pipefail
+
+DB=ngas
+PATH_TO_SQL_FILE=/repos/ngas/src/ngamsCore/ngamsSql/ngamsCreateTables-PostgreSQL.sql
+
+echo "Creating database '$DB' "
+createdb -U $POSTGRES_USER -O $POSTGRES_USER $DB
+
+echo "Populating database '$DB' "
+psql -U $POSTGRES_USER -1 -d $DB -f $PATH_TO_SQL_FILE
+
+echo "'$DB' was created and populated successfully"
diff --git a/docker-compose.yml b/docker-compose.yml
index de4817d70533ae3beeb1916f718077c3dd433519..fff6bf6b4503bbebd5bcba33fb77f4f6cd0eecfd 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -43,6 +43,17 @@ services:
       - ./delivery_root:/tmp/delivery_root
       - ./lustre/aoc/cluster/pipeline/docker/workspaces:/lustre/aoc/cluster/pipeline/docker/workspaces
 
+  ngas:
+    build:
+      context: .
+      dockerfile: ./Dockerfile.ngas
+    depends_on:
+      - db
+    ports:
+      - "7777:7777"
+    volumes:
+      - ./local_ngas_root:/home/ngas/NGAS
+
   schema:
     build:
       context: ./schema/
diff --git a/local_ngas_root/cfg/ngamsServer.conf b/local_ngas_root/cfg/ngamsServer.conf
new file mode 100644
index 0000000000000000000000000000000000000000..19be4c1736e49e7394cc4fc390ccd6418233aa09
--- /dev/null
+++ b/local_ngas_root/cfg/ngamsServer.conf
@@ -0,0 +1,542 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE NgamsCfg>
+<!--
+    Sample configuration file distributed with NGAS.
+    ICRAR - International Centre for Radio Astronomy Research
+    (c) UWA - The University of Western Australia, 2017
+    Copyright by UWA (in the framework of the ICRAR)
+    All rights reserved
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+    This library 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
+    Lesser General Public License for more details.
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+    MA 02111-1307  USA
+-->
+
+<!--
+Sample configuration file distributed with NGAS.
+This file pretends to show users how a server is configured, and all the
+knobs and levers that can be toggled to change the behaviour of the server.
+It offers secure default values for most options, so it should be safe to use
+as a starting point to write your own configuration files.
+Each high-level XML element contains a description of what topic it covers,
+and which attributes and values are accepted.
+For more information on the configuration options, visit NGAS's documentation at
+https://ngas.readthedocs.io/en/latest/
+Quick-start
+===========
+To quickly adapt this file to your needs:
+ * Adjust the Server.RootDirectory attribute to your NGAS root directory
+ * Adjust the Server.ArchiveName to a meaningful name for your archive
+ * Adjust the <Db> XML element to point to your database
+About time amounts
+==================
+Some time amounts are expresed using a DTHH:mm:ss format, with D, HH, mm and ss
+representing days, hours, minutes and seconds, respectivelly. A shorter version
+is also accepted in the form of HH:mm (without :ss). Because this is confusing
+future versions of NGAS will not support this format anymore, and will change
+to simply use seconds everywhere. Once this change takes effect the old format
+will still be supported for a few versions, but warning messages will appear so
+users update their configuration files.
+About secrets
+=============
+Some secrets (like Authorization passwords) are expressed in this configuration
+file using base64 encoding. This will change in future versions of NGAS, where
+passwords will be expressed literally.
+-->
+<NgamsCfg Id="ngamsCfg">
+
+
+
+
+	<!--
+	========================================================================
+	               High-level server-wide configuration items
+	========================================================================
+	-->
+
+	<!--
+	    Server configuration.
+	    The NGAS HTTP server listens for requests in the address indicated
+	    by the IpAddress/PortNo pair, and attends up to MaxSimReqs simultaneous
+	    requests. It acts as a proxy for requests that must be answered by other
+	    servers in the same cluster if ProxyMode is set; otherwise clients receive
+	    a redirect response instead.
+	    Any disk found by the server will be considered as being part of the
+	    abstract archive ArchiveName. Access to the disk, plus other block-based
+	    operations performed by the server (e.g., network read/write and
+	    checksum calculation) will be performed using BlockSize block size.
+	    Finally, a list of colon-separated directories containing python
+	    packages and modules can be specified using the PluginsPath attribute.
+	    This directories will be added to the sys.path of the NGAS server,
+	    allowing users to install their own code separately from the NGAS
+	    installation, which might not even be writable.
+	-->
+	<Server Id="Server-MWA"
+	        RootDirectory="/home/ngas/NGAS" ArchiveName="LocalWorkspacesArchive" BlockSize="65536"
+	        IpAddress="127.0.0.1" PortNo="7777" MaxSimReqs="10"
+	        ProxyMode="0"/>
+
+	<!--
+	    Authorization and authentication.
+	    Authorization is performed using Basic HTTP authentication.
+	    Usernames and passwords are defined on each of the User
+	    sub-elements below. Passwords are base64-encoded. For each user, a
+	    comma-separated list of the commands they are allow to use can be defined
+	    (with "*" serving as a wildcard to indicate all commands).
+	    Authorization can be enabled/disabled fully through the Enable attribute.
+	-->
+	<Authorization Id="Authorization" Enable="0">
+		<User Name="user1" Password="dXNlcjE=" Commands="*"/>
+		<User Name="user2" Password="dXNlcjI=" Commands="RETRIEVE"/>
+		<User Name="user3" Password="dXNlcjM=" Commands="ARCHIVE"/>
+	</Authorization>
+
+	<!--
+	    Logging configuration
+	    The NGAS server outputs its logging to three different sinks:
+	    the stdout, a (rotating) logfile, and syslog.
+	    The stdout output is not configured but via a command-line parameter.
+	    In a real-world setup the NGAS server will run in the background,
+	    so there is no point on configuring stdout logging here.
+	    Logfile output is configured via LocalLogFile, which indicates the
+	    logfile. Statements with level <= LocalLogLevel appear in the logfile.
+	    The logfile is rotated with a LogRotateInt interval (expressed as ddTHH:mm:ss),
+	    and LogRotateCache files are maintained before they start getting
+	    deleted.
+	    Syslog output is enabled if SysLog is 1. Statements are prefixed with
+	    SysLogPrefix before sent to syslog.
+	    Logging levels are interpreted like this:
+	    0 = NONE, 1 = ERROR, 2 = WARNING, 3 = NOTICE, 4 = INFO, 5 = DEBUG.
+	    The flag ArchiveRotatedLogfiles controls whether the rotated log files
+	    are archived (=1) on the host or not (=0).
+	-->
+	<Log Id="Log" LocalLogFile="log/LogFile.nglog" LocalLogLevel="4"
+	     LogRotateCache="30" LogRotateInt="01T00:00:00" SysLog="0"
+	     SysLogPrefix="ngas" ArchiveRotatedLogfiles="0"/>
+
+	<!--
+	    Archiving configuration
+	    The FreeSpaceDiskChangeMb and MinFreeSpaceWarningMb specify how much
+	    available free space in the disks will trigger an error to change the
+	    disk, and a warning email alerting about the condition, respectivelly.
+	    The PathPrefix is the top-level directory on each volume under which
+	    NGAS will store incoming data. Data will be replicated during archiving
+	    from the Main disk to a Replication disk if Replication is set to 1.
+	    If BackLogBuffering is set to 1, then failures during ARCHIVE commands
+	    *might* be resolved automatically by NGAS asynchronously. In such
+	    situations, backlogged data sits temporarily in the
+	    BackLogBufferDirectory.
+	-->
+	<ArchiveHandling Id="ArchiveHandling"
+	                 BackLogBufferDirectory="." BackLogBuffering="0"
+	                 FreeSpaceDiskChangeMb="200" MinFreeSpaceWarningMb="200"
+	                 PathPrefix="MWAArchive" Replication="0"/>
+
+	<!--
+	    Set of actions this server is allowed to perform
+	    Servers can be allowed to process archive requests, processing requests,
+	    remove requests and/or retrieve requests.
+	-->
+	<Permissions Id="Permissions" AllowArchiveReq="1" AllowProcessingReq="1"
+	             AllowRemoveReq="1" AllowRetrieveReq="1"/>
+
+	<!--
+	    Database connectivity
+	    NGAS uses the PEP-249-compliant module indicated by Interface to
+	    connect to the central database. This driver is wrapped by a
+	    connection pool, which will hold a maximum of MaxPoolConnections
+	    connections. When a new connection is established by the pool to
+	    the database server, the SQL statements specified in the sql attribute
+	    of the SessionSql XML sub-elements are executed. This could be useful,
+	    for instance, to switch to a different database before running any
+	    queries, if required, but could be used for other purposes.
+	    Because of historical reasons, some database schemas had a "ignore"
+	    column in the ngas_files table rather than a "file_ignore" column.
+	    If you are creating a database from scratch, you should prefer
+	    "file_ignore" (which is what we use in the SQL scripts we ship with
+	    NGAS to create databases from scratch), but if you have an existing
+	    database with "ignore" you can still configure NGAS to use that name.
+	    The UseFileIgnore attribute controls this. It defaults to "true",
+	    in which case "file_ignore" will be used throughout the code;
+	    otherwise "ignore" will be used instead.
+	    The Snapshot attribute should be considered unsafe, and (unless you
+	    know exactly what you are doing) should be left set to "0".
+	    Any other parameter will be used verbatim as keyword arguments
+	    to the connect method of the PEP-249 driver.
+	    Example: If the central database is a PostgreSQL server, and is
+	             using the old "ignore" column name one can setup this element
+	             to be:
+	      <Db Id="Db" Snapshot="0" Interface="psycopg2" UseFileIgnore="false"
+	          host="db-server.example.com" dbname="db-name" user="db-user"
+	          password="password"/>
+	-->
+	<!-- <Db Id="Db-Element" Snapshot="0" Interface="sqlite3"
+        MaxPoolConnections="5" UseFileIgnore="true"
+        database="/tmp/ngas.sqlite"/> -->
+    <Db Id="Db" Snapshot="0" Interface="psycopg2" UseFileIgnore="true"
+        host="db" dbname="ngas" user="archive"
+        password="docker"/>
+
+	<!--
+	    E-mail notification setup
+	    Under certain circumstances emails can be sent by NGAS to different
+	    recipients. Notifications are sent to the SmtpHost SMTP server, and
+	    appear as sent by Sender. Depending on the event generating the email,
+	    one of the addresses will be used. Email sending can be disabled,
+	    although even when disabled some notifications (that are considered
+	    too important to be missed) will still be sent.
+	    If messages cannot be sent for any reason, they are kept internally
+	    by NGAS for a maximum of time defined by MaxRetentionTime, or until
+	    MaxRetentionSize messages are hit.
+	-->
+	<Notification Id="Notification"
+	              Active="0" MaxRetentionSize="1" MaxRetentionTime="00T00:30:00"
+	              Sender="ngas@host.com" SmtpHost="localhost">
+		<AlertNotification>
+			<EmailRecipient Address="address@example.com"/>
+		</AlertNotification>
+		<ErrorNotification>
+			<EmailRecipient Address="address@example.com"/>
+		</ErrorNotification>
+		<DiskSpaceNotification>
+			<EmailRecipient Address="address@example.com"/>
+		</DiskSpaceNotification>
+		<DiskChangeNotification>
+			<EmailRecipient Address="address@example.com"/>
+		</DiskChangeNotification>
+		<NoDiskSpaceNotification>
+			<EmailRecipient Address="address@example.com"/>
+		</NoDiskSpaceNotification>
+		<DataCheckNotification>
+			<EmailRecipient Address="address@example.com"/>
+		</DataCheckNotification>
+	</Notification>
+
+
+
+
+	<!--
+	========================================================================
+	                              Background tasks
+	========================================================================
+	-->
+
+	<!--
+	    Configures the Janitor service.
+	    The Janitor service runs a number of house-keeping tasks in the
+	    background with a given period (specified via SuspensionTime).
+	    One of the tasks of the Janitor service is the check that the
+	    filesystems where files are being stored in have enough space to
+	    keep storing new files (and if not, send the server to OFFLINE
+	    state). This behavior is controlled via the MinSpaceSysDirMb
+	    attribute, which indicates how much space should always be available
+	    on each filesystem.
+	    Users can also specify extra functionality to be run during each
+	    janitor iteration. To do this, PlugIn XML sub-elements can be defined
+	    inside the JanitorThread element, each specifying a Name attribute
+	    pointing to a fully-qualified python module name. See NGAS's
+	    documentation for more details.
+	-->
+	<JanitorThread Id="JanitorThread-Std" SuspensionTime="0T00:10:00"
+	               MinSpaceSysDirMb="500"/>
+
+	<!--
+	    Caching control configuration
+	    If enabled (Enable="1"), the caching control service automatically
+	    removes data from the server when certain criteria are met.
+	    Files are removed from the cache if any of the following is true
+	    for them: 1) they have been in the cache for more than a specified
+	    maximum time, expressed in seconds (e.g., MaxTime="86400" for a full
+	    day), 2) the total volume of files in the cache has reached the
+	    specified limit (e.g., MaxCacheSize="1099511627776" to specify 1 TBs),
+	    3) a maximum number of files has been reached (e.g., MaxFiles="1000"
+	    for a maximum caching of 1000 files), and 4) A user-specific plugin,
+	    specified via the CacheControlPlugIn (a fully-qualified python module
+	    name) and the CacheControlPlugInPars parameters, which determines
+	    whether a particular file should be deleted or not.
+	    If any of these attributes is missing, the corresponding criterion
+	    is not applied. In the case of MaxCacheSize and MaxFiles, eligible
+	    files are selected FIFO-wise; that is, older files are removed first.
+	    On top of all the above, if the Subscription service is enabled files
+	    will only be eligible for deletion after they are successfully
+	    transmitted to all their subscribers. At the moment this is
+	    specified by setting CheckCanBeDeleted="1", but in future releases
+	    this will change and the behaviour will be implicit.
+	-->
+	<Caching Enable="0" Period="0T00:30:00" MaxCacheSize="1099511627776"
+	         CheckCanBeDeleted="1"/>
+
+	<!--
+	    Data Checker Thread configuration
+	    If enabled (Active="1"), the checksum of the files stored in the
+	    NGAS server will be periodically re-calculated (with a period of
+	    MinCycle) and compared against the respective checksum stored in the
+	    database. A summary report will be generated at the end and e-mailed
+	    to the corresponding recipient (see the Notification configuration
+	    element) if there are errors, or if the ForceNotif attribute is
+	    set to 1.
+	    The data checker thread can also be configured to perform a simple file
+	    scanning check (if Scan is "1") instead of a full checksum calculation
+	    and comparison.
+	-->
+	<DataCheckThread Id="DataCheckThread" Active="0" Scan="0"
+	                 ForceNotif="1" MaxProcs="4" MinCycle="01T00:00:00"/>
+
+	<!--
+	    A collection of system-level plug-ins
+	    These plug-ins are used for different purposes, either by a command or
+	    by the core system. Each specifies a name (a python module with that name,
+	    offering a function with the same name) and an optional set of comma-separated
+	    key=value parameter pairs.
+	-->
+	<SystemPlugIns Id="SystemPlugIns-Std"
+	         LabelPrinterPlugIn="-" LabelPrinterPlugInPars="-"
+	         OfflinePlugIn="ngamsGenericOfflinePlugIn" OfflinePlugInPars="unmount=0"
+	         OnlinePlugIn="ngamsGenericOnlinePlugIn" OnlinePlugInPars=""
+	         DiskSyncPlugIn="" DiskSyncPlugInPars=""/>
+
+
+
+
+	<!--
+	========================================================================
+	              File types, storage organisation, and processing
+	========================================================================
+	-->
+
+
+	<!--
+	    Mime type definitions.
+	    Here mime types, and their associated default extensions,
+	    are defined.
+	-->
+	<MimeTypes Id="MimeTypes-Std">
+		<MimeTypeMap Extension="fits" MimeType="image/x-fits"/>
+		<MimeTypeMap Extension="nglog" MimeType="ngas/nglog"/>
+		<MimeTypeMap Extension="nglog.gz" MimeType="application/x-nglog"/>
+		<MimeTypeMap Extension="txt" MimeType="text/ascii"/>
+		<MimeTypeMap Extension="log" MimeType="text/log-file"/>
+		<MimeTypeMap Extension="log.Z" MimeType="application/x-clog"/>
+		<MimeTypeMap Extension="paf" MimeType="ngas/paf"/>
+		<MimeTypeMap Extension="fits.gz" MimeType="application/x-gfits"/>
+		<MimeTypeMap Extension="fits.Z" MimeType="application/x-cfits"/>
+		<MimeTypeMap Extension="hfits" MimeType="application/x-hfits"/>
+		<MimeTypeMap Extension="hdr" MimeType="image/x-fitshdr"/>
+		<MimeTypeMap Extension="tar" MimeType="application/x-tar"/>
+		<MimeTypeMap Extension="tar.gz" MimeType="application/x-gtar"/>
+		<MimeTypeMap Extension="pdf" MimeType="application/pdf"/>
+		<MimeTypeMap Extension="msg" MimeType="multialma/related"/>
+		<MimeTypeMap Extension="bin" MimeType="application/octet-stream"/>
+	</MimeTypes>
+
+	<!--
+	    Storage organisation.
+	    NGAS storage is organised in disks or volumes, which can be grouped
+	    in StorageSets. For full details see
+	    https://ngas.readthedocs.io/en/latest/
+	-->
+	<StorageSets>
+		<StorageSet DiskLabel="BULK" MainDiskSlotId="volume1" Mutex="0"
+		            Synchronize="1" StorageSetId="volume1"/>
+		<StorageSet DiskLabel="BULK" MainDiskSlotId="volume2" Mutex="0"
+		            StorageSetId="volume2" Synchronize="1"/>
+		<StorageSet DiskLabel="BULK" MainDiskSlotId="volume3" Mutex="0"
+		            StorageSetId="volume3" Synchronize="1"/>
+	</StorageSets>
+
+	<!--
+	    Stream definitions
+	    With the definitions of mime types and storage sets, users define
+	    which files end up in which disks depending on their storage sets.
+	    This logic is obeyed but some (but not all) archiving commands.
+	    On top of that, streams also define which plug-in should be applied
+	    to each mapped mime type (although this bit of configuration will
+	    be moved in the future to the MimeTypes element).
+	    For full details on Streams and storage organisation visit:
+	    https://ngas.readthedocs.io/en/latest/
+	-->
+	<Streams>
+		<Stream MimeType="application/octet-stream" PlugIn="ngamsGenDapi" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="image/x-fits" PlugIn="ngamsFitsPlugIn"
+		        PlugInPars="compression=compress -f,
+		                    checksum_util=utilFitsChecksum,
+		                    skip_checksum=,
+		                    checksum_result=0/0000000000000000,
+		                    frame_ingest_db_id=TEST_SRV">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="cal/x-fits" PlugIn="ngamsCalibDapi" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="cal/x-tfits" PlugIn="ngamsCalibDapi" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="non/existing" PlugIn="ngamsNonExisting" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="application/x-cfits" PlugIn="ngamsFitsPlugIn"
+		        PlugInPars="compression=compress -f,
+		                    checksum_util=utilFitsChecksum,
+		                    checksum_result=0/0000000000000000">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="application/x-gfits" PlugIn="ngamsFitsPlugIn"
+		        PlugInPars="compression=compress -f,
+		                    checksum_util=utilFitsChecksum,
+		                    checksum_result=0/0000000000000000">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="ngas/nglog" PlugIn="ngamsNgLogPlugIn" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="text/ascii" PlugIn="ngamsGenDapi" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="text/log-file" PlugIn="ngamsNgLogPlugIn" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="application/x-tar" PlugIn="ngasTarBallPlugIn" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="multialma/related" PlugIn="ngamsSdmMultipart" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="application/pdf" PlugIn="ngamsGenDapi" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+		<Stream MimeType="application/x-gtar" PlugIn="ngamsGenDapi" PlugInPars="">
+			<StorageSetRef StorageSetId="volume1"/>
+			<StorageSetRef StorageSetId="volume2"/>
+			<StorageSetRef StorageSetId="volume3"/>
+		</Stream>
+	</Streams>
+
+	<!--
+	    Processing setup
+	    When files are retrieved from an NGAS server, they can be processed
+	    before sent back to the client. This behaviour is controlled by these
+	    plug-ins, which specify which mime types are allowed to be processed
+	    by which plug-in (users specify in the HTTP request which plugin
+	    they want to use for processing).
+	    Temporary files used during processing are stored under a "processing"
+	    directory under the directory indicated by ProcessingDirectory,
+	    which can be relative to the NGAS root directory
+	-->
+	<Processing Id="Processing-Std" ProcessingDirectory=".">
+		<PlugIn Name="ngamsEsoArchDppi" PlugInPars="">
+			<MimeType Name="image/x-fits"/>
+			<MimeType Name="application/x-gfits"/>
+			<MimeType Name="application/x-cfits"/>
+		</PlugIn>
+		<PlugIn Name="ngamsExtractFitsHdrDppi" PlugInPars="">
+			<MimeType Name="image/x-fits"/>
+			<MimeType Name="application/x-gfits"/>
+			<MimeType Name="application/x-cfits"/>
+		</PlugIn>
+		<PlugIn Name="ngasWfiPreview" PlugInPars="">
+			<MimeType Name="image/x-fits"/>
+			<MimeType Name="application/x-gfits"/>
+			<MimeType Name="application/x-cfits"/>
+		</PlugIn>
+	</Processing>
+
+	<!--
+	    Plug-in definitions for the REGISTER command
+	-->
+	<Register Id="Register-Std">
+		<PlugIn Name="ngamsFitsRegPlugIn"
+		        PlugInPars="checksum_util=utilFitsChecksum,
+		                    checksum_result=0/0000000000000000">
+			<MimeType Name="image/x-fits"/>
+			<MimeType Name="application/x-gfits"/>
+			<MimeType Name="application/x-cfits"/>
+		</PlugIn>
+	</Register>
+
+	<!--
+	    Host suspension configuration
+	    Under some circumstances users may want to configure NGAS hosts to
+	    suspend themselves if they have been idle for a long time. If enabled
+	    (IdleSuspension="1"), a host H will suspend itself after being
+	    IdleSuspensionTime seconds idle using SuspensionPlugIn (and its
+	    SuspensionPlugInPars). Before suspending themselves, they register
+	    a wake-up call with the WakeUpServerHost, who will wake wake up
+	    host H using WakeUpPlugIn and WakeUpPlugInPars, and a timeout of
+	    WakeUpCallTimeOut.
+	-->
+	<HostSuspension Id="HostSuspension" IdleSuspension="0" IdleSuspensionTime="60"
+	                SuspensionPlugIn="ngamsSuspensionPlugIn"
+	                SuspensionPlugInPars="--SuspensionPlugInPars--"
+	                WakeUpCallTimeOut="200" WakeUpPlugIn="ngamsWakeUpPlugIn"
+	                WakeUpPlugInPars="eth0,eth1" WakeUpServerHost="my_wakeup_host"/>
+
+	<!--
+	    Pre-defined subscriptions.
+	    These subscrptions are incorporated into the list of subscriptions managed by the server
+	    at server startup time. If the subscriptions exist in the subscription database (which is
+	    the official source of subscription information) then no action is taken. Otherwise they
+	    are added to the database, and will start being used immediately.
+	    Note that these elements define data flowing INTO our server from the server in
+	    <HostId>:<PortNo> rather than the other way around.
+	-->
+	<SubscriptionDef Id="SubscriptionDef" AutoUnsubscribe="1" BackLogExpTime="28T00:00:00"
+	                 Enable="0" SuspensionTime="0T00:03:00">
+		<Subscription  HostId="HostId1"
+		               PortNo="1234"
+		               Priority="1"
+		               SubscriberUrl="http://test.url1"
+		               FilterPlugIn="FilterPlugIn1"
+		               FilterPlugInPars="1,2,3,4"/>
+		<Subscription  HostId="HostId2"
+		               PortNo="5678"
+		               Priority="2"
+		               SubscriberUrl="http://test.url2"
+		               FilterPlugIn="FilterPlugIn2"
+		               FilterPlugInPars="5,6,7,8"/>
+	</SubscriptionDef>
+
+	<!--
+	    Authentication to use for subscriptions.
+	     This section specifies the authentication plugin to use when sending
+	     files via the subscription system. See the documentation for more
+	     information, or see the example plugin included below.
+	-->
+	<SubscriptionAuth Id="SubscriptionAuth" PlugInName="ngas_sub_auth_plugin"/>
+
+</NgamsCfg>
\ No newline at end of file