diff --git a/openapi b/openapi
index 073fd7213fd9e6ebc2f8a47d628a650de30c8bc4..99ea877dca8ba0587699f12dab77a43f79a836fc 160000
--- a/openapi
+++ b/openapi
@@ -1 +1 @@
-Subproject commit 073fd7213fd9e6ebc2f8a47d628a650de30c8bc4
+Subproject commit 99ea877dca8ba0587699f12dab77a43f79a836fc
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/RelocalizationInformationImpl.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/RelocalizationInformationImpl.cs
index 9a377b30adec12cab328cbdf7b14cdf9e249f9da..f4cf0957c08164e4498a377e36215fef56c2f3af 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/RelocalizationInformationImpl.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/RelocalizationInformationImpl.cs
@@ -52,17 +52,24 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// Operation to retrieve all the relocalization information of one or severals WorldAnchors or Trackables.
         /// </summary>
         /// 
-        public override IActionResult GetRelocalizationInformation([FromQuery(Name = "uuids")][Required()] List<GetRelocalizationInformationUuidsParameterInner> uuids, [FromQuery(Name = "capabilities")][Required()] List<Capability> capabilities, [FromHeader(Name = "token")] string token)
+        // old: public override IActionResult GetRelocalizationInformation([FromQuery(Name = "uuids")][Required()] List<GetRelocalizationInformationUuidsParameterInner> uuids, [FromQuery(Name = "capabilities")][Required()] List<Capability> capabilities, [FromHeader(Name = "token")] string token)
+        public override IActionResult GetRelocalizationInformation([FromQuery(Name = "uuids")][Required()] List<UuidAndMode> uuids, [FromQuery(Name = "capabilities")][Required()] List<Capability> capabilities, [FromHeader(Name = "token")] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             WorldAnchorService _worldAnchorService = WorldAnchorService.Singleton as WorldAnchorService;
             TrackableService _trackableService = TrackableService.Singleton as TrackableService;
 
             var history = new List<Guid>();
-            var result = new GetRelocalizationInformation200Response();
+            var result = new RelocalizationInformations();
             result.RelocInfo = new List<RelocalizationInformation>();
 
+            Guid errorUid = Guid.Empty;
+
             foreach (var request in uuids)
             {
+                //System.Diagnostics.Debug.WriteLine("RelocInfo: Looking in the WS database for UUID=" + request.Uuid.ToString());
+
                 var anchor = _worldAnchorService.Get(request.Uuid);
                 Trackable trackable = null;
 
@@ -88,18 +95,18 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                 else if (trackable != null)
                 {
                     history.Add(trackable.UUID);
-                    
+
                     Matrix4x4 matrix = Matrix4x4.Identity;
 
                     var relocalizationInformation = new RelocalizationInformation();
                     relocalizationInformation.RequestUUID = trackable.UUID;
                     relocalizationInformation.RequestType = TypeWorldStorage.TRACKABLEEnum;
-                    relocalizationInformation.RelocObjects = new List<RelocalizationInformationRelocObjectsInner>();
+                    relocalizationInformation.RelocObjects = new List<RelocObject>();
 
                     if (trackable.Match(capabilities))
                     {
                         // add itself with matrix identity as Transform3D
-                        var itself = new RelocalizationInformationRelocObjectsInner();
+                        var itself = new RelocObject();
                         itself.Trackable = trackable;
                         itself.Mode = request.Mode;
                         itself.Transform3D = new List<float>()
@@ -118,16 +125,19 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                 }
                 else
                 {
-                    Console.WriteLine($"WorldAnchor with UUID {request.Uuid} does not exist in database");
+                    Console.WriteLine($"Trackable or WorldAnchor with UUID {request.Uuid} does not exist in database");
                 }
             }
 
-            return result.RelocInfo.Count > 0 ? new ObjectResult(result) : StatusCode(404, "Not found, could not find UUID in database.");
+            return result.RelocInfo.Count > 0 ? new ObjectResult(result) : StatusCode(404, new Error() { Message = "Not found, could not find UUID(s) in database." });
         }
 
-        private List<RelocalizationInformationRelocObjectsInner> FindRelocInfo(Guid targetUUID, ModeWorldStorage mode, Matrix4x4 matrix, List<Capability> capabilities, ref List<Guid> history)
+        //
+        // Helpers
+        //
+        private List<RelocObject> FindRelocInfo(Guid targetUUID, ModeWorldStorage mode, Matrix4x4 matrix, List<Capability> capabilities, ref List<Guid> history)
         {
-            var results = new List<RelocalizationInformationRelocObjectsInner>();
+            var results = new List<RelocObject>();
 
             results.AddRange(FindRelocInfoAsTo(targetUUID, mode, matrix, capabilities, ref history));
             results.AddRange(FindRelocInfoAsFrom(targetUUID, mode, matrix, capabilities, ref history));
@@ -136,13 +146,13 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         }
 
         // Check links where the target UUID appeared as "To"
-        private List<RelocalizationInformationRelocObjectsInner> FindRelocInfoAsTo(Guid targetUUID, ModeWorldStorage mode, Matrix4x4 matrix, List<Capability> capabilities, ref List<Guid> history)
+        private List<RelocObject> FindRelocInfoAsTo(Guid targetUUID, ModeWorldStorage mode, Matrix4x4 matrix, List<Capability> capabilities, ref List<Guid> history)
         {
             TrackableService _trackableService = TrackableService.Singleton as TrackableService;
             WorldAnchorService _worldAnchorService = WorldAnchorService.Singleton as WorldAnchorService;
             WorldLinkService _worldLinkService = WorldLinkService.Singleton as WorldLinkService;
 
-            var results = new List<RelocalizationInformationRelocObjectsInner>();
+            var results = new List<RelocObject>();
 
             // Check links where the target UUID appeared as "To"
             List<WorldLink> linksTo;
@@ -199,7 +209,7 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                         }
 
                         // We found a valid trackable, add it to the results
-                        var result = new RelocalizationInformationRelocObjectsInner();
+                        var result = new RelocObject();
                         result.Trackable = trackable;
                         result.Mode = mode;
                         result.Transform3D = new List<float>()
@@ -226,9 +236,9 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
 
                     if (anchor != null)
                     {
-                        
+
                         Matrix4x4 m;
-                        m = link.Matrix()*matrix;
+                        m = link.Matrix() * matrix;
 
                         if (mode == ModeWorldStorage.REQUESTTOTRACKABLESEnum)
                         {
@@ -272,13 +282,13 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         }
 
         // Check links where the target UUID appeared as "From"
-        private List<RelocalizationInformationRelocObjectsInner> FindRelocInfoAsFrom(Guid targetUUID, ModeWorldStorage mode, Matrix4x4 matrix, List<Capability> capabilities, ref List<Guid> history)
+        private List<RelocObject> FindRelocInfoAsFrom(Guid targetUUID, ModeWorldStorage mode, Matrix4x4 matrix, List<Capability> capabilities, ref List<Guid> history)
         {
             TrackableService _trackableService = TrackableService.Singleton as TrackableService;
             WorldAnchorService _worldAnchorService = WorldAnchorService.Singleton as WorldAnchorService;
             WorldLinkService _worldLinkService = WorldLinkService.Singleton as WorldLinkService;
 
-            var results = new List<RelocalizationInformationRelocObjectsInner>();
+            var results = new List<RelocObject>();
 
             // Check links where the anchor appeared as "From"
             List<WorldLink> linksTo;
@@ -335,7 +345,7 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                         }
 
                         // We found a valid trackable, add it to the results
-                        var result = new RelocalizationInformationRelocObjectsInner();
+                        var result = new RelocObject();
                         result.Trackable = trackable;
                         result.Mode = mode;
                         result.Transform3D = new List<float>()
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/TrackablesImpl.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/TrackablesImpl.cs
index f6c4bdce3a49c4e5aaa0375582fd51d7f37f0f7a..46e13652029ec8c3b23c935e6e23c99473d0ce8a 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/TrackablesImpl.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/TrackablesImpl.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2024
+// Last change: September 2024
 //
 
 /*
@@ -66,6 +66,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult AddTrackable([FromBody] Trackable trackable, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             if (String.IsNullOrEmpty(trackable.UUID.ToString()))
             {
                 trackable.UUID = Guid.NewGuid();
@@ -75,13 +77,13 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                 Trackable mytrackable = _trackableService.Create(trackable);
                 if (mytrackable == null)
                 {
-                    return StatusCode(409, "UUID already existing!");
+                    return StatusCode(409, new Error() { Message = "UUID already existing!" });
                 }
-                else return StatusCode(200, mytrackable.UUID.ToString());
+                else return StatusCode(200, new Success() { Message = mytrackable.UUID.ToString() });
             }
             catch (Exception e)
             {
-                return StatusCode(400, e.Message);
+                return StatusCode(400, new Error() { Message = e.Message });
             }
         }
 
@@ -90,6 +92,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult DeleteTrackable([FromRoute(Name = "trackableUUID")][Required] Guid trackableUUID, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             // Access other service(s)
             WorldLinkService _worldLinkService = WorldLinkService.Singleton as WorldLinkService;
 
@@ -121,7 +125,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
             {
                 result += ", removed object was referenced in " + worldlinkinfo + " and removed there as well";
             }
-            return (count > 0) ? new ObjectResult(result) : StatusCode(404, "Not found, could not find UUID in database.");
+            result += " Token: " + token;
+            return (count > 0) ? StatusCode(200, new Success() { Message = result }) : StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
         }
 
         /// <summary>
@@ -129,8 +134,10 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult GetTrackableById([FromRoute(Name = "trackableUUID")][Required] Guid trackableUUID, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             Trackable trackable = _trackableService.Get(trackableUUID);
-            return (null != trackable) ? new ObjectResult(trackable) : StatusCode(404, "Not found, could not find UUID in database.");
+            return (null != trackable) ? new ObjectResult(trackable) : StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
         }
 
         /// <summary>
@@ -138,8 +145,11 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult GetTrackables([FromHeader] string token)
         {
-            List<Trackable> trackablelist = _trackableService.Get();
-            return new ObjectResult(trackablelist);
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
+            TrackablesResponse response = new TrackablesResponse();
+            response.Trackables = _trackableService.Get();
+            return new ObjectResult(response);
         }
 
 
@@ -149,14 +159,16 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult ModifyTrackable([FromBody] Trackable trackable, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             long count = _trackableService.Replace(trackable);
             if (count == 0)
             {
-                return StatusCode(404, "Not found, could not find UUID in database.");
+                return StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
             }
             else
             {
-                return StatusCode(200, trackable.UUID.ToString());
+                return StatusCode(200, new Success() { Message = trackable.UUID.ToString() });
             }
         }
     }
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldAnchorsImpl.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldAnchorsImpl.cs
index 0d6663375c20628577dd23c0df7f95c8d525586f..0aebce3020e289304dc4cebcfba5532e413bc5d7 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldAnchorsImpl.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldAnchorsImpl.cs
@@ -66,6 +66,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult AddWorldAnchor([FromBody] WorldAnchor worldAnchor, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             if (String.IsNullOrEmpty(worldAnchor.UUID.ToString()))
             {
                 worldAnchor.UUID = Guid.NewGuid();
@@ -75,13 +77,13 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                 WorldAnchor myworldanchor = _worldAnchorService.Create(worldAnchor);
                 if (myworldanchor == null)
                 {
-                    return StatusCode(409, "UUID alread exexisting!");
+                    return StatusCode(409, new Error() { Message = "UUID alread exexisting!" });
                 }
-                else return StatusCode(200, myworldanchor.UUID.ToString());
+                else return StatusCode(200, new Success() { Message = myworldanchor.UUID.ToString() });
             }
             catch (Exception e)
             {
-                return StatusCode(400, e.Message);
+                return StatusCode(400, new Error() { Message = e.Message });
             }
         }
 
@@ -90,6 +92,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult DeleteWorldAnchor([FromRoute(Name = "worldAnchorUUID")][Required] Guid worldAnchorUUID, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             // Access other service(s)
             WorldLinkService _worldLinkService = WorldLinkService.Singleton as WorldLinkService;
 
@@ -121,7 +125,7 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
             {
                 result += ", but removed object was referenced in " + worldlinkinfo + " and removed there as well";
             }
-            return (count > 0) ? new ObjectResult(result) : StatusCode(404, "Not found, could not find UUID in database.");
+            return (count > 0) ? StatusCode(200, new Success() { Message = result }) : StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
         }
 
         /// <summary>
@@ -129,8 +133,10 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult GetWorldAnchorById([FromRoute(Name = "worldAnchorUUID")][Required] Guid worldAnchorUUID, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             WorldAnchor myworldanchor = _worldAnchorService.Get(worldAnchorUUID);
-            return (null != myworldanchor) ? new ObjectResult(myworldanchor) : StatusCode(404, "Not found, could not find UUID in database.");
+            return (null != myworldanchor) ? new ObjectResult(myworldanchor) : StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
         }
 
         /// <summary>
@@ -138,8 +144,11 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult GetWorldAnchors([FromHeader] string token)
         {
-            List<WorldAnchor> worldanchorlist = _worldAnchorService.Get();
-            return new ObjectResult(worldanchorlist);
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
+            WorldAnchorsResponse response = new WorldAnchorsResponse();
+            response.WorldAnchors = _worldAnchorService.Get();
+            return new ObjectResult(response);
         }
 
 
@@ -149,14 +158,16 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult ModifyWorldAnchor([FromBody] WorldAnchor worldAnchor, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             long count = _worldAnchorService.Replace(worldAnchor);
             if (count == 0)
             {
-                return StatusCode(404, "Not found, could not find UUID in database.");
+                return StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
             }
             else
             {
-                return StatusCode(200, worldAnchor.UUID.ToString());
+                return StatusCode(200, new Success() { Message = worldAnchor.UUID.ToString() });
             }
         }
 
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldLinksImpl.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldLinksImpl.cs
index 27ce36e891b86c3a6dff3ea9f757fa3941ebc2b9..48a0b9422046f27d187b9aa23ba36eacf125a9dc 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldLinksImpl.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/ControllersImpl/WorldLinksImpl.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2024
+// Last change: September 2024
 //
 
 /*
@@ -65,6 +65,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult AddWorldLink([FromBody] WorldLink worldLink, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             if (String.IsNullOrEmpty(worldLink.UUID.ToString()))
             {
                 worldLink.UUID = Guid.NewGuid();
@@ -74,13 +76,13 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                 WorldLink myworldlink = _worldLinkService.Create(worldLink);
                 if (myworldlink == null)
                 {
-                    return StatusCode(409, "UUID already existing!");
+                    return StatusCode(409, new Error() { Message = "UUID already existing!" });
                 }
-                else return StatusCode(200, myworldlink.UUID.ToString());
+                else return StatusCode(200, new Success() { Message = myworldlink.UUID.ToString() });
             }
             catch (Exception e)
             {
-                return StatusCode(400, e.Message);
+                return StatusCode(400, new Error() { Message = e.Message});
             }
         }
 
@@ -89,8 +91,10 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult DeleteWorldLink([FromRoute(Name = "worldLinkUUID")][Required] Guid worldLinkUUID, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             long count = _worldLinkService.Remove(worldLinkUUID);
-            return (count > 0) ? new ObjectResult("ok") : StatusCode(404, "Not found, could not find UUID in database.");
+            return (count > 0) ? StatusCode(200, new Success() { Message = "ok" } ) : StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
         }
 
 
@@ -99,6 +103,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult GetWorldLinkById([FromRoute(Name = "worldLinkUUID")][Required] Guid worldLinkUUID, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             // Access other service(s)
             TrackableService _trackableService = TrackableService.Singleton as TrackableService;
             WorldAnchorService _worldAnchorService = WorldAnchorService.Singleton as WorldAnchorService;
@@ -141,7 +147,7 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                     }
                 }
             }
-            return (null != myworldlink) ? new ObjectResult(myworldlink) : StatusCode(404, "Not found, could not find UUID in database.");
+            return (null != myworldlink) ? new ObjectResult(myworldlink) : StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
         }
 
         /// <summary>
@@ -149,12 +155,16 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult GetWorldLinks([FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
+            WorldLinksResponse response = new WorldLinksResponse();
+
             // Access other service(s)
             TrackableService _trackableService = TrackableService.Singleton as TrackableService;
             WorldAnchorService _worldAnchorService = WorldAnchorService.Singleton as WorldAnchorService;
 
-            List<WorldLink> worldlinklist = _worldLinkService.Get();
-            foreach (WorldLink myworldlink in worldlinklist)
+            response.WorldLinks = _worldLinkService.Get();
+            foreach (WorldLink myworldlink in response.WorldLinks)
             {
                 // check TypeFrom
                 if (myworldlink.TypeFrom == TypeWorldStorage.TRACKABLEEnum)
@@ -191,7 +201,7 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
                     }
                 }
             }
-            return new ObjectResult(worldlinklist);
+            return new ObjectResult(response);
         }
 
 
@@ -201,14 +211,16 @@ namespace ETSI.ARF.OpenAPI.WorldStorage.Controllers
         /// </summary>
         public override IActionResult ModifyWorldLink([FromBody] WorldLink worldLink, [FromHeader] string token)
         {
+            if (!Startup.IsAccessGranted(token)) return StatusCode(511, new Error() { Message = "Invalid token!" });
+
             long count = _worldLinkService.Replace(worldLink);
             if (count == 0)
             {
-                return StatusCode(404, "Not found, could not find UUID in database.");
+                return StatusCode(404, new Error() { Message = "Not found, could not find UUID in database." });
             }
             else
             {
-                return StatusCode(200, worldLink.UUID.ToString());
+                return StatusCode(200, new Success() { Message = worldLink.UUID.ToString() });
             }
         }
     }
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/TrackableService.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/TrackableService.cs
index c7601cb22b3d1ede3738f9d8e7cecee6207b1756..3b4fb58180c0663f93d3fa42b17ab93c1fbd594a 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/TrackableService.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/TrackableService.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2022
+// Last change: June 2024
 //
 
 using System;
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldAnchorService.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldAnchorService.cs
index 2b50133bc231dd05ecf22c682875bae819f19898..78defd59775eb4e9260873b1b18d63c1264a1f28 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldAnchorService.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldAnchorService.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2022
+// Last change: June 2024
 //
 
 using System;
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldLinkService.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldLinkService.cs
index dac8abd63734ed230b56cd24ad2915ba603c9b17..7a0f1dd6871e7170afe98e26e22e238c2dadb8c6 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldLinkService.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/ETSI-ARF/Services/WorldLinkService.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2022
+// Last change: June 2024
 //
 
 using System;
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/Startup.cs b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/Startup.cs
index b2d59f7aa163a8dc47a08351cc99c1ac74395d8c..4d7bf50431faded4b46f6cbcaacf5a4214615f57 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/Startup.cs
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/Startup.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2024
+// Last change: September 2024
 //
 
 /*
@@ -23,7 +23,7 @@
  *
  * API ensuring interoperability between an authoring tool and a World Storage service
  *
- * The version of the OpenAPI document: 2.0.1
+ * The version of the OpenAPI document: 2.0.2
  * 
  * Generated by: https://openapi-generator.tech
  */
@@ -68,17 +68,18 @@ namespace ETSI.ARF.OpenAPI.WorldStorage
         /// <summary>
         /// The API version. (how to read it from the yaml?)
         /// </summary>
-        static public string apiVersion = "2.0.1";
+        static public string apiVersion = "2.0.0";
 
         /// <summary>
         /// Demo access key
         /// </summary>
-        static public string accessKey = "My!Key.ETSI";
+        static public string accessKey = "ARF";
 
         /// <summary>
         /// Demo secret key
         /// </summary>
-        static public string secretKey = "GW0Wae1t4Cs5rAqEbPYFWO9J5nSbpJXxp1F3uv0J";
+        //static public string secretKey = "GW0Wae1t4Cs5rAqEbPYFWO9J5nSbpJXxp1F3uv0J";
+        static public string secretKey = "hhi";
 
         /// <summary>
         /// Constructor
@@ -97,14 +98,16 @@ namespace ETSI.ARF.OpenAPI.WorldStorage
         /// <summary>
         /// SylR: Check if the request is authorized
         /// </summary>
-        /// <param name="security"></param>
+        /// <param name="token"></param>
         /// <returns></returns>
-        //static public bool IsAccessAllowed(ETSI.ARF.OpenAPI.WorldStorage.Models.SecureAccess security)
-        //{
-        //    Console.WriteLine(security.AccessKey);
-        //    return true;
-        //    //return (security.AccessKey == accessKey && security.SecretKey == secretKey);
-        //}
+        static public bool IsAccessGranted(string token)
+        {
+            if (token == null) return false;
+            else if (token == "dev") return true;   // developermode
+            
+            string[] t = token .Split('&');
+            return t[0] == accessKey && t[1] == secretKey;
+        }
 
         /// <summary>
         /// This method gets called by the runtime. Use this method to add services to the container.
@@ -180,7 +183,8 @@ namespace ETSI.ARF.OpenAPI.WorldStorage
             services
                 .AddControllers(options =>
                 {
-                    options.ModelBinderProviders.Insert(0, new FromJsonBinderProviderT<GetRelocalizationInformationUuidsParameterInner>());
+                    options.ModelBinderProviders.Insert(0, new FromJsonBinderProviderT<RelocObject>());
+                    options.ModelBinderProviders.Insert(0, new FromJsonBinderProviderT<UuidAndMode>());
                     options.ModelBinderProviders.Insert(0, new FromJsonBinderProviderT<Capability>());
                 });
         }
@@ -220,10 +224,10 @@ namespace ETSI.ARF.OpenAPI.WorldStorage
                     // set route prefix to openapi, e.g. http://localhost:8080/openapi/index.html
                     c.RoutePrefix = "openapi";
                     //TODO: Either use the SwaggerGen generated OpenAPI contract (generated from C# classes)
-                    //c.SwaggerEndpoint("/openapi/" + apiVersion  + "/openapi.json", "World Storage API");
+                    c.SwaggerEndpoint("/openapi/" + apiVersion  + "/openapi.json", "World Storage API");
 
                     //TODO: Or alternatively use the original OpenAPI contract that's included in the static files
-                    c.SwaggerEndpoint("/openapi-original.json", "World Storage API Original");
+                    //c.SwaggerEndpoint("/openapi-original.json", "World Storage API Original");
                 });
             app.UseRouting();
             app.UseEndpoints(endpoints =>
diff --git a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/appsettings.json b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/appsettings.json
index f2c1c69170344c6eb056decb3e52e44808e147dc..182c0310c7f82d4de46a9876debfbb4aea261a11 100644
--- a/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/appsettings.json
+++ b/server/worldstorage/src/ETSI.ARF.OpenAPI.WorldStorage/appsettings.json
@@ -5,9 +5,9 @@
     "MongoSrv": "192-168-020-029.fe.hhi.de",
     "MongoPort": "27037",
     "DatabaseName": "WorldStorageAPI",
-    "CollectionNameWorldLinks": "WorldLinks-DEV",
-    "CollectionNameTrackables": "Trackables-DEV",
-    "CollectionNameWorldAnchors": "WorldAnchors-DEV"
+    "CollectionNameWorldLinks": "WorldLinks",
+    "CollectionNameTrackables": "Trackables",
+    "CollectionNameWorldAnchors": "WorldAnchors"
   },
   "Logging": {
     "LogLevel": {