[pycsw] 02/02: Imported Upstream version 2.0.0~rc1+dfsg

Bas Couwenberg sebastic at debian.org
Thu Jul 7 01:02:10 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch upstream
in repository pycsw.

commit f4d89d101a7f7a00d0ec0d1faee0c0871cdd76da
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Wed Jul 6 17:46:09 2016 +0200

    Imported Upstream version 2.0.0~rc1+dfsg
---
 README.txt                                         |   4 +-
 VERSION.txt                                        |   2 +-
 docs/api.rst                                       |  53 ++
 docs/csw-support.rst                               |  36 ++
 docs/index.rst                                     |   3 +
 docs/installation.rst                              |  46 +-
 docs/introduction.rst                              |  78 +--
 docs/migration-guide.rst                           |  42 ++
 etc/dist/debian/README                             |   6 -
 etc/dist/debian/changelog                          |  53 --
 etc/dist/debian/compat                             |   1 -
 etc/dist/debian/control                            |  18 -
 etc/dist/debian/copyright                          |  27 -
 etc/dist/debian/format                             |   1 -
 etc/dist/debian/pycsw-cgi.install                  |  13 -
 etc/dist/debian/pycsw-cgi.postinst                 |  54 --
 etc/dist/debian/python-pycsw.install               |   1 -
 etc/dist/debian/rules                              |   5 -
 etc/dist/opensuse/python-pycsw.changes             |  45 --
 etc/dist/opensuse/python-pycsw.spec                | 198 ------
 pavement.py                                        |   5 +
 pycsw/__init__.py                                  |   2 +-
 pycsw/plugins/repository/hhypermap/hhypermap.py    |   9 +-
 .../suites_harvesting_post_GetCapabilities.xml     | 302 ++++-----
 .../suites_harvesting_post_GetDomain-parameter.xml |  22 +-
 .../suites_harvesting_post_Harvest-csw-run2.xml    |   2 +-
 .../suites_harvesting_post_Harvest-sos100.xml      |   6 +-
 .../suites_harvesting_post_Harvest-wms-run2.xml    |   2 +-
 .../suites_harvesting_post_Harvest-wmts.xml        | 692 ++++++++++++++-------
 ...t_Harvest-zzz-post-GetRecords-filter-ows-dc.xml |   2 +-
 ..._Harvest-zzz-post-GetRecords-filter-sos-iso.xml |  11 +
 ..._harvesting_post_Transaction-000-delete-all.xml |   2 +-
 tests/run_tests.py                                 |   2 +
 33 files changed, 885 insertions(+), 860 deletions(-)

diff --git a/README.txt b/README.txt
index 4f32d50..fe425e3 100644
--- a/README.txt
+++ b/README.txt
@@ -3,9 +3,9 @@ pycsw README
 
 pycsw is an OGC CSW server implementation written in Python.
 
-pycsw fully implements the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web]. Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation.
+pycsw fully implements the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation.  Since 2015, pycsw is an official OSGeo Project.
 
-pycsw allows for the publishing and discovery of geospatial metadata. Existing repositories of geospatial metadata can also be exposed via OGC:CSW 2.0.2, providing a standards-based metadata and catalogue component of spatial data infrastructures.
+pycsw allows for the publishing and discovery of [[geospatial]] metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures.
 
 pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X).
 
diff --git a/VERSION.txt b/VERSION.txt
index 5d8955f..e88e200 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-2.0.0-alpha1
+2.0.0-rc1
diff --git a/docs/api.rst b/docs/api.rst
new file mode 100644
index 0000000..ca5a95d
--- /dev/null
+++ b/docs/api.rst
@@ -0,0 +1,53 @@
+.. _api:
+
+API
+===
+
+Python applications can integrate pycsw into their custom workflows.  This
+allows for seamless integate within frameworks like Flask and Django
+
+Below are examples of where using the API (as opposed to the default WSGI/CGI
+services could be used:
+
+- configuration based on a Python dict, or stored in a database
+- downstream request environment / framework (Flask, Django)
+- authentication or authorization logic
+- forcing CSW version 2.0.2 as default
+
+
+Simple Flask Example
+--------------------
+
+.. code-block:: python
+
+  import logging
+
+  from flask import Flask, request
+
+  from pycsw import __version__ as pycsw_version
+  from pycsw.server import Csw
+
+  LOGGER = logging.getLogger(__name__)
+  APP = Flask(__name__)
+ 
+  @APP.route('/csw')
+  def csw_wrapper():
+      """CSW wrapper"""
+
+      LOGGER.info('Running pycsw %s', pycsw_version)
+
+      pycsw_config = some_dict  # really comes from somewhere
+
+      # initialize pycsw
+      # pycsw_config: either a ConfigParser object or a dict of
+      # the pycsw configuration
+      #
+      # env: dict of (HTTP) environment (defaults to os.environ)
+      # 
+      # version: defaults to '3.0.0'
+      my_csw = Csw(pycsw_config, request.environ, version='2.0.2')
+
+      # dispatch the request
+      http_status_code, response = my_csw.dispatch_wsgi()
+
+      return response, http_status_code, {'Content-type': csw.contenttype}
diff --git a/docs/csw-support.rst b/docs/csw-support.rst
new file mode 100644
index 0000000..4111525
--- /dev/null
+++ b/docs/csw-support.rst
@@ -0,0 +1,36 @@
+.. _csw-support:
+
+CSW Support
+===========
+
+Versions
+--------
+
+pycsw supports both CSW 2.0.2 and 3.0.0 versions by default.  In alignment with
+the CSW specifications, the default version returned is the latest supported
+version.  That is, pycsw will always behave like a 3.0.0 CSW unless the client
+explicitly requests a 2.0.2 CSW.
+
+The sample URLs below provide examples of how requests behaves against
+various/missing/default version parameters.
+
+.. code-block:: bash
+
+  http://localhost/csw  # returns 3.0.0 Capabilities
+  http://localhost/csw?service=CSW&request=GetCapabilities  # returns 3.0.0 Capabilities
+  http://localhost/csw?service=CSW&version=2.0.2&request=GetCapabilities  # returns 2.0.2 Capabilities
+  http://localhost/csw?service=CSW&version=3.0.0&request=GetCapabilities  # returns 3.0.0 Capabilities
+
+Request Examples
+----------------
+
+The best place to look for sample requests is within the `tests/` directory,
+which provides numerous examples of all supported APIs and requests.
+
+Additional examples:
+
+- `Data.gov CSW HowTo v2.0`_
+- `pycsw Quickstart on OSGeoLive`_
+
+.. _`pycsw Quickstart on OSGeoLive`: http://live.osgeo.org/en/quickstart/pycsw_quickstart.html
+.. _`Data.gov CSW HowTo v2.0`: https://gist.github.com/kalxas/6ecb06d61cdd487dc7f9
diff --git a/docs/index.rst b/docs/index.rst
index 6407d22..fc00ac7 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -16,6 +16,7 @@ pycsw |release| Documentation
    installation
    configuration
    administration
+   csw-support
    distributedsearching
    sru
    opensearch
@@ -31,7 +32,9 @@ pycsw |release| Documentation
    hhypermap
    odc
    ckan
+   api
    testing
+   migration-guide
    tools
    support
    contributing
diff --git a/docs/installation.rst b/docs/installation.rst
index 3128224..875648d 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -6,7 +6,7 @@ Installation
 System Requirements
 -------------------
 
-pycsw is written in `Python <http://python.org>`_, and works with (tested) version 2.6 and 2.7
+pycsw is written in `Python <http://python.org>`_, and works with (tested) version 2.6, 2.7 and 3.4
 
 pycsw requires the following Python supporting libraries:
 
@@ -15,6 +15,9 @@ pycsw requires the following Python supporting libraries:
 - `pyproj`_ for coordinate transformations
 - `Shapely`_ for spatial query / geometry support
 - `OWSLib`_ for CSW client and metadata parser
+- `six`_ for Python 2/3 compatibility
+- `xmltodict`_ for working with XML similar to working with JSON
+- `geolinks`_ for dealing with geospatial links
 
 .. note::
 
@@ -22,7 +25,7 @@ pycsw requires the following Python supporting libraries:
 
 .. note::
 
-  For :ref:`GeoNode <geonode>` or :ref:`Open Data Catalog <odc>` deployments, SQLAlchemy is not required
+  For :ref:`GeoNode <geonode>` or :ref:`Open Data Catalog <odc>` or :ref:`HHypermap <hhypermap>` deployments, SQLAlchemy is not required
 
 Installing from Source
 ----------------------
@@ -101,41 +104,47 @@ Installing from the Python Package Index (PyPi)
 Installing from OpenSUSE Build Service
 --------------------------------------
 
-In order to install the OBS package in openSUSE 12.3, one can run the following commands as user ``root``:
+In order to install the pycsw package in openSUSE Leap (stable distribution), one can run the following commands as user ``root``:
 
 .. code-block:: bash
 
-  # zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_12.3/ GEO
-  # zypper -ar http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.3/ python
+  # zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/ GEO
   # zypper refresh
   # zypper install python-pycsw pycsw-cgi
 
-For earlier openSUSE versions change ``12.3`` with ``12.2``. For future openSUSE version use ``Factory``.
 
-An alternative method is to use the `One-Click Installer <http://software.opensuse.org/search?q=pycsw&baseproject=openSUSE%3A12.3&lang=en&include_home=true&exclude_debug=true>`_.
+In order to install the pycsw package in openSUSE Tumbleweed (rolling distribution), one can run the following commands as user ``root``:
+
+.. code-block:: bash
+
+  # zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Tumbleweed/ GEO
+  # zypper refresh
+  # zypper install python-pycsw pycsw-cgi
+
+An alternative method is to use the `One-Click Installer <https://software.opensuse.org/package/python-pycsw>`_.
 
 .. _ubuntu:
 
-Installing on Ubuntu/Xubuntu/Kubuntu
-------------------------------------
+Installing on Ubuntu/Mint
+-------------------------
 
-In order to install pycsw to an Ubuntu based distribution, one can run the following commands:
+In order to install the most recent pycsw release to an Ubuntu-based distribution, one can use the UbuntuGIS Unstable repository by running the following commands:
 
 .. code-block:: bash
 
-  # sudo add-apt-repository ppa:pycsw/stable
+  # sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
   # sudo apt-get update
   # sudo apt-get install python-pycsw pycsw-cgi
 
-An alternative method is to use the OSGeoLive installation script located in ``pycsw/etc/dist/osgeolive``:
+Alternatively, one can use the UbuntuGIS Stable repository which includes older but very well tested versions:
 
-.. code-block:: bash
+  # sudo add-apt-repository ppa:ubuntugis/ppa
+  # sudo apt-get update
+  # sudo apt-get install python-pycsw pycsw-cgi
 
-  # cd pycsw/etc/dist
-  # sudo ./install_pycsw.sh
+.. note::
+  Since Ubuntu 16.04 LTS Xenial release, pycsw is included by default in the official Multiverse repository.
 
-The script installs the dependencies (Apache, lxml, sqlalchemy, shapely, pyproj) and then pycsw to ``/var/www``. 
-  
 Running on Windows
 ------------------
 
@@ -203,6 +212,9 @@ which will publish pycsw to ``http://localhost:8000/``
 .. _`Shapely`: http://toblerity.github.io/shapely/
 .. _`pyproj`: http://code.google.com/p/pyproj/
 .. _`OWSLib`: https://github.com/geopython/OWSLib
+.. _`six`: https://pypi.python.org/pypi/six/
+.. _`xmltodict`: https://github.com/martinblech/xmltodict
+.. _`geolinks`: https://github.com/geopython/geolinks
 .. _`easy_install`: http://packages.python.org/distribute/easy_install.html
 .. _`pip`: http://www.pip-installer.org
 .. _`Web Server Gateway Interface`: http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface
diff --git a/docs/introduction.rst b/docs/introduction.rst
index b3681c8..94d4dcf 100644
--- a/docs/introduction.rst
+++ b/docs/introduction.rst
@@ -8,7 +8,7 @@ pycsw is an OGC CSW server implementation written in Python.
 Features
 ========
 
-- certified OGC `Compliant`_ and OGC Reference Implementation
+- certified OGC `Compliant`_ and OGC Reference Implementation for both CSW 2.0.2 and CSW 3.0.0
 - harvesting support for WMS, WFS, WCS, WPS, WAF, CSW, SOS
 - implements `INSPIRE Discovery Services 3.0`_
 - implements `ISO Metadata Application Profile 1.0.0`_
@@ -19,6 +19,7 @@ Features
 - implements Open Archives Initiative Protocol for Metadata Harvesting
 - supports ISO, Dublin Core, DIF, FGDC, Atom and GM03 metadata models
 - CGI or WSGI deployment
+- Python 2 and 3 compatible
 - simple configuration
 - transactional capabilities (CSW-T)
 - flexible repository configuration
@@ -33,41 +34,41 @@ Features
 Standards Support
 -----------------
 
-+-------------------+------------+
-| Standard          | Version(s) |
-+===================+============+
-| `OGC CSW`_        | 2.0.2      |
-+-------------------+------------+
-| `OGC Filter`_     | 1.1.0      |
-+-------------------+------------+
-| `OGC OWS Common`_ | 1.0.0      |
-+-------------------+------------+
-| `OGC GML`_        | 3.1.1      |
-+-------------------+------------+
-| `OGC SFSQL`_      | 1.2.1      |
-+-------------------+------------+
-| `Dublin Core`_    | 1.1        |
-+-------------------+------------+
-| `SOAP`_           | 1.2        |
-+-------------------+------------+
-| `ISO 19115`_      | 2003       |
-+-------------------+------------+
-| `ISO 19139`_      | 2007       |
-+-------------------+------------+
-| `ISO 19119`_      | 2005       |
-+-------------------+------------+
-| `NASA DIF`_       | 9.7        | 
-+-------------------+------------+
-| `FGDC CSDGM`_     | 1998       | 
-+-------------------+------------+
-| `GM03`_           | 2.1        |
-+-------------------+------------+
-| `SRU`_            | 1.1        | 
-+-------------------+------------+
-| `OGC OpenSearch`_ | 1.0        | 
-+-------------------+------------+
-| `OAI-PMH`_        | 2.0        | 
-+-------------------+------------+
++-------------------+--------------+
+| Standard          | Version(s)   |
++===================+==============+
+| `OGC CSW`_        | 2.0.2, 3.0.0 |
++-------------------+--------------+
+| `OGC Filter`_     | 1.1.0, 2.0.0 |
++-------------------+--------------+
+| `OGC OWS Common`_ | 1.0.0, 2.0.0 |
++-------------------+--------------+
+| `OGC GML`_        | 3.1.1        |
++-------------------+--------------+
+| `OGC SFSQL`_      | 1.2.1        |
++-------------------+--------------+
+| `Dublin Core`_    | 1.1          |
++-------------------+--------------+
+| `SOAP`_           | 1.2          |
++-------------------+--------------+
+| `ISO 19115`_      | 2003         |
++-------------------+--------------+
+| `ISO 19139`_      | 2007         |
++-------------------+--------------+
+| `ISO 19119`_      | 2005         |
++-------------------+--------------+
+| `NASA DIF`_       | 9.7          |
++-------------------+--------------+
+| `FGDC CSDGM`_     | 1998         |
++-------------------+--------------+
+| `GM03`_           | 2.1          |
++-------------------+--------------+
+| `SRU`_            | 1.1          |
++-------------------+--------------+
+| `OGC OpenSearch`_ | 1.0          |
++-------------------+--------------+
+| `OAI-PMH`_        | 2.0          |
++-------------------+--------------+
 
 Supported Operations
 --------------------
@@ -82,6 +83,7 @@ Supported Operations
   GetRepositoryItem,optional,yes,GET (KVP)
   GetDomain,optional,yes,GET (KVP) / POST (XML) / SOAP
   Harvest,optional,yes,GET (KVP) / POST (XML) / SOAP
+  UnHarvest,optional,no,
   Transaction,optional,yes,POST (XML) / SOAP
 
 .. note::
@@ -119,8 +121,8 @@ Supported Sorting Functionality
 Supported Filters
 -----------------
 
-Full Text
-^^^^^^^^^
+Full Text Search
+^^^^^^^^^^^^^^^^
 
 - csw:AnyText
 
diff --git a/docs/migration-guide.rst b/docs/migration-guide.rst
new file mode 100644
index 0000000..b658234
--- /dev/null
+++ b/docs/migration-guide.rst
@@ -0,0 +1,42 @@
+.. _migration-guide:
+
+pycsw Migration Guide
+=====================
+
+This page provides migration support across pycsw versions
+over time to help with pycsw change management.
+
+pycsw 1.x to 2.0 Migration
+--------------------------
+
+- the default CSW version is now 3.0.0.  CSW clients need to explicitly specify
+  ``version=2.0.2`` for CSW 2 behaviour.  Also, pycsw administrators can use a
+  WSGI wrapper to the pycsw API to force ``version=2.0.2`` on init of
+  ``pycsw.server.Csw`` from the server.  See :ref:`csw-support` for more information.
+
+- ``pycsw.server.Csw.dispatch_wsgi()`` previously returned the response
+  content as a string.  2.0.0 introduces a compatability break to
+  additionally return the HTTP status code along with the response as a list
+
+.. code-block:: python
+
+  from pycsw.server import Csw
+  my_csw = Csw(my_dict)  # add: env=some_environ_dict,  version='2.0.2' if preferred
+
+  # using pycsw 1.x
+  response = my_csw.dispatch_wsgi()
+
+  # using pycsw 2.0
+  http_status_code, response = my_csw.dispatch_wsgi()
+
+  # covering either pycsw version
+  content = csw.dispatch_wsgi()
+
+  # pycsw 2.0 has an API break:
+  # pycsw < 2.0: content = xml_response
+  # pycsw >= 2.0: content = [http_status_code, content]
+  # deal with the API break
+  if isinstance(content, list):  # pycsw 2.0+
+      http_response_code, response = content
+
+See :ref:`api` for more information.
diff --git a/etc/dist/debian/README b/etc/dist/debian/README
deleted file mode 100644
index 62783f7..0000000
--- a/etc/dist/debian/README
+++ /dev/null
@@ -1,6 +0,0 @@
-The Debian Package pycsw
-----------------------------
-
-pycsw is an OGC CSW server implementation written in Python.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Wed, 11 Apr 2012 22:40:22 +0300
diff --git a/etc/dist/debian/changelog b/etc/dist/debian/changelog
deleted file mode 100644
index 300bdd4..0000000
--- a/etc/dist/debian/changelog
+++ /dev/null
@@ -1,53 +0,0 @@
-pycsw (1.8.2-0~trusty4) trusty; urgency=low
-
-  * Fixed Apache 2.4 configuration.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Sun, 08 Jun 2014 17:53:00 +0200
-
-pycsw (1.8.2-0~trusty3) trusty; urgency=low
-
-  * Added python-tz.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Thu, 05 Jun 2014 12:43:00 +0200
-
-pycsw (1.8.2-0~trusty2) trusty; urgency=low
-
-  * Update to 1.8.2.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Thu, 05 Jun 2014 02:16:00 +0200
-
-pycsw (1.6.1-0~precise1) precise; urgency=low
-
-  * Update to 1.6.1.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Sun, 12 Jan 2014 20:03:00 +0200
-
-pycsw (1.6.0-0~precise1) precise; urgency=low
-
-  * Update to 1.6.0.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Fri, 28 Jun 2013 18:57:00 +0300
-
-pycsw (1.4.2-0) precise; urgency=low
-
-  * Update to 1.4.2.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Sat, 08 Jun 2013 20:32:00 +0300
-
-pycsw (1.4.1-0) precise; urgency=low
-
-  * Update to 1.4.1.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Sat, 30 Mar 2013 20:25:00 +0300
-
-pycsw (1.4.0-0) precise; urgency=low
-
-  * Update to 1.4.0.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Sun, 30 Sep 2012 22:50:00 +0300
-
-pycsw (1.2.0-0) oneiric; urgency=low
-
-  * Initial build.
-
- -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Wed, 11 Apr 2012 22:40:22 +0300
diff --git a/etc/dist/debian/compat b/etc/dist/debian/compat
deleted file mode 100644
index 7f8f011..0000000
--- a/etc/dist/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/etc/dist/debian/control b/etc/dist/debian/control
deleted file mode 100644
index 2e8cd36..0000000
--- a/etc/dist/debian/control
+++ /dev/null
@@ -1,18 +0,0 @@
-Source: pycsw
-Section: web
-Priority: optional
-Maintainer: Angelos Tzotsos <gcpp.kalxas at gmail.com>
-Build-Depends: debhelper (>= 7.0.50), python-setuptools (>= 0.6), python-support (>=0.6), python-all-dev (>= 2.3.5-11), python (>= 2.6.6-3)
-Standards-Version: 3.9.3
-X-Python-Version: >= 2.5
-Homepage: http://pycsw.org
-
-Package: python-pycsw
-Architecture: all
-Depends: ${misc:Depends}, debconf, python (>=2.5), python-lxml, python-shapely, python-pyproj, python-owslib, python-tz
-Description: pycsw is an OGC CSW server implementation written in Python.
-
-Package: pycsw-cgi
-Architecture: all
-Depends: ${misc:Depends}, debconf, python (>=2.5), apache2, python-sqlalchemy, python-pycsw
-Description: pycsw-cgi installs a CGI apache service based on python-pycsw.
diff --git a/etc/dist/debian/copyright b/etc/dist/debian/copyright
deleted file mode 100644
index 031fee9..0000000
--- a/etc/dist/debian/copyright
+++ /dev/null
@@ -1,27 +0,0 @@
-This package was created by Angelos Tzotsos <gcpp.kalxas at gmail.com> on
-Wed, 11 Apr 2012 22:40:22 +0300
-
-Copyright:
- Copyright (C) 2011-2012 Angelos Tzotsos
- Copyright (c) 2010-2012 Tom Kralidis
- All rights reserved.
-
-License:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/etc/dist/debian/format b/etc/dist/debian/format
deleted file mode 100644
index 89ae9db..0000000
--- a/etc/dist/debian/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (native)
diff --git a/etc/dist/debian/pycsw-cgi.install b/etc/dist/debian/pycsw-cgi.install
deleted file mode 100644
index 8b884e5..0000000
--- a/etc/dist/debian/pycsw-cgi.install
+++ /dev/null
@@ -1,13 +0,0 @@
-docs/*				/var/www/html/pycsw/docs/
-etc/harvest-all.cron		/var/www/html/pycsw/etc/
-etc/mappings.py			/var/www/html/pycsw/etc/
-bin/*				/var/www/html/pycsw/bin/
-tests/*				/var/www/html/pycsw/tests/
-etc/pycsw.conf		       	/etc/apache2/conf-enabled/
-etc/pycsw.desktop	       	/usr/share/applications/
-csw.py				/var/www/html/pycsw/
-LICENSE.txt			/var/www/html/pycsw/
-README.txt			/var/www/html/pycsw/
-VERSION.txt			/var/www/html/pycsw/
-HISTORY.txt			/var/www/html/pycsw/
-default-sample.cfg		/var/www/html/pycsw/
diff --git a/etc/dist/debian/pycsw-cgi.postinst b/etc/dist/debian/pycsw-cgi.postinst
deleted file mode 100644
index b689580..0000000
--- a/etc/dist/debian/pycsw-cgi.postinst
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/sh
-# postinst script for pycsw
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-install() {
-    cd /var/www/html/pycsw/tests
-    python ./gen_html.py > index.html
-    cd /var/www/html/pycsw
-    cp default-sample.cfg default.cfg
-    a2enmod cgi
-    /etc/init.d/apache2 restart
-
-}
-
-case "$1" in
-    configure)
-        install
-    ;;
-
-    abort-upgrade|abort-remove|abort-deconfigure)
-    ;;
-
-    *)
-        echo "postinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
-
-
-
diff --git a/etc/dist/debian/python-pycsw.install b/etc/dist/debian/python-pycsw.install
deleted file mode 100644
index 444b3d5..0000000
--- a/etc/dist/debian/python-pycsw.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/lib
diff --git a/etc/dist/debian/rules b/etc/dist/debian/rules
deleted file mode 100755
index 8769f48..0000000
--- a/etc/dist/debian/rules
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-
-%:
-	dh  $@ --with python2
diff --git a/etc/dist/opensuse/python-pycsw.changes b/etc/dist/opensuse/python-pycsw.changes
deleted file mode 100644
index 41d57dd..0000000
--- a/etc/dist/opensuse/python-pycsw.changes
+++ /dev/null
@@ -1,45 +0,0 @@
--------------------------------------------------------------------
-Sat Jun 29 10:20:58 UTC 2013 - tzotsos at opensuse.org
-
-- Updated to 1.6.0 release
-
--------------------------------------------------------------------
-Sat Jun  8 07:20:57 UTC 2013 - tzotsos at opensuse.org
-
-- Updated to 1.4.2 release
-
--------------------------------------------------------------------
-Sat Mar 30 16:55:13 UTC 2013 - tzotsos at opensuse.org
-
-- Updated to 1.4.1 release
-
--------------------------------------------------------------------
-Tue Sep 11 11:29:12 UTC 2012 - tzotsos at opensuse.org
-
-- Renamed package to python-pycsw
-
--------------------------------------------------------------------
-Mon Sep 10 21:37:30 UTC 2012 - tzotsos at opensuse.org
-
-- Updated to 1.4.0 release
-
--------------------------------------------------------------------
-Sun Apr 08 20:00:00 UTC 2012 - tzotsos at opensuse.org
-
-- Updated to 1.2.0 release
-
--------------------------------------------------------------------
-Wed Jun 29 00:05:00 UTC 2011 - tzotsos at opensuse.org
-
-- Updated to 1.0.0 release
-
--------------------------------------------------------------------
-Wed Apr 20 01:07:54 UTC 2011 - tzotsos at opensuse.org
-
-- Updated to 0.1.0 release
-
--------------------------------------------------------------------
-Thu Mar 09 21:47:54 UTC 2011 - tzotsos at opensuse.org
-
-- Initial spec file for OBS - 0.0.1
-
diff --git a/etc/dist/opensuse/python-pycsw.spec b/etc/dist/opensuse/python-pycsw.spec
deleted file mode 100644
index 50fada2..0000000
--- a/etc/dist/opensuse/python-pycsw.spec
+++ /dev/null
@@ -1,198 +0,0 @@
-# =================================================================
-#
-# Authors: Angelos Tzotsos <tzotsos at opensuse.org>
-#
-# Copyright (c) 2015 Angelos Tzotsos
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation
-# files (the "Software"), to deal in the Software without
-# restriction, including without limitation the rights to use,
-# copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following
-# conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-# OTHER DEALINGS IN THE SOFTWARE.
-#
-# =================================================================
-
-%define _webappconfdir /etc/apache2/conf.d/
-%define _htdocsdir /srv/www/htdocs/
-
-%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
-%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
-
-%define pyname pycsw
-
-Name:           python-%{pyname}
-Version:        1.10.0
-Release:        1
-License:        MIT
-Summary:        An OGC CSW server implementation written in Python
-Url:            http://pycsw.org/
-Group:          Productivity/Scientific/Other
-Source0:        %{pyname}-%{version}.tar.gz
-Requires:	python
-Requires:	python-sqlalchemy
-Requires:	python-Shapely
-Requires:	python-lxml
-Requires:	python-owslib
-Requires:	python-pyproj
-BuildRequires:  fdupes python 
-BuildArch:      noarch
-Provides:       %{pyname} = %{version}
-
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-
-%description
-pycsw implements clause 10 (HTTP protocol binding (Catalogue Services for the Web, CSW)) 
-of the OpenGIS Catalogue Service Implementation Specification, version 2.0.2. 
-Initial development started in 2010 (more formally announced in 2011). 
-The  project  is  certified  OGC  Compliant,  and  is  an  OGC  Reference  Implementation. 
-pycsw allows for the publishing and discovery of geospatial metadata. 
-Existing repositories of geospatial metadata can be exposed via OGC:CSW 2.0.2.
-pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X)
-
-%package -n %{pyname}-cgi
-Summary:        CGI frondend to pycsw using apache web server
-Group:          Productivity/Scientific/Other
-Requires:       apache2
-Requires:       %{pyname} = %{version}
-%description -n %{pyname}-cgi
-Python CGI frondend to pycsw using apache web server
-
-%prep
-%setup -q -n %{pyname}-%{version}
-
-%build
-
-%install
-rm -rf %{buildroot}
-
-python setup.py install --prefix=%{_prefix} --root=%{buildroot} \
-                                            --record-rpm=INSTALLED_FILES
-
-mkdir -p %{buildroot}/srv/www/htdocs/pycsw
-mkdir -p %{buildroot}%{_sysconfdir}/apache2/conf.d
-
-#mv data %{buildroot}/srv/www/htdocs/pycsw/
-mv tests %{buildroot}/srv/www/htdocs/pycsw/
-mv csw.py %{buildroot}/srv/www/htdocs/pycsw/
-mv pycsw/wsgi.py %{buildroot}/srv/www/htdocs/pycsw/
-mv COMMITTERS.txt %{buildroot}/srv/www/htdocs/pycsw/
-mv default-sample.cfg %{buildroot}/srv/www/htdocs/pycsw/
-mv HISTORY.txt %{buildroot}/srv/www/htdocs/pycsw/
-mv LICENSE.txt %{buildroot}/srv/www/htdocs/pycsw/
-mv README.txt %{buildroot}/srv/www/htdocs/pycsw/
-mv VERSION.txt %{buildroot}/srv/www/htdocs/pycsw/
-
-cat > %{buildroot}%{_sysconfdir}/apache2/conf.d/pycsw.conf << EOF
-<Location /pycsw/>
-  Options FollowSymLinks +ExecCGI
-  Allow from all
-  AddHandler cgi-script .py
-</Location>
-EOF
-
-cat > %{buildroot}/srv/www/htdocs/pycsw/default.cfg << EOF
-[server]
-home=/srv/www/htdocs/pycsw
-url=http://localhost/pycsw/csw.py
-mimetype=application/xml; charset=UTF-8                                                             
-encoding=UTF-8
-language=en-US
-maxrecords=10
-#loglevel=DEBUG
-#logfile=/tmp/pycsw.log
-#ogc_schemas_base=http://foo
-#federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery
-pretty_print=true
-#gzip_compresslevel=8
-#domainquerytype=range
-#domaincounts=true
-profiles=apiso
-
-[manager]
-transactions=false
-allowed_ips=127.0.0.1
-#csw_harvest_pagesize=10
-
-[metadata:main]
-identification_title=pycsw Geospatial Catalogue
-identification_abstract=pycsw is an OGC CSW server implementation written in Python
-identification_keywords=catalogue,discovery,metadata
-identification_keywords_type=theme
-identification_fees=None
-identification_accessconstraints=None
-provider_name=Organization Name
-provider_url=http://pycsw.org/
-contact_name=Lastname, Firstname
-contact_position=Position Title
-contact_address=Mailing Address
-contact_city=City
-contact_stateorprovince=Administrative Area
-contact_postalcode=Zip or Postal Code
-contact_country=Country
-contact_phone=+xx-xxx-xxx-xxxx
-contact_fax=+xx-xxx-xxx-xxxx
-contact_email=Email Address
-contact_url=Contact URL
-contact_hours=Hours of Service
-contact_instructions=During hours of service.  Off on weekends.
-contact_role=pointOfContact
-
-[repository]
-# sqlite
-database=sqlite:////srv/www/htdocs/pycsw/tests/suites/cite/data/cite.db
-# postgres
-#database=postgresql://username:password@localhost/pycsw
-# mysql
-#database=mysql://username:password@localhost/pycsw?charset=utf8
-#mappings=path/to/mappings.py
-table=records
-
-[metadata:inspire]
-enabled=true
-languages_supported=eng,gre
-default_language=eng
-date=YYYY-MM-DD
-gemet_keywords=Utility and governmental services
-conformity_service=notEvaluated
-contact_name=Organization Name
-contact_email=Email Address
-temp_extent=2012-09-09/2012-09-10
-EOF
-
-%fdupes -s %{buildroot}
-
-%post 
-python /srv/www/htdocs/pycsw/tests/gen_html.py > /srv/www/htdocs/pycsw/tests/index.html
-
-%clean
-rm -rf %{buildroot}
-
-%files -f INSTALLED_FILES
-%defattr(-,root,root)
-%dir %{python_sitelib}/pycsw
-%{python_sitelib}/pycsw/
-
-%files -n %{pyname}-cgi
-%defattr(-,root,root)
-%config(noreplace) %{_webappconfdir}/pycsw.conf
-%dir %{_sysconfdir}/apache2/
-%dir %{_webappconfdir}/
-%dir %{_htdocsdir}/pycsw/
-%{_htdocsdir}/pycsw/*
-
-%changelog
diff --git a/pavement.py b/pavement.py
index 1e10692..e9d70f5 100644
--- a/pavement.py
+++ b/pavement.py
@@ -180,6 +180,7 @@ def setup_testdata():
     ('database=', 'd', 'database (SQLite3 [default], PostgreSQL, MySQL)'),
     ('user=', 'U', 'database username'),
     ('pass=', 'p', 'database password'),
+    ('pedantic', 'P', 'run tests in pedantic mode (byte level diff check) (default: c14n mode)'),
     ('remote', 'r', 'remote testing (harvesting)'),
     ('time=', 't', 'time (milliseconds) in which requests should complete')
 ])
@@ -196,6 +197,7 @@ def test(options):
     database = options.get('database', 'SQLite3')
     remote = options.get('remote')
     timems = options.get('time', None)
+    pedantic = options.get('pedantic', False)
 
     if url is None:
         # run against default server
@@ -214,6 +216,9 @@ def test(options):
     if remote:
         cmd = '%s -r' % cmd
 
+    if pedantic:
+        cmd = '%s -p' % cmd
+
     if timems:
         cmd = '%s -t %s' % (cmd, timems)
 
diff --git a/pycsw/__init__.py b/pycsw/__init__.py
index f880e71..0db361b 100644
--- a/pycsw/__init__.py
+++ b/pycsw/__init__.py
@@ -28,4 +28,4 @@
 #
 # =================================================================
 
-__version__ = '2.0.0-alpha1'
+__version__ = '2.0.0-rc1'
diff --git a/pycsw/plugins/repository/hhypermap/hhypermap.py b/pycsw/plugins/repository/hhypermap/hhypermap.py
index 752f71a..f9cbf84 100644
--- a/pycsw/plugins/repository/hhypermap/hhypermap.py
+++ b/pycsw/plugins/repository/hhypermap/hhypermap.py
@@ -34,7 +34,7 @@ from django.db.models import Avg, Max, Min, Count
 from django.conf import settings
 
 from pycsw.core import util
-from aggregator.models import Layer, Resource, Service
+from hypermap.aggregator.models import Layer, Resource, Service
 
 HYPERMAP_SERVICE_TYPES = {
     # 'HHypermap enum': 'CSW enum'
@@ -88,9 +88,10 @@ class HHypermapRepository(object):
         for qbl in self.queryables:
             self.queryables['_all'].update(self.queryables[qbl])
         self.queryables['_all'].update(self.context.md_core_model['mappings'])
-
-        self.context.model['operations']['Harvest']['parameters']['ResourceType']['values'] = HYPERMAP_SERVICE_TYPES.keys()
-        self.context.model['operations']['Transaction']['parameters']['TransactionSchemas']['values'] = HYPERMAP_SERVICE_TYPES.keys()
+        
+        if 'Harvest' in self.context.model['operations'] and 'Transaction' in self.context.model['operations']:
+            self.context.model['operations']['Harvest']['parameters']['ResourceType']['values'] = HYPERMAP_SERVICE_TYPES.keys()
+            self.context.model['operations']['Transaction']['parameters']['TransactionSchemas']['values'] = HYPERMAP_SERVICE_TYPES.keys()
 
     def dataset(self):
         ''' Stub to mock a pycsw dataset object for Transactions'''
diff --git a/tests/expected/suites_harvesting_post_GetCapabilities.xml b/tests/expected/suites_harvesting_post_GetCapabilities.xml
index aa92372..62d06c6 100644
--- a/tests/expected/suites_harvesting_post_GetCapabilities.xml
+++ b/tests/expected/suites_harvesting_post_GetCapabilities.xml
@@ -50,39 +50,12 @@
         </ows:HTTP>
       </ows:DCP>
       <ows:Parameter name="sections">
+        <ows:Value>Filter_Capabilities</ows:Value>
+        <ows:Value>OperationsMetadata</ows:Value>
         <ows:Value>ServiceIdentification</ows:Value>
         <ows:Value>ServiceProvider</ows:Value>
-        <ows:Value>OperationsMetadata</ows:Value>
-        <ows:Value>Filter_Capabilities</ows:Value>
-      </ows:Parameter>
-    </ows:Operation>
-    <ows:Operation name="Transaction">
-      <ows:DCP>
-        <ows:HTTP>
-          <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
-        </ows:HTTP>
-      </ows:DCP>
-      <ows:Parameter name="TransactionSchemas">
-        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>
-        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
-        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>
-        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>
-        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>
-        <ows:Value>http://www.opengis.net/wcs</ows:Value>
-        <ows:Value>http://www.opengis.net/wfs</ows:Value>
-        <ows:Value>http://www.opengis.net/wms</ows:Value>
-        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>
-        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>
-        <ows:Value>urn:geoss:waf</ows:Value>
       </ows:Parameter>
     </ows:Operation>
-    <ows:Operation name="GetRepositoryItem">
-      <ows:DCP>
-        <ows:HTTP>
-          <ows:Get xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
-        </ows:HTTP>
-      </ows:DCP>
-    </ows:Operation>
     <ows:Operation name="DescribeRecord">
       <ows:DCP>
         <ows:HTTP>
@@ -90,14 +63,14 @@
           <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
         </ows:HTTP>
       </ows:DCP>
-      <ows:Parameter name="schemaLanguage">
-        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
-        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
-        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
-      </ows:Parameter>
       <ows:Parameter name="outputFormat">
-        <ows:Value>application/xml</ows:Value>
         <ows:Value>application/json</ows:Value>
+        <ows:Value>application/xml</ows:Value>
+      </ows:Parameter>
+      <ows:Parameter name="schemaLanguage">
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
+        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="typeName">
         <ows:Value>csw:Record</ows:Value>
@@ -112,70 +85,50 @@
         </ows:HTTP>
       </ows:DCP>
       <ows:Parameter name="ParameterName">
-        <ows:Value>GetCapabilities.sections</ows:Value>
-        <ows:Value>Transaction.TransactionSchemas</ows:Value>
-        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>
         <ows:Value>DescribeRecord.outputFormat</ows:Value>
+        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>
         <ows:Value>DescribeRecord.typeName</ows:Value>
+        <ows:Value>GetCapabilities.sections</ows:Value>
+        <ows:Value>GetRecordById.ElementSetName</ows:Value>
         <ows:Value>GetRecordById.outputFormat</ows:Value>
         <ows:Value>GetRecordById.outputSchema</ows:Value>
-        <ows:Value>GetRecordById.ElementSetName</ows:Value>
+        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>
+        <ows:Value>GetRecords.ElementSetName</ows:Value>
         <ows:Value>GetRecords.outputFormat</ows:Value>
         <ows:Value>GetRecords.outputSchema</ows:Value>
-        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>
         <ows:Value>GetRecords.resultType</ows:Value>
         <ows:Value>GetRecords.typeNames</ows:Value>
-        <ows:Value>GetRecords.ElementSetName</ows:Value>
         <ows:Value>Harvest.ResourceType</ows:Value>
+        <ows:Value>Transaction.TransactionSchemas</ows:Value>
       </ows:Parameter>
     </ows:Operation>
-    <ows:Operation name="GetRecordById">
+    <ows:Operation name="GetRecords">
       <ows:DCP>
         <ows:HTTP>
           <ows:Get xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
           <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
         </ows:HTTP>
       </ows:DCP>
-      <ows:Parameter name="outputFormat">
-        <ows:Value>application/xml</ows:Value>
-        <ows:Value>application/json</ows:Value>
-      </ows:Parameter>
-      <ows:Parameter name="outputSchema">
-        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
-        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>
-        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>
-        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>
-        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>
-        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
+      <ows:Parameter name="CONSTRAINTLANGUAGE">
+        <ows:Value>CQL_TEXT</ows:Value>
+        <ows:Value>FILTER</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="ElementSetName">
         <ows:Value>brief</ows:Value>
-        <ows:Value>summary</ows:Value>
         <ows:Value>full</ows:Value>
+        <ows:Value>summary</ows:Value>
       </ows:Parameter>
-    </ows:Operation>
-    <ows:Operation name="GetRecords">
-      <ows:DCP>
-        <ows:HTTP>
-          <ows:Get xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
-          <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
-        </ows:HTTP>
-      </ows:DCP>
       <ows:Parameter name="outputFormat">
-        <ows:Value>application/xml</ows:Value>
         <ows:Value>application/json</ows:Value>
+        <ows:Value>application/xml</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputSchema">
-        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
+        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>
         <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>
+        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
+        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
         <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>
-        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>
         <ows:Value>http://www.w3.org/2005/Atom</ows:Value>
-        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
-      </ows:Parameter>
-      <ows:Parameter name="CONSTRAINTLANGUAGE">
-        <ows:Value>FILTER</ows:Value>
-        <ows:Value>CQL_TEXT</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="resultType">
         <ows:Value>hits</ows:Value>
@@ -186,118 +139,165 @@
         <ows:Value>csw:Record</ows:Value>
         <ows:Value>gmd:MD_Metadata</ows:Value>
       </ows:Parameter>
-      <ows:Parameter name="ElementSetName">
-        <ows:Value>brief</ows:Value>
-        <ows:Value>summary</ows:Value>
-        <ows:Value>full</ows:Value>
-      </ows:Parameter>
-      <ows:Constraint name="SupportedISOQueryables">
-        <ows:Value>apiso:DistanceValue</ows:Value>
-        <ows:Value>apiso:Abstract</ows:Value>
-        <ows:Value>apiso:RevisionDate</ows:Value>
-        <ows:Value>apiso:Subject</ows:Value>
-        <ows:Value>apiso:KeywordType</ows:Value>
-        <ows:Value>apiso:Title</ows:Value>
-        <ows:Value>apiso:CRS</ows:Value>
-        <ows:Value>apiso:PublicationDate</ows:Value>
-        <ows:Value>apiso:Type</ows:Value>
-        <ows:Value>apiso:AlternateTitle</ows:Value>
-        <ows:Value>apiso:BoundingBox</ows:Value>
-        <ows:Value>apiso:AnyText</ows:Value>
-        <ows:Value>apiso:ParentIdentifier</ows:Value>
-        <ows:Value>apiso:Modified</ows:Value>
-        <ows:Value>apiso:Operation</ows:Value>
-        <ows:Value>apiso:Format</ows:Value>
-        <ows:Value>apiso:TempExtent_end</ows:Value>
-        <ows:Value>apiso:DistanceUOM</ows:Value>
-        <ows:Value>apiso:OrganisationName</ows:Value>
-        <ows:Value>apiso:ServiceType</ows:Value>
-        <ows:Value>apiso:TempExtent_begin</ows:Value>
-        <ows:Value>apiso:ResourceLanguage</ows:Value>
-        <ows:Value>apiso:ServiceTypeVersion</ows:Value>
-        <ows:Value>apiso:OperatesOn</ows:Value>
-        <ows:Value>apiso:Denominator</ows:Value>
-        <ows:Value>apiso:HasSecurityConstraints</ows:Value>
-        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>
-        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>
-        <ows:Value>apiso:Language</ows:Value>
-        <ows:Value>apiso:Identifier</ows:Value>
-        <ows:Value>apiso:OperatesOnName</ows:Value>
-        <ows:Value>apiso:TopicCategory</ows:Value>
-        <ows:Value>apiso:CreationDate</ows:Value>
-        <ows:Value>apiso:CouplingType</ows:Value>
-      </ows:Constraint>
       <ows:Constraint name="AdditionalQueryables">
-        <ows:Value>apiso:Lineage</ows:Value>
+        <ows:Value>apiso:AccessConstraints</ows:Value>
         <ows:Value>apiso:Classification</ows:Value>
+        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>
+        <ows:Value>apiso:Contributor</ows:Value>
         <ows:Value>apiso:Creator</ows:Value>
-        <ows:Value>apiso:Relation</ows:Value>
+        <ows:Value>apiso:Degree</ows:Value>
+        <ows:Value>apiso:Lineage</ows:Value>
         <ows:Value>apiso:OtherConstraints</ows:Value>
-        <ows:Value>apiso:SpecificationTitle</ows:Value>
+        <ows:Value>apiso:Publisher</ows:Value>
+        <ows:Value>apiso:Relation</ows:Value>
         <ows:Value>apiso:ResponsiblePartyRole</ows:Value>
-        <ows:Value>apiso:SpecificationDateType</ows:Value>
-        <ows:Value>apiso:Degree</ows:Value>
-        <ows:Value>apiso:Contributor</ows:Value>
-        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>
         <ows:Value>apiso:SpecificationDate</ows:Value>
-        <ows:Value>apiso:AccessConstraints</ows:Value>
-        <ows:Value>apiso:Publisher</ows:Value>
+        <ows:Value>apiso:SpecificationDateType</ows:Value>
+        <ows:Value>apiso:SpecificationTitle</ows:Value>
       </ows:Constraint>
       <ows:Constraint name="SupportedDublinCoreQueryables">
+        <ows:Value>csw:AnyText</ows:Value>
         <ows:Value>dc:contributor</ows:Value>
-        <ows:Value>dc:source</ows:Value>
-        <ows:Value>dc:language</ows:Value>
-        <ows:Value>dc:title</ows:Value>
-        <ows:Value>dc:subject</ows:Value>
         <ows:Value>dc:creator</ows:Value>
-        <ows:Value>dc:type</ows:Value>
-        <ows:Value>ows:BoundingBox</ows:Value>
-        <ows:Value>dct:modified</ows:Value>
-        <ows:Value>dct:abstract</ows:Value>
-        <ows:Value>dc:relation</ows:Value>
         <ows:Value>dc:date</ows:Value>
+        <ows:Value>dc:format</ows:Value>
         <ows:Value>dc:identifier</ows:Value>
+        <ows:Value>dc:language</ows:Value>
         <ows:Value>dc:publisher</ows:Value>
-        <ows:Value>dc:format</ows:Value>
-        <ows:Value>csw:AnyText</ows:Value>
+        <ows:Value>dc:relation</ows:Value>
         <ows:Value>dc:rights</ows:Value>
+        <ows:Value>dc:source</ows:Value>
+        <ows:Value>dc:subject</ows:Value>
+        <ows:Value>dc:title</ows:Value>
+        <ows:Value>dc:type</ows:Value>
+        <ows:Value>dct:abstract</ows:Value>
+        <ows:Value>dct:modified</ows:Value>
+        <ows:Value>ows:BoundingBox</ows:Value>
+      </ows:Constraint>
+      <ows:Constraint name="SupportedISOQueryables">
+        <ows:Value>apiso:Abstract</ows:Value>
+        <ows:Value>apiso:AlternateTitle</ows:Value>
+        <ows:Value>apiso:AnyText</ows:Value>
+        <ows:Value>apiso:BoundingBox</ows:Value>
+        <ows:Value>apiso:CRS</ows:Value>
+        <ows:Value>apiso:CouplingType</ows:Value>
+        <ows:Value>apiso:CreationDate</ows:Value>
+        <ows:Value>apiso:Denominator</ows:Value>
+        <ows:Value>apiso:DistanceUOM</ows:Value>
+        <ows:Value>apiso:DistanceValue</ows:Value>
+        <ows:Value>apiso:Format</ows:Value>
+        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>
+        <ows:Value>apiso:HasSecurityConstraints</ows:Value>
+        <ows:Value>apiso:Identifier</ows:Value>
+        <ows:Value>apiso:KeywordType</ows:Value>
+        <ows:Value>apiso:Language</ows:Value>
+        <ows:Value>apiso:Modified</ows:Value>
+        <ows:Value>apiso:OperatesOn</ows:Value>
+        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>
+        <ows:Value>apiso:OperatesOnName</ows:Value>
+        <ows:Value>apiso:Operation</ows:Value>
+        <ows:Value>apiso:OrganisationName</ows:Value>
+        <ows:Value>apiso:ParentIdentifier</ows:Value>
+        <ows:Value>apiso:PublicationDate</ows:Value>
+        <ows:Value>apiso:ResourceLanguage</ows:Value>
+        <ows:Value>apiso:RevisionDate</ows:Value>
+        <ows:Value>apiso:ServiceType</ows:Value>
+        <ows:Value>apiso:ServiceTypeVersion</ows:Value>
+        <ows:Value>apiso:Subject</ows:Value>
+        <ows:Value>apiso:TempExtent_begin</ows:Value>
+        <ows:Value>apiso:TempExtent_end</ows:Value>
+        <ows:Value>apiso:Title</ows:Value>
+        <ows:Value>apiso:TopicCategory</ows:Value>
+        <ows:Value>apiso:Type</ows:Value>
       </ows:Constraint>
     </ows:Operation>
-    <ows:Operation name="Harvest">
+    <ows:Operation name="GetRecordById">
       <ows:DCP>
         <ows:HTTP>
+          <ows:Get xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
           <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
         </ows:HTTP>
       </ows:DCP>
-      <ows:Parameter name="ResourceType">
+      <ows:Parameter name="ElementSetName">
+        <ows:Value>brief</ows:Value>
+        <ows:Value>full</ows:Value>
+        <ows:Value>summary</ows:Value>
+      </ows:Parameter>
+      <ows:Parameter name="outputFormat">
+        <ows:Value>application/json</ows:Value>
+        <ows:Value>application/xml</ows:Value>
+      </ows:Parameter>
+      <ows:Parameter name="outputSchema">
+        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>
+        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>
+        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
+        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
+        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>
+        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>
+      </ows:Parameter>
+    </ows:Operation>
+    <ows:Operation name="GetRepositoryItem">
+      <ows:DCP>
+        <ows:HTTP>
+          <ows:Get xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
+        </ows:HTTP>
+      </ows:DCP>
+    </ows:Operation>
+    <ows:Operation name="Transaction">
+      <ows:DCP>
+        <ows:HTTP>
+          <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
+        </ows:HTTP>
+      </ows:DCP>
+      <ows:Parameter name="TransactionSchemas">
+        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>
         <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
         <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>
+        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>
+        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>
+        <ows:Value>http://www.opengis.net/wcs</ows:Value>
+        <ows:Value>http://www.opengis.net/wfs</ows:Value>
         <ows:Value>http://www.opengis.net/wms</ows:Value>
         <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>
-        <ows:Value>http://www.opengis.net/wfs</ows:Value>
-        <ows:Value>http://www.opengis.net/wcs</ows:Value>
         <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>
-        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>
-        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>
-        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>
         <ows:Value>urn:geoss:waf</ows:Value>
-        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>
-        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>
+      </ows:Parameter>
+    </ows:Operation>
+    <ows:Operation name="Harvest">
+      <ows:DCP>
+        <ows:HTTP>
+          <ows:Post xlink:type="simple" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg"/>
+        </ows:HTTP>
+      </ows:DCP>
+      <ows:Parameter name="ResourceType">
         <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>
-        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>
+        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>
         <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
+        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>
         <ows:Value>http://www.isotc211.org/schemas/2005/gmd/</ows:Value>
+        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
+        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>
+        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>
+        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>
+        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>
+        <ows:Value>http://www.opengis.net/wcs</ows:Value>
+        <ows:Value>http://www.opengis.net/wfs</ows:Value>
+        <ows:Value>http://www.opengis.net/wms</ows:Value>
+        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>
+        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>
+        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>
+        <ows:Value>urn:geoss:waf</ows:Value>
       </ows:Parameter>
     </ows:Operation>
+    <ows:Parameter name="service">
+      <ows:Value>CSW</ows:Value>
+    </ows:Parameter>
     <ows:Parameter name="version">
       <ows:Value>2.0.2</ows:Value>
       <ows:Value>3.0.0</ows:Value>
     </ows:Parameter>
-    <ows:Parameter name="service">
-      <ows:Value>CSW</ows:Value>
-    </ows:Parameter>
-    <ows:Constraint name="XPathQueryables">
-      <ows:Value>allowed</ows:Value>
+    <ows:Constraint name="FederatedCatalogues">
+      <ows:Value>http://geo.data.gov/geoportal/csw/discovery</ows:Value>
     </ows:Constraint>
     <ows:Constraint name="MaxRecordDefault">
       <ows:Value>10</ows:Value>
@@ -306,8 +306,8 @@
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
     </ows:Constraint>
-    <ows:Constraint name="FederatedCatalogues">
-      <ows:Value>http://geo.data.gov/geoportal/csw/discovery</ows:Value>
+    <ows:Constraint name="XPathQueryables">
+      <ows:Value>allowed</ows:Value>
     </ows:Constraint>
   </ows:OperationsMetadata>
   <ogc:Filter_Capabilities>
@@ -337,11 +337,11 @@
       <ogc:ComparisonOperators>
         <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>
         <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>
-        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>
         <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>
-        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>
-        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>
         <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>
+        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>
+        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>
+        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>
         <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>
         <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>
       </ogc:ComparisonOperators>
diff --git a/tests/expected/suites_harvesting_post_GetDomain-parameter.xml b/tests/expected/suites_harvesting_post_GetDomain-parameter.xml
index 336bfe2..a681d2a 100644
--- a/tests/expected/suites_harvesting_post_GetDomain-parameter.xml
+++ b/tests/expected/suites_harvesting_post_GetDomain-parameter.xml
@@ -4,23 +4,23 @@
   <csw:DomainValues type="csw:Record">
     <csw:ParameterName>Harvest.ResourceType</csw:ParameterName>
     <csw:ListOfValues>
+      <csw:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</csw:Value>
+      <csw:Value>http://www.interlis.ch/INTERLIS2.3</csw:Value>
+      <csw:Value>http://www.isotc211.org/2005/gmd</csw:Value>
+      <csw:Value>http://www.isotc211.org/2005/gmi</csw:Value>
+      <csw:Value>http://www.isotc211.org/schemas/2005/gmd/</csw:Value>
       <csw:Value>http://www.opengis.net/cat/csw/2.0.2</csw:Value>
       <csw:Value>http://www.opengis.net/cat/csw/3.0</csw:Value>
+      <csw:Value>http://www.opengis.net/cat/csw/csdgm</csw:Value>
+      <csw:Value>http://www.opengis.net/sos/1.0</csw:Value>
+      <csw:Value>http://www.opengis.net/sos/2.0</csw:Value>
+      <csw:Value>http://www.opengis.net/wcs</csw:Value>
+      <csw:Value>http://www.opengis.net/wfs</csw:Value>
       <csw:Value>http://www.opengis.net/wms</csw:Value>
       <csw:Value>http://www.opengis.net/wmts/1.0</csw:Value>
-      <csw:Value>http://www.opengis.net/wfs</csw:Value>
-      <csw:Value>http://www.opengis.net/wcs</csw:Value>
       <csw:Value>http://www.opengis.net/wps/1.0.0</csw:Value>
-      <csw:Value>http://www.opengis.net/sos/1.0</csw:Value>
-      <csw:Value>http://www.opengis.net/sos/2.0</csw:Value>
-      <csw:Value>http://www.isotc211.org/2005/gmi</csw:Value>
-      <csw:Value>urn:geoss:waf</csw:Value>
-      <csw:Value>http://www.interlis.ch/INTERLIS2.3</csw:Value>
-      <csw:Value>http://www.opengis.net/cat/csw/csdgm</csw:Value>
-      <csw:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</csw:Value>
       <csw:Value>http://www.w3.org/2005/Atom</csw:Value>
-      <csw:Value>http://www.isotc211.org/2005/gmd</csw:Value>
-      <csw:Value>http://www.isotc211.org/schemas/2005/gmd/</csw:Value>
+      <csw:Value>urn:geoss:waf</csw:Value>
     </csw:ListOfValues>
   </csw:DomainValues>
 </csw:GetDomainResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml b/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml
index c61dad4..4362f52 100644
--- a/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml
@@ -3,7 +3,7 @@
 <csw:HarvestResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd">
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>0</csw:totalInserted>
+      <csw:totalInserted>13</csw:totalInserted>
       <csw:totalUpdated>13</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
diff --git a/tests/expected/suites_harvesting_post_Harvest-sos100.xml b/tests/expected/suites_harvesting_post_Harvest-sos100.xml
index 62e8fc1..25e56a4 100644
--- a/tests/expected/suites_harvesting_post_Harvest-sos100.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-sos100.xml
@@ -3,7 +3,7 @@
 <csw:HarvestResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd">
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>29</csw:totalInserted>
+      <csw:totalInserted>30</csw:totalInserted>
       <csw:totalUpdated>0</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
@@ -97,6 +97,10 @@
         <dc:title>Mooring CO2 data from the COOA (UNH-COOA) located Appledore Island</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-CDIP221</dc:identifier>
+        <dc:title>Mooring CDIP221 data from the COOA (UNH-COOA-CDIP) located Cape Cod Bay, MA</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-ALL_PLATFORMS</dc:identifier>
         <dc:title>Mooring data for all buoys from the Northeastern Regional Association of Coastal Ocean Observing Systems (NERACOOS) located in the NERACOOS Region</dc:title>
       </csw:BriefRecord>
diff --git a/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml b/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml
index 38614f9..19e8d86 100644
--- a/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml
@@ -3,7 +3,7 @@
 <csw:HarvestResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd">
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>0</csw:totalInserted>
+      <csw:totalInserted>4</csw:totalInserted>
       <csw:totalUpdated>4</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
diff --git a/tests/expected/suites_harvesting_post_Harvest-wmts.xml b/tests/expected/suites_harvesting_post_Harvest-wmts.xml
index 4742d0d..dfdff1f 100644
--- a/tests/expected/suites_harvesting_post_Harvest-wmts.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-wmts.xml
@@ -3,7 +3,7 @@
 <csw:HarvestResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd">
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>175</csw:totalInserted>
+      <csw:totalInserted>244</csw:totalInserted>
       <csw:totalUpdated>0</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
@@ -14,699 +14,975 @@
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Temp_Night</dc:identifier>
-        <dc:title>MODIS_Aqua_Cloud_Top_Temp_Night</dc:title>
+        <dc:title>Cloud Top Temperature (Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands721</dc:identifier>
-        <dc:title>MODIS_Aqua_SurfaceReflectance_Bands721</dc:title>
+        <dc:title>Land Surface Reflectance (Bands 7-2-1, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-VIIRS_SNPP_CorrectedReflectance_BandsM3-I3-M11</dc:identifier>
-        <dc:title>VIIRS_SNPP_CorrectedReflectance_BandsM3-I3-M11</dc:title>
+        <dc:title>Corrected Reflectance (M3-I3-M11, VIIRS, SNPP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Uncertainty_Analyzed_Root_Zone_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L4_Uncertainty_Analyzed_Root_Zone_Soil_Moisture</dc:title>
+        <dc:title>Root Zone Soil Moisture Uncertainty (L4, 12z Instantaneous, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Combined_Value_Added_AOD</dc:identifier>
-        <dc:title>MODIS_Combined_Value_Added_AOD</dc:title>
+        <dc:title>Aerosol Optical Depth (Value Added, MODIS, Combined Aqua and Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Alaska_Monthly</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, Alaska Monthly, Best Available, Landsat)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_VV</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_VV</dc:title>
+        <dc:title>Sigma0 (L3, Active, VV Polarization, Radar, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Pressure_Night</dc:identifier>
+        <dc:title>Cloud Top Pressure (Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89H_Day</dc:identifier>
-        <dc:title>AMSRE_Brightness_Temp_89H_Day</dc:title>
+        <dc:title>Brightness Temperature (89H Ghz B Scan, Day, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Faraday_Rotation_Aft</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Faraday_Rotation_Aft</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-OMI_Aerosol_Index</dc:identifier>
+        <dc:title>Aerosol Index (OMI, Aura)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Fraction_Night</dc:identifier>
+        <dc:title>Cloud Fraction (Night, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_AOD_Deep_Blue_Combined</dc:identifier>
+        <dc:title>Merged Aerosol Optical Depth (Deep Blue, Land and Ocean, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Analyzed_Surface_Soil_Moisture</dc:identifier>
+        <dc:title>Surface Soil Moisture (L4, 12z Instantaneous, Model Value-Added, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_AOD_Deep_Blue_Land</dc:identifier>
+        <dc:title>Deep Blue Aerosol Optical Depth (Land, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Optical_Thickness_PCL</dc:identifier>
+        <dc:title>Cloud Optical Thickness (PCL, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_HH_RFI</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_HH_RFI</dc:title>
+        <dc:title>Sigma0 RFI (L3, Active, HH Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Cloud_Liquid_Water_Night</dc:identifier>
-        <dc:title>AMSR2_Cloud_Liquid_Water_Night</dc:title>
+        <dc:title>Columnar Cloud Liquid Water (Night, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_HNO3_46hPa_Night</dc:identifier>
-        <dc:title>MLS_HNO3_46hPa_Night</dc:title>
+        <dc:title>Nitric Acid (46 hPa, Night, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Fore_V</dc:title>
+        <dc:title>Uncorrected Brightness Temperature (L1, Passive, Fore, V Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Fore_H</dc:title>
+        <dc:title>Uncorrected Brightness Temperature (L1, Passive, Fore, H Polarization, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_400hPa_Night</dc:identifier>
+        <dc:title>Relative Humidity (400 hPa, Night, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_700hPa_Night</dc:identifier>
+        <dc:title>Air Temperature (700 hPa, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H_QA</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Fore_H_QA</dc:title>
+        <dc:title>Uncorrected Brightness Temperature QA (L1, Passive, Fore, H Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Faraday_Rotation_Fore</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Faraday_Rotation_Fore</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_500hPa_Night</dc:identifier>
+        <dc:title>Relative Humidity (500 hPa, Night, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Snow_Cover</dc:identifier>
+        <dc:title>Snow Cover (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GMI_Brightness_Temp_Asc</dc:identifier>
-        <dc:title>GMI_Brightness_Temp_Asc</dc:title>
+        <dc:title>Brightness Temperature (Ascending, GMI, GPM)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Height_Day</dc:identifier>
+        <dc:title>Cloud Top Height (Day, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_700hPa_Day</dc:identifier>
+        <dc:title>Air Temperature (700 hPa, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GMI_Rain_Rate_Dsc</dc:identifier>
-        <dc:title>GMI_Rain_Rate_Dsc</dc:title>
+        <dc:title>Rain Rate (Descending, GMI, GPM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_XPOL_RFI</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_XPOL_RFI</dc:title>
+        <dc:title>Sigma0 RFI (L3, Active, XPOL Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Brightness_Temp_Band31_Day</dc:identifier>
-        <dc:title>MODIS_Terra_Brightness_Temp_Band31_Day</dc:title>
+        <dc:title>Brightness Temperature (Band31, Day, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Mean_Gross_Primary_Productivity</dc:identifier>
-        <dc:title>SMAP_L4_Mean_Gross_Primary_Productivity</dc:title>
+        <dc:title>Gross Primary Production (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Pressure_Day</dc:identifier>
-        <dc:title>MODIS_Terra_Cloud_Top_Pressure_Day</dc:title>
+        <dc:title>Cloud Top Pressure (Day, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Snow_Water_Equivalent</dc:identifier>
-        <dc:title>AMSR2_Snow_Water_Equivalent</dc:title>
+        <dc:title>Snow Water Equivalent (AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Land_Surface_Temp_Day</dc:identifier>
-        <dc:title>MODIS_Terra_Land_Surface_Temp_Day</dc:title>
+        <dc:title>Land Surface Temperature (Day, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-Coastlines</dc:identifier>
-        <dc:title>Coastlines</dc:title>
+        <dc:title>Coastlines (OSM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_HNO3_46hPa_Day</dc:identifier>
-        <dc:title>MLS_HNO3_46hPa_Day</dc:title>
+        <dc:title>Nitric Acid (46 hPa, Day, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option1</dc:identifier>
-        <dc:title>SMAP_L2_Passive_Soil_Moisture_Option1</dc:title>
+        <dc:title>Soil Moisture (L2, Passive, Single Channel Algorithm, H Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OMI_SO2_Middle_Troposphere</dc:identifier>
-        <dc:title>OMI_SO2_Middle_Troposphere</dc:title>
+        <dc:title>Sulfur Dioxide (Middle Troposphere, OMI, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option3</dc:identifier>
-        <dc:title>SMAP_L2_Passive_Soil_Moisture_Option3</dc:title>
+        <dc:title>Soil Moisture (L2, Passive, Dual Channel Algorithm, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_CONUS_Monthly</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, CONUS Monthly, Best Available, Landsat)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MEaSUREs_Daily_Landscape_Freeze_Thaw_AMSRE</dc:identifier>
-        <dc:title>MEaSUREs_Daily_Landscape_Freeze_Thaw_AMSRE</dc:title>
+        <dc:title>Freeze Thaw (Daily Landscape, AMSR-E, MEaSUREs)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Temp_Day</dc:identifier>
-        <dc:title>MODIS_Aqua_Cloud_Top_Temp_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius_PCL</dc:identifier>
+        <dc:title>Cloud Effective Radius (PCL, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_600hPa_Night</dc:identifier>
+        <dc:title>Relative Humidity (600 hPa, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GHRSST_L4_MUR_Sea_Surface_Temperature</dc:identifier>
-        <dc:title>GHRSST_L4_MUR_Sea_Surface_Temperature</dc:title>
+        <dc:title>Sea Surface Temperature (L4, MUR Global Foundation, GHRSST)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Global_Monthly</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, Global Monthly, Best Available, NEX, Landsat)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Land_Surface_Temp_Night</dc:identifier>
-        <dc:title>MODIS_Terra_Land_Surface_Temp_Night</dc:title>
+        <dc:title>Land Surface Temperature (Night, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Surface_Precipitation_Rate_Day</dc:identifier>
-        <dc:title>AMSRE_Surface_Precipitation_Rate_Day</dc:title>
+        <dc:title>Surface Precipitation Rate (Day, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-VIIRS_CityLights_2012</dc:identifier>
-        <dc:title>VIIRS_EarthAtNight_2012</dc:title>
+        <dc:title>Earth at Night (2012, VIIRS, SNPP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Surface_Rain_Rate_Day</dc:identifier>
-        <dc:title>AMSRE_Surface_Rain_Rate_Day</dc:title>
+        <dc:title>Surface Rain Rate (Day, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_VV_RFI</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_VV_RFI</dc:title>
+        <dc:title>Sigma0 RFI (L3, Active, VV Polarization, Radar, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Multi_Layer_Flag</dc:identifier>
+        <dc:title>Cloud Multi Layer Flag (MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Water_Path_PCL</dc:identifier>
+        <dc:title>Cloud Water Path (PCL, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Fraction_Day</dc:identifier>
+        <dc:title>Cloud Fraction (Day, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands143</dc:identifier>
-        <dc:title>MODIS_Aqua_SurfaceReflectance_Bands143</dc:title>
+        <dc:title>Land Surface Reflectance (True Color, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Uncertainty_Analyzed_Surface_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L4_Uncertainty_Analyzed_Surface_Soil_Moisture</dc:title>
+        <dc:title>Surface Soil Moisture Uncertainty (L4, 12z Instantaneous, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-Reference_Labels</dc:identifier>
-        <dc:title>Reference_Labels</dc:title>
+        <dc:title>Reference Labels (OSM)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Temp_Day</dc:identifier>
+        <dc:title>Cloud Top Temperature (Day, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_O3_46hPa_Day</dc:identifier>
-        <dc:title>MLS_O3_46hPa_Day</dc:title>
+        <dc:title>Ozone (46 hPa, Day, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_Temperature_46hPa_Day</dc:identifier>
-        <dc:title>MLS_Temperature_46hPa_Day</dc:title>
+        <dc:title>Air Temperature (46 hPa, Day, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_V</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Aft_V</dc:title>
+        <dc:title>Uncorrected Brightness Temperature (L1, Passive, Aft, V Polarization, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Fraction_Day</dc:identifier>
+        <dc:title>Cloud Fraction (Day, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_XPOL</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_XPOL</dc:title>
+        <dc:title>Sigma0 (L3, Active, XPOL Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_CorrectedReflectance_Bands721</dc:identifier>
-        <dc:title>MODIS_Terra_CorrectedReflectance_Bands721</dc:title>
+        <dc:title>Corrected Reflectance (Bands 7-2-1, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GMI_Brightness_Temp_Dsc</dc:identifier>
-        <dc:title>GMI_Brightness_Temp_Dsc</dc:title>
+        <dc:title>Brightness Temperature (Descending, GMI, GPM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89V_Day</dc:identifier>
-        <dc:title>AMSRE_Brightness_Temp_89V_Day</dc:title>
+        <dc:title>Brightness Temperature (89V Ghz B Scan, Day, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Pressure_Night</dc:identifier>
-        <dc:title>MODIS_Aqua_Cloud_Top_Pressure_Night</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_700hPa_Night</dc:identifier>
+        <dc:title>Relative Humidity (700 hPa, Night, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Phase_Optical_Properties</dc:identifier>
+        <dc:title>Cloud Phase Optical Properties (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Chlorophyll_A</dc:identifier>
-        <dc:title>MODIS_Terra_Chlorophyll_A</dc:title>
+        <dc:title>Chlorophyll (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Brightness_Temp_Band31_Day</dc:identifier>
-        <dc:title>MODIS_Aqua_Brightness_Temp_Band31_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius_37</dc:identifier>
+        <dc:title>Cloud Effective Radius (3.7 micron, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Aft_H</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_400hPa_Night</dc:identifier>
+        <dc:title>Air Temperature (400 hPa, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_V_RFI</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Aft_V_RFI</dc:title>
+        <dc:title>Uncorrected Brightness Temperature RFI (L1, Passive, Aft, V Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Land_Surface_Temp_Day</dc:identifier>
-        <dc:title>MODIS_Aqua_Land_Surface_Temp_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Water_Vapor_5km_Day</dc:identifier>
+        <dc:title>Water Vapor Infrared (Day, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Passive_Brightness_Temp_H</dc:identifier>
-        <dc:title>SMAP_L3_Passive_Brightness_Temp_H</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Passive_Soil_Moisture</dc:identifier>
+        <dc:title>Soil Moisture (L3, Passive, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Phase_Optical_Properties</dc:identifier>
+        <dc:title>Cloud Phase Optical Properties (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Chlorophyll_A</dc:identifier>
-        <dc:title>MODIS_Aqua_Chlorophyll_A</dc:title>
+        <dc:title>Chlorophyll (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-BlueMarble_ShadedRelief</dc:identifier>
-        <dc:title>BlueMarble_ShadedRelief</dc:title>
+        <dc:title>Blue Marble Shaded Relief (MODIS)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Concentration_25km</dc:identifier>
-        <dc:title>AMSRE_Sea_Ice_Concentration_25km</dc:title>
+        <dc:title>Sea Ice Concentration (25 km, AMSR-E, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MLS_CO_215hPa_Night</dc:identifier>
+        <dc:title>Carbon Monoxide (215 hPa, Night, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Sea_Ice</dc:identifier>
-        <dc:title>MODIS_Terra_Sea_Ice</dc:title>
+        <dc:title>Sea Ice Extent (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89V_Night</dc:identifier>
-        <dc:title>AMSRE_Brightness_Temp_89V_Night</dc:title>
+        <dc:title>Brightness Temperature (89V Ghz B Scan, Night, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-OMI_Aerosol_Index</dc:identifier>
-        <dc:title>OMI_Aerosol_Index</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Phase_Infrared_Night</dc:identifier>
+        <dc:title>Cloud Phase (Infrared, Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Analyzed_Surface_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L4_Analyzed_Surface_Soil_Moisture</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Height_Day</dc:identifier>
+        <dc:title>Cloud Top Height (Day, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Blue_Marble</dc:identifier>
+        <dc:title>Blue Marble (Reverb)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Phase_Infrared_Day</dc:identifier>
+        <dc:title>Cloud Phase (Infrared, Day, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Columnar_Water_Vapor_Day</dc:identifier>
-        <dc:title>AMSR2_Columnar_Water_Vapor_Day</dc:title>
+        <dc:title>Columnar Water Vapor (Day, AMSR2, GCOM-W1)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands121</dc:identifier>
+        <dc:title>Land Surface Reflectance (Bands 1-2-1, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Aerosol</dc:identifier>
-        <dc:title>MODIS_Aqua_Aerosol</dc:title>
+        <dc:title>Aerosol Optical Depth (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_CO_Total_Column_Night</dc:identifier>
-        <dc:title>AIRS_CO_Total_Column_Night</dc:title>
+        <dc:title>Carbon Monoxide (Total Column, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Passive_Brightness_Temp_V</dc:identifier>
-        <dc:title>SMAP_L3_Passive_Brightness_Temp_V</dc:title>
+        <dc:title>Corrected Brightness Temperature (L3, Passive, V Polarization, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-OMI_SO2_Upper_Troposphere_and_Stratosphere</dc:identifier>
+        <dc:title>Sulfur Dioxide (Upper Troposphere and Stratosphere, OMI, Aura)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Height_Night</dc:identifier>
+        <dc:title>Cloud Top Height (Night, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_Precipitation_Day</dc:identifier>
-        <dc:title>AIRS_Precipitation_Day</dc:title>
+        <dc:title>Precipitation (Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option2</dc:identifier>
-        <dc:title>SMAP_L2_Passive_Soil_Moisture_Option2</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_NDVI_Global_Monthly</dc:identifier>
+        <dc:title>NDVI (Global Monthly, Best Available, NEX, Landsat)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Sea_Surface_Temp_Microwave</dc:identifier>
-        <dc:title>Sea_Surface_Temp_Microwave</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L2_Passive_Soil_Moisture_Option2</dc:identifier>
+        <dc:title>Soil Moisture (L2, Passive, Single Channel Algorithm, V Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_XPOL_QA</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_XPOL_QA</dc:title>
+        <dc:title>Sigma0 QA (L3, Active, XPOL Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Surface_Precipitation_Rate_Night</dc:identifier>
-        <dc:title>AMSRE_Surface_Precipitation_Rate_Night</dc:title>
+        <dc:title>Surface Precipitation Rate (Night, AMSR-E, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H_RFI</dc:identifier>
+        <dc:title>Uncorrected Brightness Temperature RFI (L1, Passive, Fore, H Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_CO_Total_Column_Day</dc:identifier>
-        <dc:title>AIRS_CO_Total_Column_Day</dc:title>
+        <dc:title>Carbon Monoxide (Total Column, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GMI_Snow_Rate_Dsc</dc:identifier>
-        <dc:title>GMI_Snow_Rate_Dsc</dc:title>
+        <dc:title>Snow Rate (Descending, GMI, GPM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L3_Active_Passive_Soil_Moisture</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V_QA</dc:identifier>
+        <dc:title>Uncorrected Brightness Temperature QA (L1, Passive, Fore, V Polarization, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_AOD_Deep_Blue_Land</dc:identifier>
+        <dc:title>Deep Blue Aerosol Optical Depth (Land, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Sea_Surface_Temp_Blended</dc:identifier>
-        <dc:title>Sea_Surface_Temp_Blended</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Aerosol_Optical_Depth_3km</dc:identifier>
+        <dc:title>Aerosol Optical Depth (3km, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OSM_Land_Water_Map</dc:identifier>
-        <dc:title>OSM_Land_Water_Map</dc:title>
+        <dc:title>Land Water Map (OSM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OSM_Land_Mask</dc:identifier>
-        <dc:title>OSM_Land_Mask</dc:title>
+        <dc:title>Land Mask (OSM)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius_37</dc:identifier>
+        <dc:title>Cloud Effective Radius (3.7 micron, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Water_Vapor_5km_Night</dc:identifier>
+        <dc:title>Water Vapor Infrared (Night, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Alaska_Annual</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, Alaska Annual, Best Available, Landsat)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H_QA</dc:identifier>
+        <dc:title>Uncorrected Brightness Temperature QA (L1, Passive, Aft, H Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-ASTER_GDEM_Color_Index</dc:identifier>
-        <dc:title>ASTER_GDEM_Color_Index</dc:title>
+        <dc:title>Digital Elevation Model (Color Index, ASTER, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_Prata_SO2_Index_Night</dc:identifier>
-        <dc:title>AIRS_Prata_SO2_Index_Night</dc:title>
+        <dc:title>Sulfur Dioxide (Prata, Night, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Optical_Thickness_PCL</dc:identifier>
+        <dc:title>Cloud Optical Thickness (PCL, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Concentration_12km</dc:identifier>
-        <dc:title>AMSRE_Sea_Ice_Concentration_12km</dc:title>
+        <dc:title>Sea Ice Concentration (12 km, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GMI_Rain_Rate_Asc</dc:identifier>
-        <dc:title>GMI_Rain_Rate_Asc</dc:title>
+        <dc:title>Rain Rate (Ascending, GMI, GPM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_CorrectedReflectance_Bands721</dc:identifier>
-        <dc:title>MODIS_Aqua_CorrectedReflectance_Bands721</dc:title>
+        <dc:title>Corrected Reflectance (Bands 7-2-1, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_850hPa_Night</dc:identifier>
+        <dc:title>Air Temperature (850 hPa, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Mean_Net_Ecosystem_Exchange</dc:identifier>
-        <dc:title>SMAP_L4_Mean_Net_Ecosystem_Exchange</dc:title>
+        <dc:title>Net Ecosystem CO2 Exchange (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands721</dc:identifier>
-        <dc:title>MODIS_Terra_SurfaceReflectance_Bands721</dc:title>
+        <dc:title>Land Surface Reflectance (Bands 7-2-1, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Frozen_Area</dc:identifier>
-        <dc:title>SMAP_L4_Frozen_Area</dc:title>
+        <dc:title>Percent Frozen Area (L4, 9 km Grid Cell Coverage, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Sea_Surface_Temp_Infrared</dc:identifier>
-        <dc:title>Sea_Surface_Temp_Infrared</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Angstrom_Exponent_Ocean</dc:identifier>
+        <dc:title>Dark Target Aerosol Angstrom Exponent (Ocean, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Brightness_Temp_V</dc:identifier>
-        <dc:title>SMAP_L3_Active_Passive_Brightness_Temp_V</dc:title>
+        <dc:title>Disaggregated Brightness Temperature (L3, Active/Passive, V Polarization, Radar/Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Snow_Cover</dc:identifier>
-        <dc:title>MODIS_Aqua_Snow_Cover</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_500hPa_Day</dc:identifier>
+        <dc:title>Relative Humidity (500 hPa, Day, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius_PCL</dc:identifier>
+        <dc:title>Cloud Effective Radius (PCL, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Snow_Mass</dc:identifier>
-        <dc:title>SMAP_L4_Snow_Mass</dc:title>
+        <dc:title>Snow Mass (L4, 12z-3z Average, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-VIIRS_SNPP_CorrectedReflectance_TrueColor</dc:identifier>
-        <dc:title>VIIRS_SNPP_CorrectedReflectance_TrueColor</dc:title>
+        <dc:title>Corrected Reflectance (True Color, VIIRS, SNPP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_850hPa_Day</dc:identifier>
+        <dc:title>Relative Humidity (850 hPa, Day, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Angstrom_Exponent_Land</dc:identifier>
+        <dc:title>Deep Blue Aerosol Angstrom Exponent (Land, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Fraction_Night</dc:identifier>
+        <dc:title>Cloud Fraction (Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_HH_QA</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_HH_QA</dc:title>
+        <dc:title>Sigma0 QA (L3, Active, HH Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_CorrectedReflectance_TrueColor</dc:identifier>
-        <dc:title>MODIS_Terra_CorrectedReflectance_TrueColor</dc:title>
+        <dc:title>Corrected Reflectance (True Color, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Phase_Infrared_Day</dc:identifier>
+        <dc:title>Cloud Phase (Infrared, Day, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_HH</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_HH</dc:title>
+        <dc:title>Sigma0 (L3, Active, HH Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Brightness_Temp_H</dc:identifier>
-        <dc:title>SMAP_L3_Active_Passive_Brightness_Temp_H</dc:title>
+        <dc:title>Disaggregated Brightness Temperature (L3, Active/Passive, H Polarization, Radar/Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V_RFI</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Fore_V_RFI</dc:title>
+        <dc:title>Uncorrected Brightness Temperature RFI (L1, Passive, Fore, V Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Brightness_Temp_89H_Night</dc:identifier>
-        <dc:title>AMSRE_Brightness_Temp_89H_Night</dc:title>
+        <dc:title>Brightness Temperature (89H Ghz B Scan, Night, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_V_QA</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Fore_V_QA</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Passive_Soil_Moisture</dc:identifier>
+        <dc:title>Soil Moisture (L3, Active/Passive, Radar/Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Data_No_Data</dc:identifier>
+        <dc:title>Data/No Data Mask (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Wind_Speed_Day</dc:identifier>
-        <dc:title>AMSR2_Wind_Speed_Day</dc:title>
+        <dc:title>Wind Speed (Day, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OMI_Cloud_Pressure</dc:identifier>
-        <dc:title>OMI_Cloud_Pressure</dc:title>
+        <dc:title>Cloud Pressure (OMI, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_H2O_46hPa_Day</dc:identifier>
-        <dc:title>MLS_H2O_46hPa_Day</dc:title>
+        <dc:title>Water Vapor (46 hPa, Day, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Water_Vapor_5km_Day</dc:identifier>
-        <dc:title>MODIS_Terra_Water_Vapor_5km_Day</dc:title>
+        <dc:title>Water Vapor Infrared (Day, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_CONUS_Seasonal</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, CONUS Seasonal, Landsat)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius</dc:identifier>
+        <dc:title>Cloud Effective Radius (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_V_QA</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Aft_V_QA</dc:title>
+        <dc:title>Uncorrected Brightness Temperature QA (L1, Passive, Aft, V Polarization, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Aerosol_Optical_Depth_3km</dc:identifier>
+        <dc:title>Aerosol Optical Depth (3km, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-BlueMarble_NextGeneration</dc:identifier>
-        <dc:title>BlueMarble_NextGeneration</dc:title>
+        <dc:title>Blue Marble (MODIS)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands121</dc:identifier>
-        <dc:title>MODIS_Terra_SurfaceReflectance_Bands121</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Surface_Rain_Rate_Day</dc:identifier>
+        <dc:title>Surface Rain Rate (Day, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_CO_215hPa_Day</dc:identifier>
-        <dc:title>MLS_CO_215hPa_Day</dc:title>
+        <dc:title>Carbon Monoxide (215 hPa, Day, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MLS_CO_215hPa_Night</dc:identifier>
-        <dc:title>MLS_CO_215hPa_Night</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_850hPa_Night</dc:identifier>
+        <dc:title>Relative Humidity (850 hPa, Night, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius</dc:identifier>
+        <dc:title>Cloud Effective Radius (MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Phase_Infrared_Night</dc:identifier>
+        <dc:title>Cloud Phase (Infrared, Night, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Water_Path</dc:identifier>
+        <dc:title>Cloud Water Path (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_Dust_Score</dc:identifier>
-        <dc:title>AIRS_Dust_Score</dc:title>
+        <dc:title>Dust Score Ocean (Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OMI_Absorbing_Aerosol_Optical_Depth</dc:identifier>
-        <dc:title>OMI_Absorbing_Aerosol_Optical_Depth</dc:title>
+        <dc:title>Aerosol Optical Depth, Absorbing (OMI, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Emult_Average</dc:identifier>
-        <dc:title>SMAP_L4_Emult_Average</dc:title>
+        <dc:title>Percent of Potential Vegetation Light Use Efficiency (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Brightness_Temp_6km_89H</dc:identifier>
-        <dc:title>AMSR2_Sea_Ice_Brightness_Temp_6km_89H</dc:title>
+        <dc:title>Brightness Temperature for Sea Ice (89H Ghz, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H_RFI</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Aft_H_RFI</dc:title>
+        <dc:title>Uncorrected Brightness Temperature RFI (L1, Passive, Aft, H Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Surface_Rain_Rate_Day</dc:identifier>
-        <dc:title>AMSR2_Surface_Rain_Rate_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-GMI_Snow_Rate_Asc</dc:identifier>
+        <dc:title>Snow Rate (Ascending, GMI, GPM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Brightness_Temp_89V</dc:identifier>
-        <dc:title>AMSRE_Sea_Ice_Brightness_Temp_89V</dc:title>
+        <dc:title>Brightness Temperature for Sea Ice (89V Ghz, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Aerosol</dc:identifier>
-        <dc:title>MODIS_Terra_Aerosol</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_AOD_Deep_Blue_Combined</dc:identifier>
+        <dc:title>Merged Aerosol Optical Depth (Deep Blue, Land and Ocean, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MLS_N2O_46hPa_Night</dc:identifier>
+        <dc:title>Nitrous Oxide (46 hPa, Night, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Surface_Precipitation_Rate_Night</dc:identifier>
-        <dc:title>AMSR2_Surface_Precipitation_Rate_Night</dc:title>
+        <dc:title>Surface Precipitation Rate (Night, AMSR2, GCOM-W1)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Optical_Thickness</dc:identifier>
+        <dc:title>Cloud Optical Thickness (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Sea_Ice_Brightness_Temp_89H</dc:identifier>
-        <dc:title>AMSRE_Sea_Ice_Brightness_Temp_89H</dc:title>
+        <dc:title>Brightness Temperature for Sea Ice (89H Ghz, AMSR-E, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Height_Night</dc:identifier>
+        <dc:title>Cloud Top Height (Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Sigma0_VV_QA</dc:identifier>
-        <dc:title>SMAP_L3_Active_Sigma0_VV_QA</dc:title>
+        <dc:title>Sigma0 QA (L3, Active, VV Polarization, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Temp_Day</dc:identifier>
-        <dc:title>MODIS_Terra_Cloud_Top_Temp_Day</dc:title>
+        <dc:title>Cloud Top Temperature (Day, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Brightness_Temp_6km_89V</dc:identifier>
-        <dc:title>AMSR2_Sea_Ice_Brightness_Temp_6km_89V</dc:title>
+        <dc:title>Brightness Temperature for Sea Ice (89V Ghz, AMSR2, GCOM-W1)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_400hPa_Day</dc:identifier>
+        <dc:title>Air Temperature (400 hPa, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Water_Mask</dc:identifier>
-        <dc:title>MODIS_Water_Mask</dc:title>
+        <dc:title>Water Mask (MODIS/SRTM)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Faraday_Rotation_Fore</dc:identifier>
+        <dc:title>Faraday Rotation Angle (L1, Passive, Fore, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_500hPa_Night</dc:identifier>
+        <dc:title>Air Temperature (500 hPa, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_Temperature_46hPa_Night</dc:identifier>
-        <dc:title>MLS_Temperature_46hPa_Night</dc:title>
+        <dc:title>Air Temperature (46 hPa, Night, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-VIIRS_SNPP_CorrectedReflectance_BandsM11-I2-I1</dc:identifier>
-        <dc:title>VIIRS_SNPP_CorrectedReflectance_BandsM11-I2-I1</dc:title>
+        <dc:title>Corrected Reflectance (M11-I2-I1, VIIRS, SNPP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Passive_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L3_Passive_Soil_Moisture</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_700hPa_Day</dc:identifier>
+        <dc:title>Relative Humidity (700 hPa, Day, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Multi_Layer_Flag</dc:identifier>
+        <dc:title>Cloud Multi Layer Flag (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Cloud_Liquid_Water_Day</dc:identifier>
-        <dc:title>AMSR2_Cloud_Liquid_Water_Day</dc:title>
+        <dc:title>Columnar Cloud Liquid Water (Day, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Water_Vapor_5km_Night</dc:identifier>
-        <dc:title>MODIS_Terra_Water_Vapor_5km_Night</dc:title>
+        <dc:title>Water Vapor Infrared (Night, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OMI_SO2_Lower_Troposphere</dc:identifier>
-        <dc:title>OMI_SO2_Lower_Troposphere</dc:title>
+        <dc:title>Sulfur Dioxide (Lower Troposphere, OMI, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-BlueMarble_ShadedRelief_Bathymetry</dc:identifier>
-        <dc:title>BlueMarble_ShadedRelief_Bathymetry</dc:title>
+        <dc:title>Blue Marble Shaded Relief and Bathymetry (MODIS)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Water_Path</dc:identifier>
+        <dc:title>Cloud Water Path (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-GHRSST_L4_G1SST_Sea_Surface_Temperature</dc:identifier>
-        <dc:title>GHRSST_L4_G1SST_Sea_Surface_Temperature</dc:title>
+        <dc:title>Sea Surface Temperature (L4, G1SST Global Foundation, GHRSST)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Fore_H_RFI</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Fore_H_RFI</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Effective_Radius_37_PCL</dc:identifier>
+        <dc:title>Cloud Effective Radius (3.7 micron PCL, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Snow_Cover</dc:identifier>
-        <dc:title>MODIS_Terra_Snow_Cover</dc:title>
+        <dc:title>Snow Cover (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Analyzed_Root_Zone_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L4_Analyzed_Root_Zone_Soil_Moisture</dc:title>
+        <dc:title>Root Zone Soil Moisture (L4, 12z Instantaneous, Model Value-Added, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Uncertainty_Mean_Net_Ecosystem_Exchange</dc:identifier>
+        <dc:title>Net Ecosystem CO2 Exchange Uncertainty (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Mean_Heterotrophic_Respiration</dc:identifier>
-        <dc:title>SMAP_L4_Mean_Heterotrophic_Respiration</dc:title>
+        <dc:title>Heterotrophic Respiration (L4, 9 km Grid Cell Mean, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_H2O_46hPa_Night</dc:identifier>
-        <dc:title>MLS_H2O_46hPa_Night</dc:title>
+        <dc:title>Water Vapor (46 hPa, Night, MLS, Aura)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_Alaska_Seasonal</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, Alaska Seasonal, Best Available, Landsat)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_SurfaceReflectance_Bands143</dc:identifier>
-        <dc:title>MODIS_Terra_SurfaceReflectance_Bands143</dc:title>
+        <dc:title>Land Surface Reflectance (True Color, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_600hPa_Day</dc:identifier>
+        <dc:title>Air Temperature (600 hPa, Day, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Effective_Radius_37_PCL</dc:identifier>
+        <dc:title>Cloud Effective Radius (3.7 micron PCL, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Brightness_Temp_Band31_Night</dc:identifier>
-        <dc:title>MODIS_Terra_Brightness_Temp_Band31_Night</dc:title>
+        <dc:title>Brightness Temperature (Band31, Night, MODIS, Terra)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H</dc:identifier>
+        <dc:title>Uncorrected Brightness Temperature (L1, Passive, Aft, H Polarization, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Surface_Rain_Rate_Night</dc:identifier>
-        <dc:title>AMSRE_Surface_Rain_Rate_Night</dc:title>
+        <dc:title>Surface Rain Rate (Night, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Active_Soil_Moisture</dc:identifier>
-        <dc:title>SMAP_L3_Active_Soil_Moisture</dc:title>
+        <dc:title>Soil Moisture (L3, Active, Radar, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-Reference_Features</dc:identifier>
-        <dc:title>Reference_Features</dc:title>
+        <dc:title>Reference Features (OSM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Concentration_25km</dc:identifier>
-        <dc:title>AMSR2_Sea_Ice_Concentration_25km</dc:title>
+        <dc:title>Sea Ice Concentration (25 km, AMSR2, GCOM-W1)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Angstrom_Exponent_Ocean</dc:identifier>
+        <dc:title>Dark Target Aerosol Angstrom Exponent (Ocean, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Optical_Thickness</dc:identifier>
+        <dc:title>Cloud Optical Thickness (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSRE_Snow_Depth_Over_Ice</dc:identifier>
-        <dc:title>AMSRE_Snow_Depth_Over_Ice</dc:title>
+        <dc:title>Snow Depth Over Ice (12 km, AMSR-E, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Pressure_Night</dc:identifier>
-        <dc:title>MODIS_Terra_Cloud_Top_Pressure_Night</dc:title>
+        <dc:title>Cloud Top Pressure (Night, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Columnar_Water_Vapor_Night</dc:identifier>
-        <dc:title>AMSR2_Columnar_Water_Vapor_Night</dc:title>
+        <dc:title>Columnar Water Vapor (Night, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_N2O_46hPa_Day</dc:identifier>
-        <dc:title>MLS_N2O_46hPa_Day</dc:title>
+        <dc:title>Nitrous Oxide (46 hPa, Day, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_CorrectedReflectance_TrueColor</dc:identifier>
-        <dc:title>MODIS_Aqua_CorrectedReflectance_TrueColor</dc:title>
+        <dc:title>Corrected Reflectance (True Color, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-OMI_Aerosol_Optical_Depth</dc:identifier>
-        <dc:title>OMI_Aerosol_Optical_Depth</dc:title>
+        <dc:title>Aerosol Optical Depth (OMI, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Water_Vapor_5km_Day</dc:identifier>
-        <dc:title>MODIS_Aqua_Water_Vapor_5km_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Land_Surface_Temp_Day</dc:identifier>
+        <dc:title>Land Surface Temperature (Day, MODIS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_600hPa_Night</dc:identifier>
+        <dc:title>Air Temperature (600 hPa, Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_CorrectedReflectance_Bands367</dc:identifier>
-        <dc:title>MODIS_Terra_CorrectedReflectance_Bands367</dc:title>
+        <dc:title>Corrected Reflectance (Bands 3-6-7, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-GMI_Snow_Rate_Asc</dc:identifier>
-        <dc:title>GMI_Snow_Rate_Asc</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Faraday_Rotation_Aft</dc:identifier>
+        <dc:title>Faraday Rotation Angle (L1, Passive, Aft, Radiometer, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Dust_Score_Ocean_Day</dc:identifier>
-        <dc:title>AIRS_Dust_Score_Ocean_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MLS_SO2_147hPa_Day</dc:identifier>
+        <dc:title>Sulfur Dioxide (147 hPa, Day, MLS, Aura)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_600hPa_Day</dc:identifier>
+        <dc:title>Relative Humidity (600 hPa, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Cloud_Top_Pressure_Day</dc:identifier>
-        <dc:title>MODIS_Aqua_Cloud_Top_Pressure_Day</dc:title>
+        <dc:title>Cloud Top Pressure (Day, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Data_No_Data</dc:identifier>
-        <dc:title>MODIS_Terra_Data_No_Data</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L3_Passive_Brightness_Temp_H</dc:identifier>
+        <dc:title>Corrected Brightness Temperature (L3, Passive, H Polarization, Radiometer, SMAP)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Angstrom_Exponent_Land</dc:identifier>
+        <dc:title>Deep Blue Aerosol Angstrom Exponent (Land, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_Precipitation_Night</dc:identifier>
-        <dc:title>AIRS_Precipitation_Night</dc:title>
+        <dc:title>Precipitation (Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Sea_Ice_Concentration_12km</dc:identifier>
-        <dc:title>AMSR2_Sea_Ice_Concentration_12km</dc:title>
+        <dc:title>Sea Ice Concentration (12 km, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Top_Temp_Night</dc:identifier>
-        <dc:title>MODIS_Terra_Cloud_Top_Temp_Night</dc:title>
+        <dc:title>Cloud Top Temperature (Night, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MEaSUREs_Daily_Landscape_Freeze_Thaw_SSMI</dc:identifier>
-        <dc:title>MEaSUREs_Daily_Landscape_Freeze_Thaw_SSMI</dc:title>
+        <dc:title>Freeze Thaw (Daily Landscape, SSMI, MEaSUREs)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Surface_Precipitation_Rate_Day</dc:identifier>
-        <dc:title>AMSR2_Surface_Precipitation_Rate_Day</dc:title>
+        <dc:title>Surface Precipitation Rate (Day, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-SMAP_L1_Passive_Brightness_Temp_Aft_H_QA</dc:identifier>
-        <dc:title>SMAP_L1_Passive_Brightness_Temp_Aft_H_QA</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_RelativeHumidity_400hPa_Day</dc:identifier>
+        <dc:title>Relative Humidity (400 hPa, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MLS_N2O_46hPa_Night</dc:identifier>
-        <dc:title>MLS_N2O_46hPa_Night</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Aerosol</dc:identifier>
+        <dc:title>Aerosol Optical Depth (MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SRTM_Color_Index</dc:identifier>
-        <dc:title>SRTM_Color_Index</dc:title>
+        <dc:title>Digital Elevation Model (Color Index, SRTM)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_O3_46hPa_Night</dc:identifier>
-        <dc:title>MLS_O3_46hPa_Night</dc:title>
+        <dc:title>Ozone (46 hPa, Night, MLS, Aura)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_Dust_Score_Ocean_Night</dc:identifier>
-        <dc:title>AIRS_Dust_Score_Ocean_Night</dc:title>
+        <dc:title>Dust Score Ocean (Night, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands121</dc:identifier>
-        <dc:title>MODIS_Aqua_SurfaceReflectance_Bands121</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-Landsat_WELD_CorrectedReflectance_TrueColor_CONUS_Annual</dc:identifier>
+        <dc:title>Corrected Reflectance (True Color, CONUS Annual, Landsat)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Brightness_Temp_Band31_Day</dc:identifier>
+        <dc:title>Brightness Temperature (Band31, Day, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Wind_Speed_Night</dc:identifier>
-        <dc:title>AMSR2_Wind_Speed_Night</dc:title>
+        <dc:title>Wind Speed (Night, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-SMAP_L4_Soil_Temperature_Layer_1</dc:identifier>
-        <dc:title>SMAP_L4_Soil_Temperature_Layer_1</dc:title>
+        <dc:title>Surface Soil Temperature (L4, 12z Instantaneous, Model Value-Added, SMAP)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-ASTER_GDEM_Greyscale_Shaded_Relief</dc:identifier>
-        <dc:title>ASTER_GDEM_Greyscale_Shaded_Relief</dc:title>
+        <dc:title>Digital Elevation Model (Greyscale Shaded Relief, ASTER, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AMSR2_Surface_Rain_Rate_Night</dc:identifier>
-        <dc:title>AMSR2_Surface_Rain_Rate_Night</dc:title>
+        <dc:title>Surface Rain Rate (Night, AMSR2, GCOM-W1)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-AIRS_Prata_SO2_Index_Day</dc:identifier>
-        <dc:title>AIRS_Prata_SO2_Index_Day</dc:title>
+        <dc:title>Sulfur Dioxide (Prata, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Brightness_Temp_Band31_Night</dc:identifier>
-        <dc:title>MODIS_Aqua_Brightness_Temp_Band31_Night</dc:title>
+        <dc:title>Brightness Temperature (Band31, Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MLS_SO2_147hPa_Night</dc:identifier>
-        <dc:title>MLS_SO2_147hPa_Night</dc:title>
+        <dc:title>Sulfur Dioxide (147 hPa, Night, MLS, Aura)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_SurfaceReflectance_Bands121</dc:identifier>
+        <dc:title>Land Surface Reflectance (Bands 1-2-1, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Land_Surface_Temp_Night</dc:identifier>
-        <dc:title>MODIS_Aqua_Land_Surface_Temp_Night</dc:title>
+        <dc:title>Land Surface Temperature (Night, MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MLS_SO2_147hPa_Day</dc:identifier>
-        <dc:title>MLS_SO2_147hPa_Day</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Dust_Score_Ocean_Day</dc:identifier>
+        <dc:title>Dust Score Ocean (Day, AIRS, Aqua)</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_500hPa_Day</dc:identifier>
+        <dc:title>Air Temperature (500 hPa, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Sea_Ice</dc:identifier>
-        <dc:title>MODIS_Aqua_Sea_Ice</dc:title>
+        <dc:title>Sea Ice Extent (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Water_Vapor_5km_Night</dc:identifier>
-        <dc:title>MODIS_Aqua_Water_Vapor_5km_Night</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-AIRS_Temperature_850hPa_Day</dc:identifier>
+        <dc:title>Air Temperature (850 hPa, Day, AIRS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-MODIS_Aqua_Data_No_Data</dc:identifier>
-        <dc:title>MODIS_Aqua_Data_No_Data</dc:title>
+        <dc:title>Data/No Data Mask (MODIS, Aqua)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-OMI_SO2_Upper_Troposphere_and_Stratosphere</dc:identifier>
-        <dc:title>OMI_SO2_Upper_Troposphere_and_Stratosphere</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-MODIS_Terra_Cloud_Water_Path_PCL</dc:identifier>
+        <dc:title>Cloud Water Path (PCL, MODIS, Terra)</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER-ASTER_GDEM_Color_Shaded_Relief</dc:identifier>
-        <dc:title>ASTER_GDEM_Color_Shaded_Relief</dc:title>
+        <dc:title>Digital Elevation Model (Color Shaded Relief, ASTER, Terra)</dc:title>
       </csw:BriefRecord>
     </csw:InsertResult>
   </csw:TransactionResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml
index 8f8611f..26a3423 100644
--- a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml
@@ -31,7 +31,7 @@
       <dc:subject>reference implementation</dc:subject>
       <dc:format>CSW</dc:format>
       <dct:references scheme="OGC:CSW">http://demo.pycsw.org/cite/csw</dct:references>
-      <dct:abstract>pycsw is an OGC CSW server implementation written in Python. pycsw fully implements the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web]. Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. pycsw allows for the publishing and discovery of geospatial metadata. Existing repositories of geospatial metadata can also be exposed via OGC:CS [...]
+      <dct:abstract>pycsw is an OGC CSW server implementation written in Python. pycsw fully implements the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation.  Since 2015, pycsw is an official OSGeo Project. pycsw allows for the publishing and discovery of geospatial metadata via numerous APIs (CSW 2/CS [...]
       <dc:creator>Lastname, Firstname</dc:creator>
       <dc:publisher>Organization Name</dc:publisher>
       <dc:contributor>Lastname, Firstname</dc:contributor>
diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml
index 5192a0f..71064f1 100644
--- a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml
@@ -479,6 +479,16 @@
                 <gco:CharacterString>GetObservation</gco:CharacterString>
               </srv:operationName>
               <srv:identifier>
+                <gco:CharacterString>CDIP221</gco:CharacterString>
+              </srv:identifier>
+            </srv:SV_CoupledResource>
+          </srv:coupledResource>
+          <srv:coupledResource>
+            <srv:SV_CoupledResource>
+              <srv:operationName>
+                <gco:CharacterString>GetObservation</gco:CharacterString>
+              </srv:operationName>
+              <srv:identifier>
                 <gco:CharacterString>ALL_PLATFORMS</gco:CharacterString>
               </srv:identifier>
             </srv:SV_CoupledResource>
@@ -624,6 +634,7 @@
           <srv:operatesOn uuidref="44098" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-44098"/>
           <srv:operatesOn uuidref="WLIS" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-WLIS"/>
           <srv:operatesOn uuidref="CO2" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-CO2"/>
+          <srv:operatesOn uuidref="CDIP221" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-CDIP221"/>
           <srv:operatesOn uuidref="ALL_PLATFORMS" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-ALL_PLATFORMS"/>
           <srv:operatesOn uuidref="A01" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-A01"/>
           <srv:operatesOn uuidref="MDS02" xlink:href="http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=PYCSW_IDENTIFIER-MDS02"/>
diff --git a/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml b/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml
index 53f45a6..d3d1755 100644
--- a/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml
+++ b/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml
@@ -4,6 +4,6 @@
   <csw:TransactionSummary>
     <csw:totalInserted>0</csw:totalInserted>
     <csw:totalUpdated>0</csw:totalUpdated>
-    <csw:totalDeleted>276</csw:totalDeleted>
+    <csw:totalDeleted>346</csw:totalDeleted>
   </csw:TransactionSummary>
 </csw:TransactionResponse>
diff --git a/tests/run_tests.py b/tests/run_tests.py
index f9467fc..bae2e4b 100644
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -326,6 +326,8 @@ SYNOPSIS
 
     -s    testsuites to run (comma-seperated list)
 
+    -p    run tests in pedantic mode (byte level diff check) (default: c14n mode)
+
     -d    database (SQLite3 [default], PostgreSQL, MySQL)
 
     -r    run tests which harvest remote resources (default off)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/pycsw.git



More information about the Pkg-grass-devel mailing list