diff --git a/LICENSE b/LICENSE
index 614ea82..8105e40 100644
--- a/LICENSE
+++ b/LICENSE
@@ -202,6 +202,12 @@
    limitations under the License.
 ---------------------------------------------------------
 taverna-server-usagerecord/src/main/xsd/xmlds.xsd
-is licensed by the W3C Software License
-http://www.w3.org/Consortium/Legal/copyright-software-19980720
----------------------------------------------------------
\ No newline at end of file
+is licensed by the W3C Software License, see
+corresponding META-INF/LICENSE.W3C.software.txt
+---------------------------------------------------------
+taverna-server-usagerecords contains derivative work
+based on Open Grid Forum (OGF) Documents.
+
+For the original copyright notices, see the corresponding
+META-INF/LICENSE.GFD.98.txt and META-INF/LICENSE.GFD.204
+---------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index 341ce0c..07ff09a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -7,59 +7,3 @@
 Portions of this software were originally based on the following:
 - Copyright 2010-2014 University of Manchester, UK
 These have been licensed to the Apache Software Foundation under a software grant.
-
----------------------------------------------------------
-org.apache.taverna.server.usagerecord.xml.urf classes are
-derived from https://www.ogf.org/documents/GFD.98.pdf
-and http://schemas.ogf.org/urf/2003/09/url
-
-      Usage Record Working Group XML Schema definition (GFD.98)
-
-      Copyright (C) Open Grid Forum (2006-2007). All Rights Reserved.
-
-      This document and translations of it may be copied and furnished to
-      others, and derivative works that comment on or otherwise explain it or
-      assist in its implementation may be prepared, copied, published and
-      distributed, in whole or in part, without restriction of any kind,
-      provided that the above copyright notice and this paragraph are included
-      on all such copies and derivative works. However, this document itself
-      may not be modified in any way, such as by removing the copyright notice
-      or references to the OGF or other organizations, except as needed for
-      the purpose of developing Grid Recommendations in which case the
-      procedures for copyrights defined in the OGF Document process must be
-      followed, or as required to translate it into languages other than
-      English.
-
-      The limited permissions granted above are perpetual and will not be
-      revoked by the OGF or its successors or assignees.
-
-      This document and the information contained herein is provided on an "As
-      Is" basis and the OGF disclaims all warranties, express or implied,
-      including but not limited to any warranty that the use of the
-      information herein will not infringe any rights or any implied
-      warranties of merchantability or fitness for a particular purpose.
----------------------------------------------------------
-org.apache.taverna.server.usagerecord.xml.urf2 classes are
-derived from https://www.ogf.org/documents/GFD.204.pdf
-
-  Copyright © Open Grid Forum (2006-2013). Some Rights Reserved.
- 
-  This document and translations of it may be copied and furnished to others,
-  and derivative works that comment on or otherwise explain it or assist in its
-  implementation may be prepared, copied, published and distributed, in whole
-  or in part, without restriction of any kind, provided that the above
-  copyright notice and this paragraph are included as references to the derived
-  portions on all such copies and derivative works. The published OGF document
-  from which such works are derived, however, may not be modified in any way,
-  such as by removing the copyright notice or references to the OGF or other
-  organizations, except as needed for the purpose of developing new or updated
-  OGF documents in conformance with the procedures defined in the OGF Document
-  Process, or as required to translate it into languages other than English.
-  OGF, with the approval of its board, may remove this restriction for
-  inclusion of OGF document content for the purpose of producing standards in
-  cooperation with other international standards bodies.
- 
-  The limited permissions granted above are perpetual and will not be revoked
-  by the OGF or its successors or assignees.
- ---------------------------------------------------------
- 
\ No newline at end of file
diff --git a/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE
index 80b8447..acaa94f 100644
--- a/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE
+++ b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE
@@ -202,6 +202,12 @@
    limitations under the License.
 ---------------------------------------------------------
 taverna-server-usagerecord/src/main/xsd/xmlds.xsd
-is licensed by the W3C Software License
-http://www.w3.org/Consortium/Legal/copyright-software-19980720
+is licensed by the W3C Software License, see
+LICENSE.W3C.software.txt
 ---------------------------------------------------------
+taverna-server-usagerecords contains derivative work
+based on Open Grid Forum (OGF) Documents.
+
+For the original copyright notices, see
+LICENSE.GFD.98.txt and LICENSE.GFD.204
+---------------------------------------------------------
\ No newline at end of file
diff --git a/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.GFD.204.txt b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.GFD.204.txt
new file mode 100644
index 0000000..bb077f9
--- /dev/null
+++ b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.GFD.204.txt
@@ -0,0 +1,25 @@
+org.apache.taverna.server.usagerecord.xml.urf2 classes are
+derivate work from Open Grid Forum (OGF) Document
+https://www.ogf.org/documents/GFD.204.pdf
+
+Copyright notice of the original OGF document:
+
+  Copyright © Open Grid Forum (2006-2013). Some Rights Reserved.
+ 
+  This document and translations of it may be copied and furnished to others,
+  and derivative works that comment on or otherwise explain it or assist in its
+  implementation may be prepared, copied, published and distributed, in whole
+  or in part, without restriction of any kind, provided that the above
+  copyright notice and this paragraph are included as references to the derived
+  portions on all such copies and derivative works. The published OGF document
+  from which such works are derived, however, may not be modified in any way,
+  such as by removing the copyright notice or references to the OGF or other
+  organizations, except as needed for the purpose of developing new or updated
+  OGF documents in conformance with the procedures defined in the OGF Document
+  Process, or as required to translate it into languages other than English.
+  OGF, with the approval of its board, may remove this restriction for
+  inclusion of OGF document content for the purpose of producing standards in
+  cooperation with other international standards bodies.
+ 
+  The limited permissions granted above are perpetual and will not be revoked
+  by the OGF or its successors or assignees.
\ No newline at end of file
diff --git a/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.GFD.98.txt b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.GFD.98.txt
new file mode 100644
index 0000000..e9b445b
--- /dev/null
+++ b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.GFD.98.txt
@@ -0,0 +1,32 @@
+org.apache.taverna.server.usagerecord.xml.urf classes are
+derivate work from Open Grid Forum (OGF) Documents
+https://www.ogf.org/documents/GFD.98.pdf
+http://schemas.ogf.org/urf/2003/09/url
+
+Copyright notice of the original OGF document:
+
+      Usage Record Working Group XML Schema definition (GFD.98)
+
+      Copyright (C) Open Grid Forum (2006-2007). All Rights Reserved.
+
+      This document and translations of it may be copied and furnished to
+      others, and derivative works that comment on or otherwise explain it or
+      assist in its implementation may be prepared, copied, published and
+      distributed, in whole or in part, without restriction of any kind,
+      provided that the above copyright notice and this paragraph are included
+      on all such copies and derivative works. However, this document itself
+      may not be modified in any way, such as by removing the copyright notice
+      or references to the OGF or other organizations, except as needed for
+      the purpose of developing Grid Recommendations in which case the
+      procedures for copyrights defined in the OGF Document process must be
+      followed, or as required to translate it into languages other than
+      English.
+
+      The limited permissions granted above are perpetual and will not be
+      revoked by the OGF or its successors or assignees.
+
+      This document and the information contained herein is provided on an "As
+      Is" basis and the OGF disclaims all warranties, express or implied,
+      including but not limited to any warranty that the use of the
+      information herein will not infringe any rights or any implied
+      warranties of merchantability or fitness for a particular purpose.
diff --git a/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.W3C.software.txt b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.W3C.software.txt
new file mode 100644
index 0000000..8673dba
--- /dev/null
+++ b/taverna-server-usagerecord/src/main/resources/META-INF/LICENSE.W3C.software.txt
@@ -0,0 +1,47 @@
+https://www.w3.org/Consortium/Legal/copyright-software-19980720
+W3C® SOFTWARE NOTICE AND LICENSE
+
+Copyright © 1994-2002 World Wide Web Consortium, 
+(Massachusetts Institute of Technology, 
+Institut National de Recherche en Informatique et en Automatique, 
+Keio University). 
+
+All Rights Reserved. http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related items) is being
+provided by the copyright holders under the following license. By obtaining,
+using and/or copying this work, you (the licensee) agree that you have read,
+understood, and will comply with the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification, for any purpose and without fee
+or royalty is hereby granted, provided that you include the following on ALL
+copies of the software and documentation or portions thereof, including
+modifications, that you make:
+
+The full text of this NOTICE in a location viewable to users of the
+redistributed or derivative work.  Any pre-existing intellectual property
+disclaimers, notices, or terms and conditions. If none exist, a short notice of
+the following form (hypertext is preferred, text is permitted) should be used
+within the body of any redistributed or derivative code: "Copyright ©
+[$date-of-software] World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de Recherche en Informatique et en Automatique,
+Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/"
+Notice of any changes or modifications to the W3C files, including the date
+changes were made. (We recommend you provide URIs to the location from which
+the code is derived.)
+
+SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
+REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
+THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
+PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to the software without specific, written prior
+permission. Title to copyright in this software and any associated
+documentation will at all times remain with copyright holders.
+
diff --git a/taverna-server-usagerecord/src/main/resources/META-INF/NOTICE b/taverna-server-usagerecord/src/main/resources/META-INF/NOTICE
index c935053..99676d1 100644
--- a/taverna-server-usagerecord/src/main/resources/META-INF/NOTICE
+++ b/taverna-server-usagerecord/src/main/resources/META-INF/NOTICE
@@ -7,58 +7,3 @@
 Portions of this software were originally based on the following:
 - Copyright 2010-2014 University of Manchester, UK
 These have been licensed to the Apache Software Foundation under a software grant.
-
----------------------------------------------------------
-org.apache.taverna.server.usagerecord.xml.urf classes are
-derived from https://www.ogf.org/documents/GFD.98.pdf
-and http://schemas.ogf.org/urf/2003/09/url
-
-      Usage Record Working Group XML Schema definition (GFD.98)
-
-      Copyright (C) Open Grid Forum (2006-2007). All Rights Reserved.
-
-      This document and translations of it may be copied and furnished to
-      others, and derivative works that comment on or otherwise explain it or
-      assist in its implementation may be prepared, copied, published and
-      distributed, in whole or in part, without restriction of any kind,
-      provided that the above copyright notice and this paragraph are included
-      on all such copies and derivative works. However, this document itself
-      may not be modified in any way, such as by removing the copyright notice
-      or references to the OGF or other organizations, except as needed for
-      the purpose of developing Grid Recommendations in which case the
-      procedures for copyrights defined in the OGF Document process must be
-      followed, or as required to translate it into languages other than
-      English.
-
-      The limited permissions granted above are perpetual and will not be
-      revoked by the OGF or its successors or assignees.
-
-      This document and the information contained herein is provided on an "As
-      Is" basis and the OGF disclaims all warranties, express or implied,
-      including but not limited to any warranty that the use of the
-      information herein will not infringe any rights or any implied
-      warranties of merchantability or fitness for a particular purpose.
----------------------------------------------------------
-org.apache.taverna.server.usagerecord.xml.urf2 classes are
-derived from https://www.ogf.org/documents/GFD.204.pdf
-
-  Copyright © Open Grid Forum (2006-2013). Some Rights Reserved.
- 
-  This document and translations of it may be copied and furnished to others,
-  and derivative works that comment on or otherwise explain it or assist in its
-  implementation may be prepared, copied, published and distributed, in whole
-  or in part, without restriction of any kind, provided that the above
-  copyright notice and this paragraph are included as references to the derived
-  portions on all such copies and derivative works. The published OGF document
-  from which such works are derived, however, may not be modified in any way,
-  such as by removing the copyright notice or references to the OGF or other
-  organizations, except as needed for the purpose of developing new or updated
-  OGF documents in conformance with the procedures defined in the OGF Document
-  Process, or as required to translate it into languages other than English.
-  OGF, with the approval of its board, may remove this restriction for
-  inclusion of OGF document content for the purpose of producing standards in
-  cooperation with other international standards bodies.
- 
-  The limited permissions granted above are perpetual and will not be revoked
-  by the OGF or its successors or assignees.
- ---------------------------------------------------------
