diff --git a/mappings/on_update.jsonata b/mappings/on_update.jsonata
new file mode 100644
index 0000000000000000000000000000000000000000..f737ae9641b70aa39621bd5a99124feafb4b6202
--- /dev/null
+++ b/mappings/on_update.jsonata
@@ -0,0 +1,60 @@
+{
+    "data":$.responses.{
+    "context":context,
+    "message":{
+       "orderId":message.order.id,
+       "provider":{
+                "id":message.order.provider.id,
+                "name":message.order.provider.descriptor.name,
+                "short_desc":message.order.provider.descriptor.short_desc,
+                "long_desc":message.order.provider.descriptor.long_desc,
+                "rating":message.order.provider.rating,
+                "images":message.order.provider.descriptor.images.{
+                    "url":url,
+                    "size_type":size_type
+                }[]
+            },
+               "items":message.order.items.{
+                "id":id,
+                "name":descriptor.name,
+                "code":descriptor.code,
+                "short_desc":descriptor.short_desc,
+                "long_desc":descriptor.long_desc,
+                "price": price,
+                "rating": rating,
+                "rateable": rateable,
+                "time": time,
+                "quantity": quantity,
+                "categories": $map(
+                        $filter(%.provider.categories, function($category) { $boolean($category.id in category_ids)}),
+                        function($category) {
+                            { "id": $category.id, "name": $category.descriptor.name, "code": $category.descriptor.code }
+                        }
+                    )[],
+                    "locations": $map(
+                        $filter(%.provider.locations, function($location) { $boolean($location.id in location_ids)}),
+                            function($location) { 
+                                {
+                                    "id": $location.id,
+                                    "city": $location.city.name,
+                                    "state": $location.state.name,
+                                    "country": $location.country.name
+                                }
+                            }
+                        )[],
+                        "tags": tags.{
+                        "code": descriptor.code,
+                        "name": descriptor.name,
+                        "display": display,
+                        "list": list.{ "code": descriptor.code, "name": descriptor.name, "value": value }[]
+                    }[]
+            },
+                "fulfillments": message.order.fulfillments,
+                "quote": message.order.quote,
+                "billing": message.order.billing,
+                "payments": message.order.payments,
+                "cancellation_terms": message.order.cancellation_terms
+        }
+
+    }[]
+}
diff --git a/mappings/update.jsonata b/mappings/update.jsonata
new file mode 100644
index 0000000000000000000000000000000000000000..ce26b706c700e4fb6225cf33cfcbb99ed612ab70
--- /dev/null
+++ b/mappings/update.jsonata
@@ -0,0 +1,11 @@
+$.data.{
+    "context":$context(context, $action),
+    "message":{
+        "order":{
+            "order_id":orderId,
+            "fulfillments":updateDetails.fulfillments,
+            "billing":updateDetails.billing
+        },
+        "update_target":updateDetails.updateTarget
+    }
+}[]
diff --git a/src/gcl/gcl.controller.ts b/src/gcl/gcl.controller.ts
index 6e66375bfe6d80f0967d4accf81b73627b12f4a8..f1c364cbde9182465e527bf7e6b4fcca1f9afcbe 100644
--- a/src/gcl/gcl.controller.ts
+++ b/src/gcl/gcl.controller.ts
@@ -48,4 +48,10 @@ export class GCLController {
         const statusResult = await this.service.cancel(body);
         return statusResult;
     }
+
+    @httpPost('update')
+    public async update(@requestBody() body: any): Promise<any> {
+        const updateResult = await this.service.update(body);
+        return updateResult;
+    }
 }
diff --git a/src/gcl/gcl.service.ts b/src/gcl/gcl.service.ts
index 0131812e17dbef0366ebea4701805ae469e11b71..45e263a7948c3945fc66012a8406b88c771c878b 100644
--- a/src/gcl/gcl.service.ts
+++ b/src/gcl/gcl.service.ts
@@ -1,7 +1,6 @@
 import { inject, injectable } from "inversify";
 import { TLService } from "../tl/tl.service";
 import { PSClientService } from "../psclient/psclient.service";
-import data from '../../data.json';
 
 @injectable()
 export class GCLService {
@@ -67,4 +66,12 @@ export class GCLService {
 
         return response;
     }
+
+    async update(body: any) {
+        const payload = await this.tlService.transform(body, "update");
+        const psResponse = await this.psClientService.postMany(payload);
+        const response = await this.tlService.transform(psResponse, "on_update");
+
+        return response;
+    }
 }