diff --git a/azure/templates/post-deploy.yml b/azure/templates/post-deploy.yml
index c06ae54..273d9f3 100644
--- a/azure/templates/post-deploy.yml
+++ b/azure/templates/post-deploy.yml
@@ -84,6 +84,8 @@ steps:
displayName: Deploy mock provider
workingDirectory: "$(Pipeline.Workspace)/s/$(SERVICE_NAME)/$(SERVICE_ARTIFACT_NAME)"
retryCountOnTaskFailure: 2
+ env:
+ PYTHONWARNINGS: "ignore::SyntaxWarning"
- bash: |
set -e
diff --git a/mock_provider/Dockerfile b/mock_provider/Dockerfile
index e155af5..ec9f8bc 100644
--- a/mock_provider/Dockerfile
+++ b/mock_provider/Dockerfile
@@ -19,4 +19,4 @@ COPY --from=0 /specification /usr/src/prism/packages/cli/gp-connect-user-permi
COPY --from=0 /updated-spec.json /usr/src/prism/packages/cli/gp-connect-user-permissions/specification/gp-connect-user-permissions.json
#Running command of mock with OAS file
-CMD ["mock" , "-h", "0.0.0.0", "-p" ,"9000" ,"gp-connect-user-permissions/specification/gp-connect-user-permissions.json"]
+CMD ["mock" , "-h", "0.0.0.0", "-p" ,"9000" , "--multiprocess=false", "gp-connect-user-permissions/specification/gp-connect-user-permissions.json"]
diff --git a/proxies/live/apiproxy/policies/AM-Enable-DelegatedAccess.xml b/proxies/live/apiproxy/policies/AM-Enable-DelegatedAccess.xml
new file mode 100644
index 0000000..b9863b0
--- /dev/null
+++ b/proxies/live/apiproxy/policies/AM-Enable-DelegatedAccess.xml
@@ -0,0 +1,9 @@
+
+
+ AM-Enable-DelegatedAccess
+
+ delegatedaccess.enabled
+ true
+
+ true
+
\ No newline at end of file
diff --git a/proxies/live/apiproxy/policies/FlowCallout.CompositeTokenCheckOptIN.xml b/proxies/live/apiproxy/policies/FlowCallout.CompositeTokenCheckOptIN.xml
new file mode 100644
index 0000000..7e04d6d
--- /dev/null
+++ b/proxies/live/apiproxy/policies/FlowCallout.CompositeTokenCheckOptIN.xml
@@ -0,0 +1,7 @@
+
+
+ FlowCallout.CompositeTokenCheckOptIN
+
+
+ CompositeTokenCheckOptIN
+
\ No newline at end of file
diff --git a/proxies/live/apiproxy/policies/JavaScript.ValidateNHSNumber.xml b/proxies/live/apiproxy/policies/JavaScript.ValidateNHSNumber.xml
new file mode 100644
index 0000000..c9ae9d0
--- /dev/null
+++ b/proxies/live/apiproxy/policies/JavaScript.ValidateNHSNumber.xml
@@ -0,0 +1,5 @@
+
+
+ JavaScript.ValidateNHSNumber
+ jsc://ValidateNHSNumber.js
+
\ No newline at end of file
diff --git a/proxies/live/apiproxy/proxies/default.xml b/proxies/live/apiproxy/proxies/default.xml
index 6d8078a..3ea4ffc 100644
--- a/proxies/live/apiproxy/proxies/default.xml
+++ b/proxies/live/apiproxy/proxies/default.xml
@@ -4,6 +4,16 @@
FlowCallout.GetEnvironmentKeyValueMapData
+
+ AM-Enable-DelegatedAccess
+
+
+ FlowCallout.CompositeTokenCheckOptIN
+ not (proxy.pathsuffix MatchesPath "/_ping" or proxy.pathsuffix MatchesPath "/_status")
+
+
+ JavaScript.ValidateNHSNumber
+
diff --git a/proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js b/proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js
new file mode 100644
index 0000000..e9ad9d5
--- /dev/null
+++ b/proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js
@@ -0,0 +1,40 @@
+print("nhsd.actor.nhs_number NUM : " + context.getVariable("nhsd.actor.nhs_number"));
+print("nhsd.subject.nhs_number NUM : " + context.getVariable("nhsd.subject.nhs_number"));
+
+var httpverb = context.getVariable("request.verb");
+var actorNHS = context.getVariable("nhsd.actor.nhs_number");
+if (httpverb == 'GET') {
+ var queryNHSNumber = context.getVariable("request.queryparam.patientNHSNumber");
+ print("queryNHSNumber :" +queryNHSNumber);
+ if (queryNHSNumber) {
+ if (queryNHSNumber !== actorNHS) {
+ print("NHS Number is not valid");
+ }
+ }
+ else {
+ var routeParamArray = context.getVariable("proxy.pathsuffix").split('/');
+ var routeNHSNumber = routeParamArray[routeParamArray.length - 1];
+ print("routeNHSNumber :" +routeNHSNumber);
+ if (routeNHSNumber && routeNHSNumber !== actorNHS){
+ print("NHS Number is not valid");
+ }
+ }
+}
+else {
+ if(httpverb == 'POST') {
+ var reqContent = context.getVariable("request.content");
+ var jsonContent = JSON.parse(reqContent);
+ var postNHSnumber = null;
+ for (var i = 0; i < jsonContent.parameter.length; i++) {
+ var p = jsonContent.parameter[i];
+ if ( p.name === "patientNHSNumber" && p.valueIdentifier && p.valueIdentifier.value) {
+ postNHSnumber = p.valueIdentifier.value;
+ break;
+ }
+ }
+ print("postNHSnumber :" +postNHSnumber);
+ if (postNHSnumber && postNHSnumber !== actorNHS){
+ print("NHS Number is not valid");
+ }
+ }
+}
\ No newline at end of file