Bläddra i källkod

update : updated the server to reflect existing server state

Rizalul Fiqri 5 dagar sedan
förälder
incheckning
217c6a56ab
33 ändrade filer med 2002 tillägg och 494 borttagningar
  1. 56 54
      Makefile
  2. 96 0
      ace_proxy.js
  3. 38 0
      btn-middleware/QueueManager/BDSBROKER/queue.mqsc
  4. 2 1
      btn-middleware/QueueManager/ISOBROKER/queue.mqsc
  5. 18 1
      btn-middleware/QueueManager/PAYBROKER/queue.mqsc
  6. 5 0
      btn-middleware/QueueManager/SVCBROKER/queue.mqsc
  7. BIN
      btn-middleware/bar/BDSBROKER/BDSCORERPG1/BDS_DUMMY_CORE_RPG.bar
  8. BIN
      btn-middleware/bar/BDSBROKER/BDSCORERPG1/DUMMY_SERVER_RPG.bar
  9. BIN
      btn-middleware/bar/BDSBROKER/BDS_BILLPAYMENT/BDS_BP_RA-67.bar
  10. BIN
      btn-middleware/bar/BDSBROKER/BDS_BILLPAYMENT/BDS_LIBRARY_ESSENTIALS.bar
  11. BIN
      btn-middleware/bar/BDSBROKER/BDS_MT/BDS_LIBRARY_ESSENTIALS.bar
  12. BIN
      btn-middleware/bar/BDSBROKER/BDS_VP/BDS_VP_RA.bar
  13. 0 0
      btn-middleware/bar/BDSBROKER/BDS_VP_backup/ACE_DLIB.bar
  14. 0 0
      btn-middleware/bar/BDSBROKER/BDS_VP_backup/BDS_DLIB.bar
  15. 0 0
      btn-middleware/bar/BDSBROKER/BDS_VP_backup/BDS_VP_RA-QA.properties
  16. BIN
      btn-middleware/bar/BDSBROKER/BDS_VP_backup/BDS_VP_RA.bar
  17. BIN
      btn-middleware/bar/SVCBROKER/GENERICRA/ACE_DLIB.bar
  18. BIN
      btn-middleware/bar/SVCBROKER/GENERICRA/MDW_GATEWAY_APP-2.bar
  19. BIN
      btn-middleware/bar/SVCBROKER/SVCLOGDB/SVC_LOG.bar
  20. 10 8
      btn-middleware/config.yaml
  21. BIN
      btn-middleware/db2_cli_odbc_driver/odbc_cli/clidriver/cfgcache/conlic.bin
  22. 1 1
      btn-middleware/dummy-java
  23. 65 0
      btn-middleware/dummy-rest/dummyVASKOM.js
  24. 152 0
      btn-middleware/dummy-ws/dummyBPJSKes.js
  25. 145 0
      btn-middleware/dummy-ws/dummyBPJSTK.js
  26. 169 0
      btn-middleware/dummy-ws/dummyBPJSTKINDV.js
  27. 456 0
      btn-middleware/dummy-ws/dummyMPN.js
  28. 76 0
      btn-middleware/dummy-ws/dummyspp0037.js
  29. 22 8
      btn-middleware/init.sh
  30. 241 231
      docker-compose.yaml
  31. 194 190
      mwconfig/migration/MWCONFIG_INIT_BIFAST.sql
  32. 167 0
      mwconfig/migration/MWCONFIG_INIT_FNTCONN.sql
  33. 89 0
      nginx.conf

+ 56 - 54
Makefile

@@ -1,54 +1,56 @@
-DOCKER_REGISTRY=docker.senomas.com
-SHELL=/bin/bash
-COMPOSE_HTTP_TIMEOUT=900
-.PHONY: FORCE
-
-init:
-	$(call healty, openldap)
-	$(call healty, mwconfig)
-	$(call healty, mwlog)
-	$(call healty, mwapp)
-	$(call healty, was)
-	$(call exec, was, 'sh /home/was/script/install.sh')
-
-down:
-	docker compose down -v --remove-orphans
-
-openldap-init:
-	@make -C openldap
-	
-ace:
-	docker compose up -d mwconfig mwlog
-
-	@echo "\033[48;5;202;38;5;15mWaiting mwconfig mwlog to be healthy...\033[0m"
-	@until [ $$(docker compose ps -q mwconfig | xargs docker inspect -f '{{.State.Health.Status}}') = "healthy" ] \
-		&& [ $$(docker compose ps -q mwlog | xargs docker inspect -f '{{.State.Health.Status}}') = "healthy" ]; do \
-		sleep 1; \
-	done
-	# docker compose logs mwconfig | grep -B 3 -A 2 'SQL0206N'
-	docker compose up -d btn-middleware
-	# docker compose logs -f --no-log-prefix mwconfig
-	docker exec -it btn-middleware bash -l
-
-ace-terminal:
-	docker exec -it btn-middleware bash -l
-
-ace-down:
-	docker compose down mwconfig --remove-orphans
-	docker compose down mwlog --remove-orphans
-	docker compose down btn-middleware --remove-orphans
-
-	
-
-define healty
-	@docker compose up -d $(1)
-	@echo -e "\033[48;5;202;38;5;15mWaiting $(1) to be healthy...\033[0m"
-	@until [ $$(docker compose ps -q $(1) \
-		| xargs docker inspect -f '{{.State.Health.Status}}') = "healthy" ]; do \
-		sleep 1; \
-	done
-endef
-
-define exec
-	@docker exec $(1) bash -c $(2)
-endef
+DOCKER_REGISTRY=docker.senomas.com
+SHELL=/bin/bash
+COMPOSE_HTTP_TIMEOUT=900
+.PHONY: FORCE
+
+init:
+	$(call healty, openldap)
+	$(call healty, mwconfig)
+	$(call healty, mwlog)
+	$(call healty, mwapp)
+	$(call healty, was)
+	$(call exec, was, 'sh /home/was/script/install.sh')
+
+down:
+	docker compose down -v --remove-orphans
+
+openldap-init:
+	@make -C openldap
+	
+ace:
+	docker compose up -d mwconfig mwlog
+
+	@echo "\033[48;5;202;38;5;15mWaiting mwconfig mwlog to be healthy...\033[0m"
+	@until [ $$(docker compose ps -q mwconfig | xargs docker inspect -f '{{.State.Health.Status}}') = "healthy" ] \
+		&& [ $$(docker compose ps -q mwlog | xargs docker inspect -f '{{.State.Health.Status}}') = "healthy" ]; do \
+		sleep 1; \
+	done
+	# docker compose logs mwconfig | grep -B 3 -A 2 'SQL0206N'
+	docker compose up -d btn-middleware
+	docker compose up -d ace_proxy
+	# docker compose logs -f --no-log-prefix mwconfig
+	docker logs -f btn-middleware
+
+ace-terminal:
+	docker exec -it btn-middleware bash -l
+
+ace-down:
+	docker compose down mwconfig --remove-orphans
+	docker compose down mwlog --remove-orphans
+	docker compose down btn-middleware --remove-orphans
+	docker compose down ace_proxy --remove-orphans
+
+	
+
+define healty
+	@docker compose up -d $(1)
+	@echo -e "\033[48;5;202;38;5;15mWaiting $(1) to be healthy...\033[0m"
+	@until [ $$(docker compose ps -q $(1) \
+		| xargs docker inspect -f '{{.State.Health.Status}}') = "healthy" ]; do \
+		sleep 1; \
+	done
+endef
+
+define exec
+	@docker exec $(1) bash -c $(2)
+endef

+ 96 - 0
ace_proxy.js

@@ -0,0 +1,96 @@
+const http = require('http');
+
+const targetPorts = [4534, 4474, 4454, 4494];
+
+targetPorts.forEach((targetPort) => {
+  const proxyPort = parseInt(`${targetPort}5`);
+
+  const server = http.createServer(async (req, res) => {
+    // Construct the full URL using the host header
+    const host = req.headers.host || 'localhost';
+    const url = new URL(req.url, `http://${host}`);
+    const target = `http://localhost:${targetPort}${url.pathname}${url.search}`;
+    
+    console.log(`\n[INCOMING] ${req.method} ${url.pathname}`);
+    
+    // 1. ECLIPSE TO ACE: Intercept headers and rewrite (e.g., 44545 -> 4454)
+    const aceHeaders = new Headers();
+    for (const [key, value] of Object.entries(req.headers)) {
+      const strValue = String(value);
+      const modifiedValue = strValue.replaceAll(`${targetPort}5`, targetPort.toString());
+      aceHeaders.set(key, modifiedValue);
+      
+      if (strValue !== modifiedValue) {
+        console.log(`  -> [TO ACE] Modified Header '${key}': sent as ${modifiedValue}`);
+      }
+    }
+
+    // Node.js streams the request body, so we need to buffer it manually if it exists
+    let reqBody;
+    if (req.method !== "GET" && req.method !== "HEAD") {
+      const chunks = [];
+      for await (const chunk of req) {
+        chunks.push(chunk);
+      }
+      reqBody = Buffer.concat(chunks);
+    }
+
+    const init = {
+      method: req.method,
+      headers: aceHeaders,
+      ...(reqBody && { body: reqBody })
+    };
+
+    try {
+      const response = await fetch(target, init);
+      console.log(`[ACE RESPONDED] Status: ${response.status}`);
+      
+      // Transfer headers to the Node response
+      response.headers.forEach((value, key) => {
+        // Drop content-length as our payload modification will change the size
+        if (key.toLowerCase() !== "content-length") {
+          res.setHeader(key, value);
+        }
+      });
+      res.statusCode = response.status;
+      res.statusMessage = response.statusText;
+
+      // 2. ACE TO ECLIPSE: Intercept JSON payload and rewrite (e.g., 4454 -> 44545)
+      const contentType = response.headers.get("content-type") || "";
+      
+      if (contentType.includes("application/json") || contentType.includes("text/")) {
+        let bodyText = await response.text();
+        
+        // THE PROOF: Log exactly what ACE sends back BEFORE we touch it
+        console.log(`  -> [RAW ACE RESPONSE]: ${bodyText.substring(0, 250)}...`);
+        
+        if (bodyText.includes(targetPort.toString())) {
+          console.log(`  -> [INTERCEPT] Found port ${targetPort}. Rewriting to ${targetPort}5...`);
+          
+          bodyText = bodyText.replaceAll(`localhost:${targetPort}`, `localhost:${targetPort}5`);
+          bodyText = bodyText.replaceAll(`127.0.0.1:${targetPort}`, `127.0.0.1:${targetPort}5`);
+          
+          // Log the payload AFTER the rewrite to confirm the change
+          console.log(`  -> [MODIFIED PAYLOAD]: ${bodyText.substring(0, 250)}...`);
+        }
+        
+        res.end(bodyText);
+      } else {
+        // If it's an image, binary file, or other non-text format, handle it gracefully
+        const arrayBuffer = await response.arrayBuffer();
+        res.end(Buffer.from(arrayBuffer));
+      }
+
+    } catch (err) {
+      console.error(`[ERROR]`, err);
+      res.writeHead(502);
+      res.end("Proxy Error");
+    }
+  });
+
+  server.listen(proxyPort, () => {
+    console.log(`Listening on ${proxyPort} -> Forwarding to ${targetPort}`);
+  });
+});
+
+console.log(`2-Way Proxy Running. Check the terminal for RAW payload logs...`);

+ 38 - 0
btn-middleware/QueueManager/BDSBROKER/queue.mqsc

@@ -29,6 +29,7 @@ DEFINE QLOCAL(BDS_BP.ISO_PAY_SPP) REPLACE
 DEFINE QLOCAL(BDS_BIF_RPG_REPLY) REPLACE
 DEFINE QLOCAL(BDS_MP_SPP_RPG_REPLY) REPLACE
 DEFINE QLOCAL(BIFAST.CR_TF) REPLACE
+DEFINE QLOCAL(BIFAST.INQ_CREDIT_ACC) REPLACE
 DEFINE QLOCAL(BDS_BP.WS_INQ_ASABRI) REPLACE
 DEFINE QLOCAL(BDS_BP.WS_PAY_ASABRI) REPLACE
 DEFINE QLOCAL(BDS_BP.ISO_INQ_PGN_REPLY) REPLACE
@@ -53,7 +54,44 @@ DEFINE QLOCAL(BDS_BP_SMMPTN_RPG_REPLY) REPLACE
 DEFINE QLOCAL(BDS_BP.WS_INQ_UTBK) REPLACE
 DEFINE QLOCAL(BDS_BP.WS_PAY_UTBK) REPLACE
 DEFINE QLOCAL(BDS_BP_UTBK_RPG_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.WS_INQ_BPJSKES_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.WS_PAY_BPJSKES_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.WS_INQ_BPJSTK_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.WS_PAY_BPJSTK_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.WS_INQ_BPJSTKINDV_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.WS_PAY_BPJSTKINDV_REPLY) REPLACE
+DEFINE QLOCAL(BDS_MP_BPJSKES_RPG_REPLY) REPLACE
+DEFINE QLOCAL(BDS_MP_BPJSTK_RPG_REPLY) REPLACE
+DEFINE QLOCAL(BDS_MP_BPJSTKINDV_RPG_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP_RPG_REPLY) REPLACE
+DEFINE QLOCAL(BACKEND_SOAP_REPLY_PAYDJP) REPLACE
+DEFINE QLOCAL(BACKEND_SOAP_REPLY_INQDJP) REPLACE
+DEFINE QLOCAL(BDS_VP.BPJS_KES) REPLACE
+DEFINE QLOCAL(BDS_VP_PGN_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_PGN_OUT) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJS_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJS_OUT) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJSKES_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJSTK_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJSTKINDV_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJSKES_OUT) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJSTK_OUT) REPLACE
+DEFINE QLOCAL(BDS_VP_BPJSTKINDV_OUT) REPLACE
+
+DEFINE QLOCAL(BDS_VP_PLNPREP_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_PLNPOST_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_PLNPREP_OUT) REPLACE
+DEFINE QLOCAL(BDS_VP_PLNPOST_OUT) REPLACE
+
+DEFINE QLOCAL(BDS_VP_TELKOM_IN) REPLACE
+DEFINE QLOCAL(BDS_VP_TELKOM_OUT) REPLACE
+
+DEFINE QLOCAL(BDS_MP_TELKOM_RPG_REPLY) REPLACE
+DEFINE QLOCAL(BDS_BP.ISO_PAY_TELKOM_FNT_CONN_REPLY) REPLACE
+
+DEFINE QLOCAL(BDS_VP.BPJS_KES_IN) REPLACE
 DEFINE QREMOTE(BP.WS.PAYMENT.COREFAILEREV.COREREPLY) RNAME(BP.WS.PAYMENT.COREFAILEREV.COREREPLY) RQMNAME(PAYBROKER.QM) XMITQ(PAYBROKER.QM_TRAN)
+DEFINE QREMOTE(FDS_REQ_TOKEN_MANUAL) RNAME(FDS_REQ_TOKEN_MANUAL) RQMNAME(SVCBROKER.QM) XMITQ(SVCBROKER.QM_TRAN)
 DEFINE QREMOTE(BP.WS.PAYMENT.COREREPLY) RNAME(BP.WS.PAYMENT.COREREPLY) RQMNAME(PAYBROKER.QM) XMITQ(PAYBROKER.QM_TRAN)
 DEFINE QREMOTE(BP.WS.PAYMENT.REV.COREREPLY) RNAME(BP.WS.PAYMENT.REV.COREREPLY) RQMNAME(PAYBROKER.QM) XMITQ(PAYBROKER.QM_TRAN)
 DEFINE QREMOTE(BP.WS.INQUIRY.IN) RNAME(BP.WS.INQUIRY.IN) RQMNAME(PAYBROKER.QM) XMITQ(PAYBROKER.QM_TRAN)

+ 2 - 1
btn-middleware/QueueManager/ISOBROKER/queue.mqsc

@@ -118,4 +118,5 @@ DEFINE CHANNEL(IBB.ISO) CHLTYPE (RCVR) TRPTYPE (TCP)
 ALTER CHANNEL(IBB.ISO) CHLTYPE(RCVR) HBINT(0)
 START CHANNEL(ISO.IBB)
 
-DEFINE QREMOTE(BIFAST.CR_TF) RNAME(BIFAST.CR_TF) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BIFAST.CR_TF) RNAME(BIFAST.CR_TF) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BIFAST.INQ_CREDIT_ACC) RNAME(BIFAST.INQ_CREDIT_ACC) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE

+ 18 - 1
btn-middleware/QueueManager/PAYBROKER/queue.mqsc

@@ -282,4 +282,21 @@ DEFINE QREMOTE(BDS_BP.WS_INQ_SMMPTN) RNAME(BDS_BP.WS_INQ_SMMPTN) RQMNAME(BDSBROK
 DEFINE QREMOTE(BDS_BP.WS_PAY_SMMPTN) RNAME(BDS_BP.WS_PAY_SMMPTN) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
 
 DEFINE QREMOTE(BDS_BP.WS_INQ_UTBK) RNAME(BDS_BP.WS_INQ_UTBK) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
-DEFINE QREMOTE(BDS_BP.WS_PAY_UTBK) RNAME(BDS_BP.WS_PAY_UTBK) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BDS_BP.WS_PAY_UTBK) RNAME(BDS_BP.WS_PAY_UTBK) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+
+DEFINE QREMOTE(BDS_BP.WS_INQ_BPJSKES_REPLY) RNAME(BDS_BP.WS_INQ_BPJSKES_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BDS_BP.WS_PAY_BPJSKES_REPLY) RNAME(BDS_BP.WS_PAY_BPJSKES_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+
+DEFINE QREMOTE(BDS_BP.WS_INQ_BPJSTK_REPLY) RNAME(BDS_BP.WS_INQ_BPJSTK_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BDS_BP.WS_PAY_BPJSTK_REPLY) RNAME(BDS_BP.WS_PAY_BPJSTK_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BDS_BP.WS_INQ_BPJSTKINDV_REPLY) RNAME(BDS_BP.WS_INQ_BPJSTKINDV_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BDS_BP.WS_PAY_BPJSTKINDV_REPLY) RNAME(BDS_BP.WS_PAY_BPJSTKINDV_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+
+DEFINE QREMOTE(BACKEND_SOAP_REPLY_PAYDJP) RNAME(BACKEND_SOAP_REPLY_PAYDJP) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BACKEND_SOAP_REPLY_INQDJP) RNAME(BACKEND_SOAP_REPLY_INQDJP) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+
+DEFINE QREMOTE(BDS_VP.BPJS_KES_IN) RNAME(BDS_VP.BPJS_KES_IN) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+DEFINE QREMOTE(BDS_VP.BPJS_KES_IN) RNAME(BDS_VP.BPJS_KES_IN) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+
+DEFINE QREMOTE(BDS_BP.ISO_PAY_TELKOM_FNT_CONN_REPLY) RNAME(BDS_BP.ISO_PAY_TELKOM_FNT_CONN_REPLY) RQMNAME(BDSBROKER.QM) XMITQ(BDSBROKER.QM_TRAN) REPLACE
+

+ 5 - 0
btn-middleware/QueueManager/SVCBROKER/queue.mqsc

@@ -0,0 +1,5 @@
+DEFINE QLOCAL(LOG_DB)
+DEFINE QLOCAL(LOG_DB_ERROR)
+DEFINE QLOCAL(LOG_DB_JSON)
+DEFINE QLOCAL(LOG_DB_SOAP)
+DEFINE QLOCAL(LOG_DB_SOAP_REPLY)

BIN
btn-middleware/bar/BDSBROKER/BDSCORERPG1/BDS_DUMMY_CORE_RPG.bar


BIN
btn-middleware/bar/BDSBROKER/BDSCORERPG1/DUMMY_SERVER_RPG.bar


BIN
btn-middleware/bar/BDSBROKER/BDS_BILLPAYMENT/BDS_BP_RA-67.bar


BIN
btn-middleware/bar/BDSBROKER/BDS_BILLPAYMENT/BDS_LIBRARY_ESSENTIALS.bar


BIN
btn-middleware/bar/BDSBROKER/BDS_MT/BDS_LIBRARY_ESSENTIALS.bar


BIN
btn-middleware/bar/BDSBROKER/BDS_VP/BDS_VP_RA.bar


+ 0 - 0
btn-middleware/bar/BDSBROKER/BDS_VP/ACE_DLIB.bar → btn-middleware/bar/BDSBROKER/BDS_VP_backup/ACE_DLIB.bar


+ 0 - 0
btn-middleware/bar/BDSBROKER/BDS_VP/BDS_DLIB.bar → btn-middleware/bar/BDSBROKER/BDS_VP_backup/BDS_DLIB.bar


+ 0 - 0
btn-middleware/bar/BDSBROKER/BDS_VP/BDS_VP_RA-QA.properties → btn-middleware/bar/BDSBROKER/BDS_VP_backup/BDS_VP_RA-QA.properties


BIN
btn-middleware/bar/BDSBROKER/BDS_VP_backup/BDS_VP_RA.bar


BIN
btn-middleware/bar/SVCBROKER/GENERICRA/ACE_DLIB.bar


BIN
btn-middleware/bar/SVCBROKER/GENERICRA/MDW_GATEWAY_APP-2.bar


BIN
btn-middleware/bar/SVCBROKER/SVCLOGDB/SVC_LOG.bar


+ 10 - 8
btn-middleware/config.yaml

@@ -6,6 +6,8 @@ queue_manager:
     port: 1474
   - name: BDSBROKER.QM
     port: 1454
+  # - name: SVCBROKER.QM
+  #   port: 1494
   # - name: DUMBROKER.QM
   #   port: 1234
   # - name: ITMBROKER.QM
@@ -20,8 +22,6 @@ queue_manager:
   #   port: 1476
   # - name: POSBROKER.QM
   #   port: 1484
-  # - name: SVCBROKER.QM
-  #   port: 1494
   # - name: IVRBROKER.QM
   #   port: 1514
   # - name: FNTBROKER.QM
@@ -56,6 +56,11 @@ server_ace:
       # - PAYMDW
       # - PAYRPG1
       # - PERTAMINA
+  # - name: SVCBROKER
+  #   port: 4494
+  #   executiongroup:
+  #     - GENERICRA
+  #     - SVCLOGDB
   - name: BDSBROKER
     port: 4454
     executiongroup:
@@ -63,6 +68,7 @@ server_ace:
       - BDSLOGDB
       - BDS_BILLPAYMENT
       - BDS_MT
+      # - BDS_VP
       # - BDSCORE1
       # - BDS_OT
       # - BDS
@@ -74,9 +80,10 @@ server_ace:
       # - BDS_LN
       # - BDS_RM
       # - BDS_SY
-      # - BDS_VP
       # - BDSMDW1
       # - BDSROUTER
+      # - DOKPOK
+      # - LOSCRMS
   # - name: DUMBROKER
   #   port: 4234
   #   executiongroup:
@@ -123,11 +130,6 @@ server_ace:
   #     - POSLOGDB
   #     - POSMDW1
   #     - POSROUTER
-  # - name: SVCBROKER
-  #   port: 4494
-  #   executiongroup:
-  #     - DOKPOK
-  #     - LOSCRMS
   # - name: IVRBROKER
   #   port: 4514
   #   executiongroup:

BIN
btn-middleware/db2_cli_odbc_driver/odbc_cli/clidriver/cfgcache/conlic.bin


+ 1 - 1
btn-middleware/dummy-java

@@ -1 +1 @@
-Subproject commit 660f84a9531cc61cd073e1b734554d86d1e858d2
+Subproject commit 4eeaf039a851c9246e5cb15c6fbef47781f98721

+ 65 - 0
btn-middleware/dummy-rest/dummyVASKOM.js

@@ -0,0 +1,65 @@
+const http = require('http');
+const PORT = 7090;
+
+const server = http.createServer((req, res) => {
+  if (req.method === 'POST') {
+    let body = '';
+
+    req.on('data', chunk => {
+      body += chunk.toString();
+    });
+
+    req.on('end', () => {
+      try {
+        const parsedBody = JSON.parse(body);
+        console.log ("not parsed")
+        console.log(body)
+        console.log("parsed")
+        console.log(parsedBody)
+
+        const customMessage = {
+  "cnl": "NBDS",
+  "tno": null,
+  "data": {
+    "trxAmount": "10000",
+    "feeAmount": "0",
+    "narative": "PRIMO-9072",
+    "reffNoRev": "",
+    "accNoTo": "1601300001199",
+    "narativeExt": "",
+    "vaNo": "",
+    "invoiceNo": "",
+    "accNoFrom": "1401300014178",
+    "accPoolingFrom": "1401300014178",
+    "accNameTo": "BPG 022 KPP P SOREANG",
+    "accPoolingTo": "1601300001199",
+    "accPoolingNameTo": "RKK DJPP PUPR OPS  II",
+    "balanceTo": "83007374396"
+  },
+  "procode": "0200.000020.000001VAD",
+  "iss": "--",
+  "mid": null,
+  "exp_iso8601": "2026-06-15T16:28:25+07:00",
+  "bic": "BTNIDJA",
+  "iat": 1781515405,
+  "jti": "500540799991",
+  "tid": "99991"
+};
+
+        res.writeHead(200, { 'Content-Type': 'application/json' });
+        res.end(JSON.stringify(customMessage));
+      } catch (error) {
+        res.writeHead(400, { 'Content-Type': 'application/json' });
+        res.end(JSON.stringify({ error: "Invalid JSON" }));
+      }
+    });
+  } else {
+    res.writeHead(405, { 'Content-Type': 'application/json' });
+    res.end(JSON.stringify({ error: "Only POST allowed" }));
+  }
+});
+
+server.listen(PORT, () => {
+  console.log(`Server running at http://localhost:${PORT}/`);
+});
+

+ 152 - 0
btn-middleware/dummy-ws/dummyBPJSKes.js

@@ -0,0 +1,152 @@
+const http = require('http');
+
+const server = http.createServer((req, res) => {
+    let body = '';
+    let hasInquiry = false;
+    let hasPayment = false;
+
+    req.on('data', (chunk) => {
+        body += chunk;
+    });
+
+    req.on('end', () => {
+        hasInquiry = /<(\w+:)?Inquiry\b/.test(body);
+        hasPayment = /<(\w+:)?Payment\b/.test(body);
+
+const regeXbillkey1 = /<NS1:billkey1>(.*?)<\/NS1:billkey1>/;
+const regeXbillkey2 = /<NS1:billkey2>(.*?)<\/NS1:billkey2>/;
+const regeXbillkey3 = /<NS1:billkey3>(.*?)<\/NS1:billkey3>/;
+const regeXbillkey4 = /<NS1:billkey4>(.*?)<\/NS1:billkey4>/;
+const regeXbillkey9 = /<NS1:billkey9>(.*?)<\/NS1:billkey9>/;
+const regeXbillkey10 = /<NS1:billkey10>(.*?)<\/NS1:billkey10>/;
+const regeXterminalID = /<NS1:terminalID>(.*?)<\/NS1:terminalID>/;
+const regeXidTransaksi = /<NS1:idTransaksi>(.*?)<\/NS1:idTransaksi>/;
+const regeXtransDateTime = /<NS1:transDateTime>(.*?)<\/NS1:transDateTime>/;
+const regeXbillkey5 = /<NS1:billkey5>(.*?)<\/NS1:billkey5>/;
+
+const matcHbillkey1 = body.match(regeXbillkey1);
+const matcHbillkey2 = body.match(regeXbillkey2);
+const matcHbillkey3 = body.match(regeXbillkey3);
+const matcHbillkey4 = body.match(regeXbillkey4);
+const matcHbillkey9 = body.match(regeXbillkey9);
+const matcHbillkey10 = body.match(regeXbillkey10);
+const matcHterminalID = body.match(regeXterminalID);
+const matcHidTransaksi = body.match(regeXidTransaksi);
+const matcHtransDateTime = body.match(regeXtransDateTime);
+const matcHbillkey5 = body.match(regeXbillkey5);
+
+const billkey1 = matcHbillkey1 ? matcHbillkey1[1] : null;
+const billkey2 = matcHbillkey2 ? matcHbillkey2[1] : null;
+const billkey3 = matcHbillkey3 ? matcHbillkey3[1] : null;
+const billkey4 = matcHbillkey4 ? matcHbillkey4[1] : null;
+const billkey9 = matcHbillkey9 ? matcHbillkey9[1] : null;
+const billkey10 = matcHbillkey10 ? matcHbillkey10[1] : null;
+const terminalID = matcHterminalID ? matcHterminalID[1] : null;
+const idTransaksi = matcHidTransaksi ? matcHidTransaksi[1] : null;
+const transDateTime = matcHtransDateTime ? matcHtransDateTime[1] : null;
+const billkey5 = matcHbillkey5 ? matcHbillkey5[1] : null;
+
+        console.log("billkey3 Value:", billkey3);
+
+        let errCode = `<errorCode>00</errorCode>`
+        let errMessage = `<errorDescription>success</errorDescription>`
+        if (billkey3 == '88888888') {
+            errCode = `<errorCode>01</errorCode>`
+            errMessage = `<errorDescription>Invalid virtual account number.</errorDescription>`
+        }  
+
+        if (req.url === '/dummy-bpjskes' && req.method === 'POST') {
+
+            const xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <soap:Body>
+    <InquiryResponse xmlns="http://BTN-BPJSKES/">
+      <InquiryResult>
+        <billinfo1>`+billkey1+`</billinfo1>
+        <billinfo2>`+billkey2+`</billinfo2>
+        <billinfo3>`+billkey3+`</billinfo3>
+        <billinfo4>`+billkey4+`</billinfo4>
+        <billinfo5>`+billkey5+`</billinfo5>
+        <billinfo6>1-H A AZIZ MACHMUD FA</billinfo6>
+        <billinfo7>PANGKAL PINANG</billinfo7>
+        <billinfo8>4C1E89221DDC2017</billinfo8>
+        <billinfo9>`+billkey9+`</billinfo9>
+        <billinfo10>`+billkey10+`</billinfo10>
+        <billinfo11>0602</billinfo11>
+        <billinfo12/>
+        <totalAmount>13023415</totalAmount>
+        <terminalID>`+terminalID+`</terminalID>
+        <idTransaksi>`+idTransaksi+`</idTransaksi>
+        <transDateTime>`+transDateTime+`</transDateTime>
+        <billDetails/>
+        <status>
+          <Status>
+            <isError>false</isError>
+            <errorCode>00</errorCode>
+            <errorDescription>success</errorDescription>
+          </Status>
+        </status>
+      </InquiryResult>
+    </InquiryResponse>
+  </soap:Body>
+</soap:Envelope>`;
+
+            const xmlPaymentResponse = `<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <soap:Body>
+    <PaymentResponse xmlns="http://BTN-BPJSKES/">
+      <PaymentResult>
+        <billinfo1/>
+        <billinfo2/>
+        <billinfo3/>
+        <billinfo4/>
+        <billinfo5/>
+        <billinfo6/>
+        <billinfo7/>
+        <billinfo8/>
+        <billinfo9/>
+        <billinfo10/>
+        <billinfo11/>
+        <billinfo12/>
+        <totalAmount>0</totalAmount>
+        <terminalID/>
+        <idTransaksi/>
+        <transDateTime/>
+        <billDetails/>
+        <status>
+          <Status>
+            <isError>false</isError>`+
+            errCode+
+            errMessage+`
+          </Status>
+        </status>
+      </PaymentResult>
+    </PaymentResponse>
+  </soap:Body>
+</soap:Envelope>`;
+
+            if (hasInquiry) {
+                res.writeHead(200, { 'Content-Type': 'text/xml; charset=utf-8' });
+                res.end(xmlInquiryResponse);
+            } else if (hasPayment) {
+                res.writeHead(200, { 'Content-Type': 'text/xml; charset=utf-8' });
+                res.end(xmlPaymentResponse);
+            } else {
+                res.writeHead(400, { 'Content-Type': 'text/plain' });
+                res.end('Bad Request: No Inquiry or Payment action found');
+            }
+
+        } else {
+            res.writeHead(404, { 'Content-Type': 'text/plain' });
+            res.end('Not found');
+        }
+    });
+});
+
+server.listen(3093, () => {
+    console.log('SOAP dummy BPJS Kesehatan running at http://localhost:3016/dummy-bpjskes');
+});

+ 145 - 0
btn-middleware/dummy-ws/dummyBPJSTK.js

@@ -0,0 +1,145 @@
+const http = require('http');
+
+const server = http.createServer((req, res) => {
+    let body = '';
+    let hasInquiry = false;
+    let hasPayment = false;
+
+    req.on('data', (chunk) => {
+        body += chunk;
+    });
+
+    req.on('end', () => {
+        hasInquiry = /<(\w+:)?Inquiry\b/.test(body);
+        hasPayment = /<(\w+:)?Payment\b/.test(body);
+
+const regeXbillkey1 = /<NS1:billkey1>(.*?)<\/NS1:billkey1>/;
+const regeXbillkey2 = /<NS1:billkey2>(.*?)<\/NS1:billkey2>/;
+const regeXbillkey3 = /<NS1:billkey3>(.*?)<\/NS1:billkey3>/;
+const regeXbillkey4 = /<NS1:billkey4>(.*?)<\/NS1:billkey4>/;
+const regeXbillkey5 = /<NS1:billkey5>(.*?)<\/NS1:billkey5>/;
+const regeXbillkey6 = /<NS1:billkey6>(.*?)<\/NS1:billkey6>/;
+const regeXbillkey7 = /<NS1:billkey7>(.*?)<\/NS1:billkey7>/;
+const regeXbillkey8 = /<NS1:billkey8>(.*?)<\/NS1:billkey8>/;
+const regeXbillkey9 = /<NS1:billkey9>(.*?)<\/NS1:billkey9>/;
+const regeXbillkey10 = /<NS1:billkey10>(.*?)<\/NS1:billkey10>/;
+const regeXterminalID = /<NS1:terminalID>(.*?)<\/NS1:terminalID>/;
+const regeXidTransaksi = /<NS1:idTransaksi>(.*?)<\/NS1:idTransaksi>/;
+const regeXtransDateTime = /<NS1:transDateTime>(.*?)<\/NS1:transDateTime>/;
+
+const matcHbillkey1 = body.match(regeXbillkey1);
+const matcHbillkey2 = body.match(regeXbillkey2);
+const matcHbillkey3 = body.match(regeXbillkey3);
+const matcHbillkey4 = body.match(regeXbillkey4);
+const matcHbillkey5 = body.match(regeXbillkey5);
+const matcHbillkey6 = body.match(regeXbillkey6);
+const matcHbillkey7 = body.match(regeXbillkey7);
+const matcHbillkey8 = body.match(regeXbillkey8);
+const matcHbillkey9 = body.match(regeXbillkey9);
+const matcHbillkey10 = body.match(regeXbillkey10);
+const matcHterminalID = body.match(regeXterminalID);
+const matcHidTransaksi = body.match(regeXidTransaksi);
+const matcHtransDateTime = body.match(regeXtransDateTime);
+
+const billkey1 = matcHbillkey1 ? matcHbillkey1[1] : null;
+const billkey2 = matcHbillkey2 ? matcHbillkey2[1] : null;
+const billkey3 = matcHbillkey3 ? matcHbillkey3[1] : null;
+const billkey4 = matcHbillkey4 ? matcHbillkey4[1] : null;
+const billkey5 = matcHbillkey5 ? matcHbillkey5[1] : null;
+const billkey6 = matcHbillkey6 ? matcHbillkey6[1] : null;
+const billkey7 = matcHbillkey7 ? matcHbillkey7[1] : null;
+const billkey8 = matcHbillkey8 ? matcHbillkey8[1] : null;
+const billkey9 = matcHbillkey9 ? matcHbillkey9[1] : null;
+const billkey10 = matcHbillkey10 ? matcHbillkey10[1] : null;
+const terminalID = matcHterminalID ? matcHterminalID[1] : null;
+const idTransaksi = matcHidTransaksi ? matcHidTransaksi[1] : null;
+const transDateTime = matcHtransDateTime ? matcHtransDateTime[1] : null;
+
+        let errCode = `<errorCode>00</errorCode>`
+        let errMessage = `<errorDescription>success</errorDescription>`
+        if (billkey3 == '88888888') {
+            errCode = `<errorCode>01</errorCode>`
+            errMessage = `<errorDescription>Invalid virtual account number.</errorDescription>`
+        }  
+
+        if (req.url === '/dummy-bpjstk' && req.method === 'POST') {
+
+            const xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <soap:Body>
+    <InquiryResponse xmlns="http://BTN-BPJSTK/">
+      <InquiryResult>
+        <billinfo1>`+billkey1+`</billinfo1>
+        <billinfo2>`+billkey2+`</billinfo2>
+        <billinfo3>`+billkey3+`</billinfo3>
+        <billinfo4>`+billkey4+`</billinfo4>
+        <billinfo5/>
+        <billinfo6>UIN SYARIF HIDAYATULLAH JAKARTA - PKWT</billinfo6>
+        <billinfo7>00012/2025</billinfo7>
+        <billinfo8>23199061</billinfo8>
+        <billinfo9>0</billinfo9>
+        <billinfo10>931206</billinfo10>
+        <billinfo11>JHT0751756#JKK0751756#JKM0751756</billinfo11>
+        <billinfo12>   CMS11756120496159990751756</billinfo12>
+        <addvalues>{"KODE_IURAN":"423199061000"}</addvalues>
+        <totalAmount>931206</totalAmount>
+        <billDetails>
+          <billName>JHTJKKJKMJPKJPN</billName>
+          <billAmount>850620      35815       44771       0           0           </billAmount>
+        </billDetails>
+        <status>
+          <Status>
+            <isError>false</isError>
+            <errorCode>00</errorCode>
+            <errorDescription>Sukses</errorDescription>
+          </Status>
+        </status>
+      </InquiryResult>
+    </InquiryResponse>
+  </soap:Body>
+</soap:Envelope>`;
+
+            const xmlPaymentResponse = `<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <soap:Body>
+    <PaymentResponse xmlns="http://BTN-BPJSTK/">
+      <PaymentResult>
+        <billinfo1/>
+        <billinfo2/>
+        <status>
+          <Status>
+            <isError>false</isError>`+
+            errCode+
+            errMessage+`
+          </Status>
+        </status>
+      </PaymentResult>
+    </PaymentResponse>
+  </soap:Body>
+</soap:Envelope>`;
+
+            if (hasInquiry) {
+                res.writeHead(200, { 'Content-Type': 'text/xml; charset=utf-8' });
+                res.end(xmlInquiryResponse);
+            } else if (hasPayment) {
+                res.writeHead(200, { 'Content-Type': 'text/xml; charset=utf-8' });
+                res.end(xmlPaymentResponse);
+            } else {
+                res.writeHead(400, { 'Content-Type': 'text/plain' });
+                res.end('Bad Request: No Inquiry or Payment action found');
+            }
+
+        } else {
+            res.writeHead(404, { 'Content-Type': 'text/plain' });
+            res.end('Not found');
+        }
+    });
+});
+
+server.listen(3094, () => {
+    console.log('SOAP dummy BPJS Ketenagakerjaan running at http://localhost:3017/dummy-bpjstk');
+});

+ 169 - 0
btn-middleware/dummy-ws/dummyBPJSTKINDV.js

@@ -0,0 +1,169 @@
+const http = require('http');
+
+const server = http.createServer((req, res) => {
+    let body = '';
+    let hasInquiry = false;
+    let hasPayment = false;
+
+    req.on('data', (chunk) => {
+        body += chunk;
+    });
+
+    req.on('end', () => {
+        hasInquiry = /<(\w+:)?Inquiry\b/.test(body);
+        hasPayment = /<(\w+:)?Payment\b/.test(body);
+
+const regeXbillkey1 = /<NS1:billkey1>(.*?)<\/NS1:billkey1>/;
+const regeXbillkey2 = /<NS1:billkey2>(.*?)<\/NS1:billkey2>/;
+const regeXbillkey3 = /<NS1:billkey3>(.*?)<\/NS1:billkey3>/;
+const regeXbillkey4 = /<NS1:billkey4>(.*?)<\/NS1:billkey4>/;
+const regeXbillkey5 = /<NS1:billkey5>(.*?)<\/NS1:billkey5>/;
+const regeXbillkey6 = /<NS1:billkey6>(.*?)<\/NS1:billkey6>/;
+const regeXbillkey7 = /<NS1:billkey7>(.*?)<\/NS1:billkey7>/;
+const regeXbillkey8 = /<NS1:billkey8>(.*?)<\/NS1:billkey8>/;
+const regeXbillkey9 = /<NS1:billkey9>(.*?)<\/NS1:billkey9>/;
+const regeXbillkey10 = /<NS1:billkey10>(.*?)<\/NS1:billkey10>/;
+const regeXterminalID = /<NS1:terminalID>(.*?)<\/NS1:terminalID>/;
+const regeXidTransaksi = /<NS1:idTransaksi>(.*?)<\/NS1:idTransaksi>/;
+const regeXtransDateTime = /<NS1:transDateTime>(.*?)<\/NS1:transDateTime>/;
+
+const matcHbillkey1 = body.match(regeXbillkey1);
+const matcHbillkey2 = body.match(regeXbillkey2);
+const matcHbillkey3 = body.match(regeXbillkey3);
+const matcHbillkey4 = body.match(regeXbillkey4);
+const matcHbillkey5 = body.match(regeXbillkey5);
+const matcHbillkey6 = body.match(regeXbillkey6);
+const matcHbillkey7 = body.match(regeXbillkey7);
+const matcHbillkey8 = body.match(regeXbillkey8);
+const matcHbillkey9 = body.match(regeXbillkey9);
+const matcHbillkey10 = body.match(regeXbillkey10);
+const matcHterminalID = body.match(regeXterminalID);
+const matcHidTransaksi = body.match(regeXidTransaksi);
+const matcHtransDateTime = body.match(regeXtransDateTime);
+
+const billkey1 = matcHbillkey1 ? matcHbillkey1[1] : null;
+const billkey2 = matcHbillkey2 ? matcHbillkey2[1] : null;
+const billkey3 = matcHbillkey3 ? matcHbillkey3[1] : null;
+const billkey4 = matcHbillkey4 ? matcHbillkey4[1] : null;
+const billkey5 = matcHbillkey5 ? matcHbillkey5[1] : null;
+const billkey6 = matcHbillkey6 ? matcHbillkey6[1] : null;
+const billkey7 = matcHbillkey7 ? matcHbillkey7[1] : null;
+const billkey8 = matcHbillkey8 ? matcHbillkey8[1] : null;
+const billkey9 = matcHbillkey9 ? matcHbillkey9[1] : null;
+const billkey10 = matcHbillkey10 ? matcHbillkey10[1] : null;
+const terminalID = matcHterminalID ? matcHterminalID[1] : null;
+const idTransaksi = matcHidTransaksi ? matcHidTransaksi[1] : null;
+const transDateTime = matcHtransDateTime ? matcHtransDateTime[1] : null;
+
+        let errCode = `<errorCode>00</errorCode>`
+        let errMessage = `<errorDescription>success</errorDescription>`
+        if (billkey3 == '88888888') {
+            errCode = `<errorCode>01</errorCode>`
+            errMessage = `<errorDescription>Invalid virtual account number.</errorDescription>`
+        }  
+
+        if (req.url === '/dummy-bpjstkindv' && req.method === 'POST') {
+
+            const xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <soap:Body>
+    <InquiryResponse xmlns="http://BTN-BPJSTKINDV/">
+      <InquiryResult>
+        <billinfo1>`+billkey3+`</billinfo1>
+        <billinfo2>`+billkey4+`</billinfo2>
+        <billinfo3>MARLON PORSISA</billinfo3>
+        <billinfo4>26-08-2020</billinfo4>
+        <billinfo5>02-01-2026</billinfo5>
+        <billinfo6/>
+        <billinfo7>36800</billinfo7>
+        <billinfo8>0.00</billinfo8>
+        <billinfo9>0.00</billinfo9>
+        <billinfo10>20000</billinfo10>
+        <billinfo11>6800</billinfo11>
+        <billinfo12>10000</billinfo12>
+        <billinfo13>0</billinfo13>
+        <billinfo14>7172021211910002#TLR260120000150</billinfo14>
+        <billinfo15>00136900000087</billinfo15>
+        <billinfo16>N</billinfo16>
+        <billinfo17>20260120133155</billinfo17>
+        <billinfo18>T00#JKK,JKM,JHT</billinfo18>
+        <billinfo19/>
+        <billinfo20/>
+        <totalAmount>36800</totalAmount>
+        <billDetails/>
+        <status>
+          <Status>
+            <isError>false</isError>
+            <errorCode>00</errorCode>
+            <errorDescription>Sukses</errorDescription>
+          </Status>
+        </status>
+      </InquiryResult>
+    </InquiryResponse>
+  </soap:Body>
+</soap:Envelope>`;
+
+            const xmlPaymentResponse = `<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <soap:Body>
+    <PaymentResponse xmlns="http://BTN-BPJSTKINDV/">
+      <PaymentResult>
+        <billinfo1>3275121503750001</billinfo1>
+        <billinfo2>1</billinfo2>
+        <billinfo3/>
+        <billinfo4/>
+        <billinfo5/>
+        <billinfo6>925126557881</billinfo6>
+        <billinfo7>0</billinfo7>
+        <billinfo8>0</billinfo8>
+        <billinfo9>0</billinfo9>
+        <billinfo10>0</billinfo10>
+        <billinfo11>0</billinfo11>
+        <billinfo12>0</billinfo12>
+        <billinfo13>0</billinfo13>
+        <billinfo14>3275121503750001#3275121503750001#MBK251204000152</billinfo14>
+        <billinfo15>30000100392680</billinfo15>
+        <billinfo16>N051120250401202620251204110059</billinfo16>
+        <billinfo17>20251204110109</billinfo17>
+        <billinfo18>#</billinfo18>
+        <billinfo19/>
+        <billinfo20/>
+        <totalAmount>0</totalAmount>
+        <billDetails/>
+        <status>
+          <Status>
+            <isError>false</isError>`+
+            errCode+
+            errMessage+`
+          </Status>
+        </status>
+      </PaymentResult>
+    </PaymentResponse>
+  </soap:Body>
+</soap:Envelope>`;
+
+            if (hasInquiry) {
+                res.writeHead(200, { 'Content-Type': 'text/xml; charset=utf-8' });
+                res.end(xmlInquiryResponse);
+            } else if (hasPayment) {
+                res.writeHead(200, { 'Content-Type': 'text/xml; charset=utf-8' });
+                res.end(xmlPaymentResponse);
+            } else {
+                res.writeHead(400, { 'Content-Type': 'text/plain' });
+                res.end('Bad Request: No Inquiry or Payment action found');
+            }
+
+        } else {
+            res.writeHead(404, { 'Content-Type': 'text/plain' });
+            res.end('Not found');
+        }
+    });
+});
+
+server.listen(3095, () => {
+    console.log('SOAP dummy BPJS TK Individual running at http://localhost:3095/dummy-bpjstkindv');
+});

+ 456 - 0
btn-middleware/dummy-ws/dummyMPN.js

@@ -0,0 +1,456 @@
+const http = require('http');
+
+const server = http.createServer((req, res) => {
+        let body = '';
+    let hasInquiry = false;
+    let hasPayment = true
+    req.on('data', (chunk) => {
+        body += chunk;
+    });
+    req.on('end', () => {
+        hasInquiry = /<(\w+:)?Inquiry\b/.test(body);
+        hasPayment = /<(\w+:)?Payments\b/.test(body);
+
+        const regeXpaymentCode = /<NS1:paymentCode>(.*?)<\/NS1:paymentCode>/;
+        const matcHpaymentCode = body.match(regeXpaymentCode);
+        const paymentCode = matcHpaymentCode ? matcHpaymentCode[1] : null;
+
+        let xmlInquiryResponse = 'a';
+        let xmlPaymentsResponse = 'a';
+        if (req.url === '/dummy-mpn' && req.method === 'POST') {
+            if (paymentCode != '88888888') {
+                            xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <InquiryResponse xmlns="http://btn.co.id/MPNService">
+                            <InquiryResult>
+                                <PaymentCode>820260622861293</PaymentCode>
+                                <BillingInfo1>056</BillingInfo1>
+                                <BillingInfo2>01</BillingInfo2>
+                                <BillingInfo3>430266</BillingInfo3>
+                                <BillingInfo4></BillingInfo4>
+                                <BillingInfo5></BillingInfo5>
+                                <BillingInfo6></BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode>502</BranchCode>
+                                <ChannelType>7012</ChannelType>
+                                <Currency>IDR</Currency>
+                                <Gmt>2026-06-23 15:54:37</Gmt>
+                                <LocalDateTime>2026-06-23 15:54:37</LocalDateTime>
+                                <SettlementDate>0624</SettlementDate>
+                                <SwitcherCode>171</SwitcherCode>
+                                <TerminalId>21688</TerminalId>
+                                <TerminalLocation>F02</TerminalLocation>
+                                <TransactionId>773956</TransactionId>
+                                <Amount>50000</Amount>
+                                <ResponseCode>00</ResponseCode>
+                                <CustomerName>ABDUL MALIK EFENDI</CustomerName>
+                                <Ntb></Ntb>
+                                <Ntpn></Ntpn>
+                                <Status>
+                                    <Status>
+                                        <isError>false</isError>
+                                        <errorCode>00</errorCode>
+                                        <statusDescription>Tagihan Sukses</statusDescription>                                                
+                                    </Status>                 
+                                </Status>
+                            </InquiryResult>
+                        </InquiryResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`;
+                        xmlPaymentsResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <PaymentsResponse xmlns="http://btn.co.id/MPNService">
+                            <PaymentsResult>
+                                <PaymentCode>926062310585879</PaymentCode>
+                                <BankId>520200000990</BankId>
+                                <BillingInfo1>999</BillingInfo1>
+                                <BillingInfo2>01</BillingInfo2>
+                                <BillingInfo3>960186</BillingInfo3>
+                                <BillingInfo4></BillingInfo4>
+                                <BillingInfo5></BillingInfo5>
+                                <BillingInfo6>Jl. H. R. Rasuna Said No.1, RT.1/RW.6, Guntur</BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode>999</BranchCode>
+                                <ChannelType>7015</ChannelType>
+                                <Currency>IDR</Currency>
+                                <Gmt>2026-06-23 14:51:56</Gmt>
+                                <LocalDateTime>2026-06-23 14:51:53</LocalDateTime>
+                                <SettlementDate>0623</SettlementDate>
+                                <SwitcherCode>011</SwitcherCode>
+                                <TerminalId>3000009</TerminalId>
+                                <TerminalLocation>I99</TerminalLocation>
+                                <TransactionId>001685</TransactionId>
+                                <Amount>1000000</Amount>
+                                <BillerAccountNumber>1601300020711</BillerAccountNumber>
+                                <ResponseCode>00</ResponseCode>
+                                <CustomerName>MUFID MAN</CustomerName>
+                                <Ntb>300000003125</Ntb>
+                                <Ntpn>BDCB88Q3MDT0KTGN</Ntpn>
+                                <Status>
+                                    <Status>
+                                        <isError>false</isError>
+                                        <errorCode>00</errorCode>
+                                        <statusDescription>Payment Sukses</statusDescription>                                                
+                                    </Status>                 
+                                </Status>
+                            </PaymentsResult>
+                        </PaymentsResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`;
+                
+            } else {
+                            xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <InquiryResponse xmlns="http://btn.co.id/MPNService">
+                            <InquiryResult>
+                                <PaymentCode></PaymentCode>
+                                <BillingInfo1></BillingInfo1>
+                                <BillingInfo2></BillingInfo2>
+                                <BillingInfo3></BillingInfo3>
+                                <BillingInfo4></BillingInfo4>
+                                <BillingInfo5></BillingInfo5>
+                                <BillingInfo6></BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode></BranchCode>
+                                <ChannelType></ChannelType>
+                                <Currency></Currency>
+                                <Gmt></Gmt>
+                                <LocalDateTime></LocalDateTime>
+                                <SettlementDate></SettlementDate>
+                                <SwitcherCode></SwitcherCode>
+                                <TerminalId></TerminalId>
+                                <TerminalLocation></TerminalLocation>
+                                <TransactionId></TransactionId>
+                                <Amount></Amount>
+                                <ResponseCode></ResponseCode>
+                                <CustomerName></CustomerName>
+                                <Ntb></Ntb>
+                                <Ntpn></Ntpn>
+                                <Status>
+                                    <Status>
+                                        <isError>true</isError>
+                                        <errorCode>01</errorCode>
+                                        <statusDescription>Invalid Customer Id</statusDescription>                                                
+                                    </Status>                 
+                                </Status>
+                            </InquiryResult>
+                        </InquiryResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`;
+                        xmlPaymentsResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <PaymentsResponse xmlns="http://btn.co.id/MPNService">
+                            <PaymentsResult>
+                                <PaymentCode></PaymentCode>
+                                <BankId></BankId>
+                                <BillingInfo1></BillingInfo1>
+                                <BillingInfo2></BillingInfo2>
+                                <BillingInfo3></BillingInfo3>
+                                <BillingInfo4></BillingInfo4>
+                                <BillingInfo5></BillingInfo5>
+                                <BillingInfo6></BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode></BranchCode>
+                                <ChannelType></ChannelType>
+                                <Currency></Currency>
+                                <Gmt></Gmt>
+                                <LocalDateTime></LocalDateTime>
+                                <SettlementDate></SettlementDate>
+                                <SwitcherCode></SwitcherCode>
+                                <TerminalId></TerminalId>
+                                <TerminalLocation></TerminalLocation>
+                                <TransactionId></TransactionId>
+                                <Amount></Amount>
+                                <BillerAccountNumber></BillerAccountNumber>
+                                <ResponseCode></ResponseCode>
+                                <CustomerName></CustomerName>
+                                <Ntb></Ntb>
+                                <Ntpn></Ntpn>                            
+                                <Status>
+                                    <Status>
+                                        <isError>true</isError>
+                                        <errorCode>01</errorCode>
+                                        <statusDescription>Invalid Customer Id</statusDescription>                                                
+                                    </Status>                 
+                                </Status>
+                            </PaymentsResult>
+                        </PaymentsResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`;
+            }
+            if (paymentCode.startsWith('0') || paymentCode.startsWith('1') || paymentCode.startsWith('2') || paymentCode.startsWith('3')) {
+                xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <Inquiry xmlns="http://btn.co.id/MPNService">
+                            <paymentCode>031411231406157</paymentCode>
+                            <branchCode>F86</branchCode>
+                            <channelType>7012</channelType>
+                            <gmt>2026-07-22 06:06:32</gmt>
+                            <localDateTime>2026-07-22 06:06:32</localDateTime>
+                            <settlementDate>0722</settlementDate>
+                            <currency>IDR</currency>
+                            <switcherCode>001</switcherCode>
+                            <terminalId>21342</terminalId>
+                            <terminalLocation>F86</terminalLocation>
+                            <transactionId>000001</transactionId>
+                            <billingInfo1></billingInfo1>
+                        </Inquiry>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`
+                xmlPaymentsResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <PaymentsResult xmlns="http://btn.co.id/MPNService">
+                            <PaymentCode>031411231406157</PaymentCode>
+                            <BankId>520200000990</BankId>
+                            <BillingInfo1>827882283955000</BillingInfo1>
+                            <BillingInfo2>1</BillingInfo2>
+                            <BillingInfo3></BillingInfo3>
+                            <BillingInfo4></BillingInfo4>
+                            <BillingInfo5></BillingInfo5>
+                            <BillingInfo6>7371032206720005000000-JL. MERDEKA  - KABUPATEN MA</BillingInfo6>
+                            <BillingInfo7></BillingInfo7>
+                            <BillingInfo8></BillingInfo8>
+                            <BillingInfo9></BillingInfo9>
+                            <BillingInfo10></BillingInfo10>
+                            <BranchCode>586</BranchCode>
+                            <ChannelType>7012</ChannelType>
+                            <Currency>IDR</Currency>
+                            <Gmt>2026-07-22 06:06:41</Gmt>
+                            <LocalDateTime>2026-07-22 06:06:41</LocalDateTime>
+                            <SettlementDate>0722</SettlementDate>
+                            <SwitcherCode>171</SwitcherCode>
+                            <TerminalId>21342</TerminalId>
+                            <TerminalLocation>F86</TerminalLocation>
+                            <TransactionId>638096</TransactionId>
+                            <Amount>2007687</Amount>
+                            <BillerAccountNumber>1401390005391</BillerAccountNumber>
+                            <ResponseCode>00</ResponseCode>
+                            <CustomerName>TEDY PANDY</CustomerName>
+                            <Ntb>002134200002</Ntb>
+                            <Ntpn>8F1D967R100BFE2D</Ntpn>
+                            <Status>
+                                <Status>
+                                    <isError>false</isError>
+                                    <errorCode>00</errorCode>
+                                    <statusDescription>Payment Sukses</statusDescription>
+                                </Status>
+                            </Status>
+                            <BranchId>00586</BranchId>
+                        </PaymentsResult>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`
+            } else if (paymentCode.startsWith('4') || paymentCode.startsWith('5') || paymentCode.startsWith('6')) {
+                xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <InquiryResponse xmlns="http://btn.co.id/MPNService">
+                            <InquiryResult>
+                                <PaymentCode>620191000189290</PaymentCode>
+                                <BankId>520200000990</BankId>
+                                <BillingInfo1>000000000000000</BillingInfo1>
+                                <BillingInfo2>73</BillingInfo2>
+                                <BillingInfo3>A000091909230EDH20190930</BillingInfo3>
+                                <BillingInfo4>2019-10-21</BillingInfo4>
+                                <BillingInfo5>050100</BillingInfo5>
+                                <BillingInfo6></BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode>35</BranchCode>
+                                <ChannelType>7010</ChannelType>
+                                <Currency>IDR</Currency>
+                                <Gmt>2019-10-22 08:37:21</Gmt>
+                                <LocalDateTime>2019-10-22 08:42:30</LocalDateTime>
+                                <SettlementDate>1022</SettlementDate>
+                                <SwitcherCode>031</SwitcherCode>
+                                <TerminalId>9903512</TerminalId>
+                                <TerminalLocation>C35</TerminalLocation>
+                                <TransactionId>193593</TransactionId>
+                                <Amount>576000</Amount>
+                                <ResponseCode>00</ResponseCode>
+                                <CustomerName>yanto suyanto</CustomerName>
+                                <Ntb></Ntb>
+                                <Ntpn></Ntpn>
+                                <Status>
+                                    <Status>
+                                        <isError>false</isError>
+                                        <errorCode>00</errorCode>
+                                        <statusDescription>Tagihan Sukses</statusDescription>
+                                    </Status>
+                                </Status>
+                            </InquiryResult>
+                        </InquiryResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`
+                xmlPaymentsResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <PaymentsResponse xmlns="http://btn.co.id/MPNService">
+                            <PaymentsResult>
+                                <PaymentCode>620191000189290</PaymentCode>
+                                <BankId>520200000990</BankId>
+                                <BillingInfo1>000000000000000</BillingInfo1>
+                                <BillingInfo2>73</BillingInfo2>
+                                <BillingInfo3>A000091909230EDH20190930</BillingInfo3>
+                                <BillingInfo4>2019-10-21</BillingInfo4>
+                                <BillingInfo5>050100</BillingInfo5>
+                                <BillingInfo6></BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode>35</BranchCode>
+                                <ChannelType>7010</ChannelType>
+                                <Currency>IDR</Currency>
+                                <Gmt>2019-10-22 08:37:29</Gmt>
+                                <LocalDateTime>2019-10-22 08:42:38</LocalDateTime>
+                                <SettlementDate>1022</SettlementDate>
+                                <SwitcherCode>391</SwitcherCode>
+                                <TerminalId>9903512</TerminalId>
+                                <TerminalLocation>C35</TerminalLocation>
+                                <TransactionId>835020</TransactionId>
+                                <Amount>576000</Amount>
+                                <BillerAccountNumber>1401390005391</BillerAccountNumber>
+                                <ResponseCode>00</ResponseCode>
+                                <CustomerName>YANTO SUYANTO</CustomerName>
+                                <Ntb>990351141057</Ntb>
+                                <Ntpn>50B562AF1J0SUMBA</Ntpn>
+                                <Status>
+                                    <Status>
+                                        <isError>false</isError>
+                                        <errorCode>00</errorCode>
+                                        <statusDescription>Payment Sukses</statusDescription>
+                                    </Status>
+                                </Status>
+                                <BranchId>35</BranchId>
+                            </PaymentsResult>
+                        </PaymentsResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`
+            } else {
+                xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <InquiryResponse xmlns="http://btn.co.id/MPNService">
+                            <InquiryResult>
+                                <PaymentCode>820260721428752</PaymentCode>
+                                <BillingInfo1>056</BillingInfo1>
+                                <BillingInfo2>01</BillingInfo2>
+                                <BillingInfo3>432458</BillingInfo3>
+                                <BillingInfo4></BillingInfo4>
+                                <BillingInfo5></BillingInfo5>
+                                <BillingInfo6></BillingInfo6>
+                                <BillingInfo7></BillingInfo7>
+                                <BillingInfo8></BillingInfo8>
+                                <BillingInfo9></BillingInfo9>
+                                <BillingInfo10></BillingInfo10>
+                                <BranchCode>37</BranchCode>
+                                <ChannelType>7016</ChannelType>
+                                <Currency>IDR</Currency>
+                                <Gmt>2026-07-22 15:46:31</Gmt>
+                                <LocalDateTime>2026-07-22 15:46:31</LocalDateTime>
+                                <SettlementDate>0723</SettlementDate>
+                                <SwitcherCode>171</SwitcherCode>
+                                <TerminalId>22511</TerminalId>
+                                <TerminalLocation>C37</TerminalLocation>
+                                <TransactionId>840448</TransactionId>
+                                <Amount>50000</Amount>
+                                <ResponseCode>00</ResponseCode>
+                                <CustomerName>ENDY PEBRIAN</CustomerName>
+                                <Ntb></Ntb>
+                                <Ntpn></Ntpn>
+                                <Status>
+                                    <Status>
+                                        <isError>false</isError>
+                                        <errorCode>00</errorCode>
+                                        <statusDescription>Tagihan Sukses</statusDescription>
+                                    </Status>
+                                </Status>
+                            </InquiryResult>
+                        </InquiryResponse>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`
+                xmlPaymentsResponse = `<?xml version="1.0" encoding="utf-8"?>
+                <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+                    <SOAP-ENV:Body>
+                        <PaymentsResult xmlns="http://btn.co.id/MPNService">
+                            <PaymentCode>820260721428752</PaymentCode>
+                            <BankId>520200000990</BankId>
+                            <BillingInfo1>056</BillingInfo1>
+                            <BillingInfo2>01</BillingInfo2>
+                            <BillingInfo3>432458</BillingInfo3>
+                            <BillingInfo4></BillingInfo4>
+                            <BillingInfo5></BillingInfo5>
+                            <BillingInfo6></BillingInfo6>
+                            <BillingInfo7></BillingInfo7>
+                            <BillingInfo8></BillingInfo8>
+                            <BillingInfo9></BillingInfo9>
+                            <BillingInfo10></BillingInfo10>
+                            <BranchCode>37</BranchCode>
+                            <ChannelType>7016</ChannelType>
+                            <Currency>IDR</Currency>
+                            <Gmt>2026-07-22 15:47:23</Gmt>
+                            <LocalDateTime>2026-07-22 15:47:23</LocalDateTime>
+                            <SettlementDate>0723</SettlementDate>
+                            <SwitcherCode>001</SwitcherCode>
+                            <TerminalId>22511</TerminalId>
+                            <TerminalLocation>C37</TerminalLocation>
+                            <TransactionId>640591</TransactionId>
+                            <Amount>50000</Amount>
+                            <BillerAccountNumber>1401390005391</BillerAccountNumber>
+                            <ResponseCode>00</ResponseCode>
+                            <CustomerName>ENDY PEBRIAN</CustomerName>
+                            <Ntb>002251100047</Ntb>
+                            <Ntpn>09D652G50CF7J28G</Ntpn>
+                            <Status>
+                                <Status>
+                                    <isError>false</isError>
+                                    <errorCode>00</errorCode>
+                                    <statusDescription>Payment Sukses</statusDescription>
+                                </Status>
+                            </Status>
+                            <BranchId>00037</BranchId>
+                        </PaymentsResult>
+                    </SOAP-ENV:Body>
+                </SOAP-ENV:Envelope>`
+            }
+          if(hasInquiry) {
+            res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
+            res.end(xmlInquiryResponse);
+          } else if (hasPayment) {
+            res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
+            res.end(xmlPaymentsResponse);
+          } else {
+            res.writeHead(404, { 'Content-Type': 'text/plain' });
+            res.end('Not found');
+          }
+        } else {
+          res.writeHead(404, { 'Content-Type': 'text/plain' });
+          res.end('Not found');
+        }
+    });
+});
+
+server.listen(3123, () => {
+  console.log('SOAP dummy running at http://localhost:3123/dummy-mpn');
+});
+

+ 76 - 0
btn-middleware/dummy-ws/dummyspp0037.js

@@ -0,0 +1,76 @@
+    const http = require('http');
+
+const server = http.createServer((req, res) => {
+        let body = '';
+    let hasInquiry = false;
+    let hasPayment = true
+    req.on('data', (chunk) => {
+        body += chunk;
+    });
+    req.on('end', () => {
+        hasInquiry = /<(\w+:)?Inquiry\b/.test(body);
+        hasPayment = /<(\w+:)?Payment\b/.test(body);
+        if (req.url === '/dummy-ws-spp-0037' && req.method === 'POST') {
+          const xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <SOAP-ENV:Body>
+        <InquiryResponse xmlns="http://unmul/">
+            <InquiryResult>
+                <billInfo1>2205106012</billInfo1>
+                <billInfo2>Syabana Norhayana Istiqomah</billInfo2>
+                <billInfo3>PENDIDIKAN JASMANI</billInfo3>
+                <billInfo4>KEGURUAN DAN ILMU PENDIDIKAN</billInfo4>
+                <billInfo5></billInfo5>
+                <billdetail>
+                    <billDetails>
+                        <billAmount>2000000</billAmount>
+                        <billCode></billCode>
+                        <billName>SPP/Uang Kuliah</billName>
+                        <billShortName>SPP/Uang Kuliah</billShortName>
+                        <reference1></reference1>
+                        <reference2></reference2>
+                    </billDetails>
+                </billdetail>
+                <ErrorCode>00</ErrorCode>
+                <ErrorDesc>Sukses</ErrorDesc>
+            </InquiryResult>
+        </InquiryResponse>
+    </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>`;
+        const xmlPaymentResponse = `<?xml version="1.0" encoding="utf-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <SOAP-ENV:Body>
+    <PaymentResponse xmlns="http://unmul/">
+        <PaymentResult>
+            <billInfo1></billInfo1>
+            <billInfo2></billInfo2>
+            <billInfo3></billInfo3>
+            <billInfo4></billInfo4>
+            <ErrorCode>01</ErrorCode>
+            <ErrorDesc>TestFail</ErrorDesc>
+            <tes>0</tes>
+        </PaymentResult>
+    </PaymentResponse>
+    </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>`;
+          if(hasInquiry) {
+            res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
+            res.end(xmlInquiryResponse);
+          } else if (hasPayment) {
+            res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
+            res.end(xmlPaymentResponse);
+          } else {
+            res.writeHead(404, { 'Content-Type': 'text/plain' });
+            res.end('Not found');
+          }
+        } else {
+          res.writeHead(404, { 'Content-Type': 'text/plain' });
+          res.end('Not found');
+        }
+    });
+});
+
+server.listen(3019, () => {
+  console.log('SOAP dummy running at http://localhost:3019/dummy-ws-spp-0037');
+});
+

+ 22 - 8
btn-middleware/init.sh

@@ -8,6 +8,7 @@ cmd() {
 
 cmd "java -jar /home/admmdw/dummyjava/dummy-server.jar &"
 cmd "node /home/admmdw/dummyrest/dummyFDS.js &"
+cmd "node /home/admmdw/dummyrest/dummyVASKOM.js &"
 cmd "node /home/admmdw/dummyws/dummyPemko4001.js &"
 cmd "node /home/admmdw/dummyws/dummyPemko4002.js &"
 cmd "node /home/admmdw/dummyws/dummyPemko4004.js &"
@@ -17,6 +18,8 @@ cmd "node /home/admmdw/dummyws/dummyPemko5464.js &"
 cmd "node /home/admmdw/dummyws/dummyPemko8768.js &"
 cmd "node /home/admmdw/dummyws/dummysmmptn.js &"
 cmd "node /home/admmdw/dummyws/dummyutbk.js &"
+cmd "node /home/admmdw/dummyws/dummyBPJSKes.js &"
+cmd "node /home/admmdw/dummyws/dummyspp0037.js &"
 
 export PATH=$PATH:/opt/mqm/bin
 cfg="/home/admmdw/config.yaml"
@@ -64,6 +67,9 @@ if [ "$(yq '.init' ~/config.yaml)" = "true" ]; then
 		cmd "mkdir -m 775 -p /MQHA/$broker"
 		cmd "mqsicreatebroker $broker -q ${broker}.QM -e /MQHA/$broker"
 		cmd "mqsichangeproperties $broker -b webadmin -o HTTPConnector -n port -v $port"
+		cmd "mqsisetdbparms $broker -n mq::mySecureQM -u "admmdw" -p "mdw4dmin""
+		cmd "mqsisetdbparms $broker -n odbc::MDW -u db2inst1 -p mdw4dm1n"
+		cmd "mqsisetdbparms $broker -n odbc::MWCONFIG -u db2inst1 -p mdw4dm1n"
 		cmd "mqsistart $broker"
 
 		for executiongroup in $executiongroups; do
@@ -85,16 +91,16 @@ if [ "$(yq '.init' ~/config.yaml)" = "true" ]; then
 			done
 		done
 
-		if [[ $broker == "ISOBROKER" ]]; then
-			cmd "mqsisetdbparms ISOBROKER -n mq::mySecureQM -u "admmdw" -p "mdw4dmin""
-			cmd "mqsistop ISOBROKER"
-			cmd "mqsistart ISOBROKER"
-		fi
+		# if [[ $broker == "ISOBROKER" ]]; then
+		# 	cmd "mqsisetdbparms ISOBROKER -n mq::mySecureQM -u "admmdw" -p "mdw4dmin""
+		# 	cmd "mqsistop ISOBROKER"
+		# 	cmd "mqsistart ISOBROKER"
+		# fi
 
 		if [[ $broker == "BDSBROKER" ]]; then
-			cmd "mqsisetdbparms BDSBROKER -n odbc::MDW -u db2inst1 -p mdw4dm1n"
-			cmd "mqsisetdbparms BDSBROKER -n odbc::MWCONFIG -u db2inst1 -p mdw4dm1n"
-
+			# cmd "mqsisetdbparms BDSBROKER -n odbc::MDW -u db2inst1 -p mdw4dm1n"
+			# cmd "mqsisetdbparms BDSBROKER -n odbc::MWCONFIG -u db2inst1 -p mdw4dm1n"
+			# cmd "mqsichangeproperties BDSBROKER -b httplistener -o HTTPConnector -n port -v 7093"
 			cmd "mqsichangeproperties BDSBROKER -e BDS_MT -o HTTPConnector -n ListenerPort -v 7081"
 			cmd "mqsichangeproperties BDSBROKER -e BDS_CD -o HTTPConnector -n ListenerPort -v 7082"
 			cmd "mqsichangeproperties BDSBROKER -e BDS_CF -o HTTPConnector -n ListenerPort -v 7083"
@@ -121,6 +127,14 @@ if [ "$(yq '.init' ~/config.yaml)" = "true" ]; then
 			cmd "mqsichangeproperties BDSBROKER -f -e BDS_BILLPAYMENT -o ExecutionGroup -n httpNodesUseEmbeddedListener -v true"
 			cmd "mqsistart BDSBROKER"
 		fi
+		
+		
+		if [[ $broker == "SVCBROKER" ]]; then
+			cmd "mqsichangeproperties SVCBROKER -e GENERICRA -o HTTPConnector -n ListenerPort -v 7090"
+			cmd "mqsistop SVCBROKER"
+			cmd "mqsichangeproperties SVCBROKER -f -e GENERICRA -o ExecutionGroup -n httpNodesUseEmbeddedListener -v true"
+			cmd "mqsistart SVCBROKER"
+		fi
 	done
 
 	# echo "$(sed 's/\(init:\) true/\1 false/' "$cfg")" > "$cfg"

+ 241 - 231
docker-compose.yaml

@@ -1,232 +1,242 @@
-# version: "3.9"
-
-services:
-  mwconfig:
-    restart: always
-    container_name: mwconfig
-    image: "docker.senomas.com/ibm-db2-ce-11.5.8.0:latest"
-    environment:
-      - DB2INST1_PASSWORD=mdw4dm1n
-      - DB2INSTANCE=db2inst1
-      - DBNAME=MWCONFIG
-      - LICENSE=accept
-      - SAMPLEDB=false
-    healthcheck:
-      test: >-
-        /bin/su - $$DB2INSTANCE -c 'if [[ -f /var/migrate.done ]] ; then db2 CONNECT TO
-        MWCONFIG ; else exit -1 ; fi'
-      interval: 10s
-      timeout: 5s
-      retries: 6
-      start_period: 600s
-    ports:
-      - '10501:50000'
-    privileged: true
-    networks:
-      middleware:
-        aliases:
-          - btnmdwdata
-        # ipv4_address: 10.10.10.36
-    volumes:
-      - 'mwconfig-data:/database'
-      - './mwconfig/init:/home/mwconfig/init'
-      - './mwconfig/storeprocedure:/home/mwconfig/storeprocedure'
-      - './mwconfig/migration:/home/mwconfig/migration'
-      - './mwconfig/custom:/var/custom'
-      - './mwconfig/cicd/:/var/cicd'
-      - './mwconfig/backup/:/var/backup'
-  mwlog:
-    restart: always
-    container_name: mwlog
-    image: "docker.senomas.com/ibm-db2-ce-11.5.8.0:latest"
-    environment:
-      - DB2INST1_PASSWORD=mdw4dm1n
-      - DB2INSTANCE=db2inst1
-      - DBNAME=MWLOG
-      - LICENSE=accept
-      - SAMPLEDB=false
-    healthcheck:
-      test: >-
-        /bin/su - $$DB2INSTANCE -c 'if [[ -f /var/migrate.done ]] ; then db2 CONNECT TO
-        MWLOG ; else exit -1 ; fi'
-      interval: 10s
-      timeout: 5s
-      retries: 6
-      start_period: 600s
-    ports:
-      - '10502:50000'
-    privileged: true
-    networks:
-      middleware:
-        aliases:
-          - btnmwlog
-        # ipv4_address: 10.10.10.37
-    volumes:
-      - 'mwlog-data:/database'
-      - './mwlog/init:/home/mwlog/init'
-      - './mwlog/migration:/home/mwlog/migration'
-      - './mwlog/custom:/var/custom'
-      - './mwlog/storeprocedure:/home/mwlog/storeprocedure'
-      - './mwlog/backup/:/var/backup'
-  mwapp:
-    restart: always
-    container_name: mwapp
-    image: "docker.senomas.com/ibm-db2-ce-11.5.8.0:latest"
-    environment:
-      - DB2INST1_PASSWORD=mdw4dm1n
-      - DB2INSTANCE=db2inst1
-      - DBNAME=MWAPP
-      - LICENSE=accept
-      - SAMPLEDB=false
-    healthcheck:
-      test: >-
-        /bin/su - $$DB2INSTANCE -c 'if [[ -f /var/migrate.done ]] ; then db2 CONNECT TO
-        MWAPP ; else exit -1 ; fi'
-      interval: 10s
-      timeout: 5s
-      retries: 6
-      start_period: 600s
-    ports:
-      - '10503:50000'
-    privileged: true
-    networks:
-      middleware:
-        ipv4_address: 10.10.10.35
-    volumes:
-      - 'mwapp-data:/database'
-      - './mwapp/init:/home/mwapp/init'
-      - './mwapp/migration:/home/mwapp/migration'
-      - './mwapp/custom:/var/custom'
-      - './mwapp/storeprocedure:/home/mwapp/storeprocedure'
-      - './mwapp/backup/:/var/backup'
-  was:
-    restart: always
-    container_name: was
-    image: ibmcom/websphere-traditional:9.0.5.20
-    networks:
-      middleware:
-        ipv4_address: 10.10.10.31
-    ports:
-      - "9043:9043"
-      - "9443:9443"
-    environment:
-      - LICENSE=accept
-      - ENABLE_BASIC_LOGGING=true
-      - TZ=Asia/Jakarta
-    volumes:
-      - ./was/work:/work
-      - ./was/lib:/home/was/lib
-      - ./was/script:/home/was/script
-      - ./was/mwui.war:/home/was/mwui.war
-    healthcheck:
-      test: [ "CMD", "curl", "-k", "https://localhost:9043" ]
-      interval: 30s
-      timeout: 10s
-      retries: 3
-  openldap:
-    image: bitnami/openldap:2.6.9-debian-12-r6
-    container_name: openldap
-    restart: always
-    networks:
-      middleware:
-        ipv4_address: 10.10.10.30
-    ports:
-      - "389:1389"
-    env_file:
-      - ./openldap/.env.local
-    environment:
-      - LDAP_CUSTOM_LDIF_DIR=./ldifs
-      - LDAP_READONLY_USER="false"
-      - LDAP_RFC2307BIS_SCHEMA="true"
-      - LDAP_MEMBEROF="true"
-      - LDAP_REFINT="true"
-    volumes:
-      - ./openldap/ldifs:/ldifs
-    healthcheck:
-      test: ldapwhoami -H ldap://localhost:1389 -x
-      interval: 10s
-      timeout: 5s
-      retries: 5
-      start_period: 30s
-  openldap-ui:
-    image: wheelybird/ldap-user-manager:v1.5
-    container_name: openldap-ui
-    environment:
-      - LDAP_URI=ldap://openldap
-      - LDAP_BASE_DN=dc=example,dc=org
-      - LDAP_REQUIRE_STARTTLS=FALSE
-      - LDAP_ADMINS_GROUP=admins
-      - LDAP_ADMIN_BIND_DN=cn=admin,dc=example,dc=org
-      - LDAP_ADMIN_BIND_PWD=admin
-      - LDAP_IGNORE_CERT_ERRORS=true
-      - NO_HTTPS=TRUE
-      - PASSWORD_HASH=SSHA
-      - SERVER_HOSTNAME=localhost:18080
-    depends_on:
-      - openldap
-    ports:
-      - 18080:80
-  btn-middleware:
-    container_name: btn-middleware
-    restart: always
-    image: ace:12.0.9.0
-    hostname: BTNACE
-    environment:
-      - TZ=Asia/Jakarta
-      - ENV=DEV
-      - DB2CLIINIPATH=/opt/mdw/odbc
-      - ODBCINI=/opt/mdw/odbc/odbc.ini
-      - ODBCSYSINI=/opt/mdw/odbc
-      - DB2DSDRIVER_CFG_PATH=/opt/mdw/db2_cli_odbc_driver/odbc_cli/clidriver/cfg
-    networks:
-      - middleware
-      # middleware:
-      #   ipv4_address: 10.10.10.27
-    volumes:
-      - ./btn-middleware/.bashrc:/home/admmdw/.bashrc
-      - ./btn-middleware/init.sh:/home/admmdw/init.sh
-      - ./btn-middleware/config.yaml:/home/admmdw/config.yaml
-      - ./btn-middleware/QueueManager:/home/admmdw/QueueManager
-      - ./btn-middleware/dummy-java/dist:/home/admmdw/dummyjava
-      - ./btn-middleware/dummy-ws:/home/admmdw/dummyws
-      - ./btn-middleware/dummy-rest:/home/admmdw/dummyrest
-      - ./btn-middleware/shared-classes:/var/mqsi/shared-classes
-      - ./btn-middleware/plugins:/opt/IBM/ace-12.0.9.0/tools/plugins
-      - ./btn-middleware/jplugin:/opt/IBM/ace-12.0.9.0/server/jplugin
-      - ./btn-middleware/bar:/MQHA/bar
-      - ./btn-middleware/log:/var/mdw
-      - ./btn-middleware/odbc:/opt/mdw/odbc
-      - ./btn-middleware/db2_cli_odbc_driver:/opt/mdw/db2_cli_odbc_driver
-      - ./btn-middleware/deploy:/opt/mdw/bars
-    extra_hosts:
-      - "BTNCOREKONVEN:127.0.0.1"
-      - "DUMMY:127.0.0.1"
-      - "BTNQM1:127.0.0.1"
-      - "BTNQM2:127.0.0.1"      
-      # - "btnmdwdata:10.10.10.36"
-      # - "btnmwlog:10.10.10.37"
-    ports:
-      - '2222:22'
-      # port aplikasi
-      - '1000-1500:1000-1500'
-      - '1534:1534'
-      - '4234:4234'
-      - '4474:4474'
-      - '4534:4534'
-      - '4454:4454'
-      - '7081-7095:7081-7095'
-volumes:
-  mwapp-data:
-    driver: local
-  mwconfig-data:
-      driver: local
-  mwlog-data:
-      driver: local
-  btn-middleware-data:
-      driver: local
-networks:
-  middleware:
-    driver: bridge
-    # ipam:
-    #   config:
+# version: "3.9"
+
+services:
+  mwconfig:
+    restart: always
+    container_name: mwconfig
+    image: "docker.senomas.com/ibm-db2-ce-11.5.8.0:latest"
+    environment:
+      - DB2INST1_PASSWORD=mdw4dm1n
+      - DB2INSTANCE=db2inst1
+      - DBNAME=MWCONFIG
+      - LICENSE=accept
+      - SAMPLEDB=false
+    healthcheck:
+      test: >-
+        /bin/su - $$DB2INSTANCE -c 'if [[ -f /var/migrate.done ]] ; then db2 CONNECT TO
+        MWCONFIG ; else exit -1 ; fi'
+      interval: 10s
+      timeout: 5s
+      retries: 6
+      start_period: 600s
+    ports:
+      - '10501:50000'
+    privileged: true
+    networks:
+      middleware:
+        aliases:
+          - btnmdwdata
+        # ipv4_address: 10.10.10.36
+    volumes:
+      - 'mwconfig-data:/database'
+      - './mwconfig/init:/home/mwconfig/init'
+      - './mwconfig/storeprocedure:/home/mwconfig/storeprocedure'
+      - './mwconfig/migration:/home/mwconfig/migration'
+      - './mwconfig/custom:/var/custom'
+      - './mwconfig/cicd/:/var/cicd'
+      - './mwconfig/backup/:/var/backup'
+  mwlog:
+    restart: always
+    container_name: mwlog
+    image: "docker.senomas.com/ibm-db2-ce-11.5.8.0:latest"
+    environment:
+      - DB2INST1_PASSWORD=mdw4dm1n
+      - DB2INSTANCE=db2inst1
+      - DBNAME=MWLOG
+      - LICENSE=accept
+      - SAMPLEDB=false
+    healthcheck:
+      test: >-
+        /bin/su - $$DB2INSTANCE -c 'if [[ -f /var/migrate.done ]] ; then db2 CONNECT TO
+        MWLOG ; else exit -1 ; fi'
+      interval: 10s
+      timeout: 5s
+      retries: 6
+      start_period: 600s
+    ports:
+      - '10502:50000'
+    privileged: true
+    networks:
+      middleware:
+        aliases:
+          - btnmwlog
+        # ipv4_address: 10.10.10.37
+    volumes:
+      - 'mwlog-data:/database'
+      - './mwlog/init:/home/mwlog/init'
+      - './mwlog/migration:/home/mwlog/migration'
+      - './mwlog/custom:/var/custom'
+      - './mwlog/storeprocedure:/home/mwlog/storeprocedure'
+      - './mwlog/backup/:/var/backup'
+  mwapp:
+    restart: always
+    container_name: mwapp
+    image: "docker.senomas.com/ibm-db2-ce-11.5.8.0:latest"
+    environment:
+      - DB2INST1_PASSWORD=mdw4dm1n
+      - DB2INSTANCE=db2inst1
+      - DBNAME=MWAPP
+      - LICENSE=accept
+      - SAMPLEDB=false
+    healthcheck:
+      test: >-
+        /bin/su - $$DB2INSTANCE -c 'if [[ -f /var/migrate.done ]] ; then db2 CONNECT TO
+        MWAPP ; else exit -1 ; fi'
+      interval: 10s
+      timeout: 5s
+      retries: 6
+      start_period: 600s
+    ports:
+      - '10503:50000'
+    privileged: true
+    networks:
+      middleware:
+        ipv4_address: 10.10.10.35
+    volumes:
+      - 'mwapp-data:/database'
+      - './mwapp/init:/home/mwapp/init'
+      - './mwapp/migration:/home/mwapp/migration'
+      - './mwapp/custom:/var/custom'
+      - './mwapp/storeprocedure:/home/mwapp/storeprocedure'
+      - './mwapp/backup/:/var/backup'
+  was:
+    restart: always
+    container_name: was
+    image: ibmcom/websphere-traditional:9.0.5.20
+    networks:
+      middleware:
+        ipv4_address: 10.10.10.31
+    ports:
+      - "9043:9043"
+      - "9443:9443"
+    environment:
+      - LICENSE=accept
+      - ENABLE_BASIC_LOGGING=true
+      - TZ=Asia/Jakarta
+    volumes:
+      - ./was/work:/work
+      - ./was/lib:/home/was/lib
+      - ./was/script:/home/was/script
+      - ./was/mwui.war:/home/was/mwui.war
+    healthcheck:
+      test: [ "CMD", "curl", "-k", "https://localhost:9043" ]
+      interval: 30s
+      timeout: 10s
+      retries: 3
+  openldap:
+    image: bitnami/openldap:2.6.9-debian-12-r6
+    container_name: openldap
+    restart: always
+    networks:
+      middleware:
+        ipv4_address: 10.10.10.30
+    ports:
+      - "389:1389"
+    env_file:
+      - ./openldap/.env.local
+    environment:
+      - LDAP_CUSTOM_LDIF_DIR=./ldifs
+      - LDAP_READONLY_USER="false"
+      - LDAP_RFC2307BIS_SCHEMA="true"
+      - LDAP_MEMBEROF="true"
+      - LDAP_REFINT="true"
+    volumes:
+      - ./openldap/ldifs:/ldifs
+    healthcheck:
+      test: ldapwhoami -H ldap://localhost:1389 -x
+      interval: 10s
+      timeout: 5s
+      retries: 5
+      start_period: 30s
+  openldap-ui:
+    image: wheelybird/ldap-user-manager:v1.5
+    container_name: openldap-ui
+    environment:
+      - LDAP_URI=ldap://openldap
+      - LDAP_BASE_DN=dc=example,dc=org
+      - LDAP_REQUIRE_STARTTLS=FALSE
+      - LDAP_ADMINS_GROUP=admins
+      - LDAP_ADMIN_BIND_DN=cn=admin,dc=example,dc=org
+      - LDAP_ADMIN_BIND_PWD=admin
+      - LDAP_IGNORE_CERT_ERRORS=true
+      - NO_HTTPS=TRUE
+      - PASSWORD_HASH=SSHA
+      - SERVER_HOSTNAME=localhost:18080
+    depends_on:
+      - openldap
+    ports:
+      - 18080:80
+  btn-middleware:
+    container_name: btn-middleware
+    restart: always
+    image: ace:12.0.9.0
+    hostname: BTNACE
+    environment:
+      - TZ=Asia/Jakarta
+      - ENV=DEV
+      - DB2CLIINIPATH=/opt/mdw/odbc
+      - ODBCINI=/opt/mdw/odbc/odbc.ini
+      - ODBCSYSINI=/opt/mdw/odbc
+      - DB2DSDRIVER_CFG_PATH=/opt/mdw/db2_cli_odbc_driver/odbc_cli/clidriver/cfg
+    networks:
+      - middleware
+      # middleware:
+      #   ipv4_address: 10.10.10.27
+    volumes:
+      - ./btn-middleware/.bashrc:/home/admmdw/.bashrc
+      - ./btn-middleware/init.sh:/home/admmdw/init.sh
+      - ./btn-middleware/config.yaml:/home/admmdw/config.yaml
+      - ./btn-middleware/QueueManager:/home/admmdw/QueueManager
+      - ./btn-middleware/dummy-java/dist:/home/admmdw/dummyjava
+      - ./btn-middleware/dummy-ws:/home/admmdw/dummyws
+      - ./btn-middleware/dummy-rest:/home/admmdw/dummyrest
+      - ./btn-middleware/shared-classes:/var/mqsi/shared-classes
+      - ./btn-middleware/plugins:/opt/IBM/ace-12.0.9.0/tools/plugins
+      - ./btn-middleware/jplugin:/opt/IBM/ace-12.0.9.0/server/jplugin
+      - ./btn-middleware/bar:/MQHA/bar
+      - ./btn-middleware/log:/var/mdw
+      - ./btn-middleware/odbc:/opt/mdw/odbc
+      - ./btn-middleware/db2_cli_odbc_driver:/opt/mdw/db2_cli_odbc_driver
+      - ./btn-middleware/deploy:/opt/mdw/bars
+    extra_hosts:
+      - "BTNCOREKONVEN:127.0.0.1"
+      - "DUMMY:127.0.0.1"
+      - "BTNQM1:127.0.0.1"
+      - "BTNQM2:127.0.0.1"      
+      # - "btnmdwdata:10.10.10.36"
+      # - "btnmwlog:10.10.10.37"
+    ports:
+      - '2222:22'
+      # port aplikasi
+      - '1000-1500:1000-1500'
+      - '1534:1534'
+      - '4234:4234'
+      - '7081-7095:7081-7095'
+  ace_proxy:
+    image: nginx:alpine
+    ports:
+      - '4454:4454'
+      - '4474:4474'
+      - '4534:4534'
+      - '4494:4494'
+    volumes:
+      - ./nginx.conf:/etc/nginx/nginx.conf:ro
+    depends_on:
+      - btn-middleware
+    networks:
+      - middleware
+volumes:
+  mwapp-data:
+    driver: local
+  mwconfig-data:
+      driver: local
+  mwlog-data:
+      driver: local
+  btn-middleware-data:
+      driver: local
+networks:
+  middleware:
+    driver: bridge
+    # ipam:
+    #   config:
     #     - subnet: 10.10.10.0/24

+ 194 - 190
mwconfig/migration/MWCONFIG_INIT_BIFAST.sql

@@ -1,190 +1,194 @@
-INSERT INTO MWCONFIG.ADAPTOR (ID, DESCRIPTION, ASYNCHRONOUS, MODIFIED_BY, "TIMESTAMP") VALUES('bi-conn-konven', 'BI Fast Connector', 1, 'wpsadmin', '2022-01-19 09:19:11.020000');
-INSERT INTO MWCONFIG.ADAPTOR (ID, DESCRIPTION, ASYNCHRONOUS, MODIFIED_BY, "TIMESTAMP") VALUES('bi-conn-syariah', 'BI Fast Connector', 1, 'wpsadmin', '2022-01-19 09:20:21.119000');
-
-INSERT INTO MWCONFIG.CODEX (ID, ALLOW_PARTIAL, "XML", MODIFIED_BY, "TIMESTAMP") VALUES('iso-8583-bi-conn', 1, '<codex id="iso-8583-bi-conn" escape="true">
- 	<field id="packetLength" type="groupLengthBinary" decimal-format="binary" length="2" />
- 	<field id="messageType" type="string" length="4" padding-mode="right" padding-char=" " />
- 	<field id="bitmap" type="bitmap">
- 		<field id="primaryAccountNumber" bit="2" type="string" length="19" format="llvar" />
- 		<field id="processingCode" bit="3" type="string" length="6" />
- 		<field id="amountTransaction" bit="4" type="string" length="15" padding-mode="left" padding-char="0" />
- 		<field id="amountSettlement" bit="5" type="string" length="12" padding-mode="left" padding-char="0" />
- 		<field id="amountCardholderBilling" bit="6" type="string" length="12" padding-mode="left" padding-char="0" />
- 		<field id="transmissionDateTime" bit="7" type="string" length="10" />
- 		<field id="amountCardholderBillingFee" bit="8" type="string" length="8" padding-mode="left" padding-char="0" />
- 		<field id="conversionRateSettlement" bit="9" type="string" length="8" padding-mode="left" padding-char="0" />
- 		<field id="conversionRateCardholderBilling" bit="10" type="string" length="8" padding-mode="left" padding-char="0" />
- 		<field id="systemsTraceAuditNumber" bit="11" type="string" length="6" />
- 		<field id="timeLocalTransaction" bit="12" type="string" length="6" />
- 		<field id="dateLocalTransaction" bit="13" type="string" length="4" />
- 		<field id="dateExpiration" bit="14" type="string" length="4" />
- 		<field id="dateSettlement" bit="15" type="string" length="4" />
- 		<field id="dateConversion" bit="16" type="string" length="4" />
- 		<field id="dateCapture" bit="17" type="string" length="4" />
- 		<field id="merchantType" bit="18" type="string" length="4" padding-mode="left" padding-char="0" />
- 		<field id="acquiringInstitutionCountryCode" bit="19" type="string" length="3" padding-mode="left" padding-char="0" />
- 		<field id="panExtendedCountryCode" bit="20" type="string" length="3" padding-mode="left" padding-char="0" />
- 		<field id="forwardingInstitutionCountryCode" bit="21" type="string" length="3" padding-mode="left" padding-char="0" />
- 		<field id="pointOfServiceEntryMode" bit="22" type="string" length="3" padding-mode="left" padding-char="0" />
- 		<field id="applicationPanNumber" bit="23" type="string" length="3" padding-mode="left" padding-char="0" />
- 		<field id="networkInternationalIdentifier" bit="24" type="string" length="3" padding-mode="left" padding-char="0" />
- 		<field id="pointOfServiceConditionCode" bit="25" type="string" length="2" padding-mode="left" padding-char="0" />
- 		<field id="pointOfServiceCaptureCode" bit="26" type="string" length="2" padding-mode="left" padding-char="0" />
- 		<field id="authorisingIdentificationResponseLength" bit="27" type="string" length="1" padding-mode="left" padding-char="0" />
- 		<field id="amountTransactionFee" bit="28" type="string" length="9" padding-mode="left" padding-char="0" />
- 		<field id="amountSettlementFee" bit="29" type="string" length="9" padding-mode="left" padding-char="0" />
- 		<field id="amountTransactionProcessingFee" bit="30" type="string" length="9" padding-mode="left" padding-char="0" />
- 		<field id="amountSettlementProcessingFee" bit="31" type="string" length="9" padding-mode="left" padding-char="0" />
- 		<field id="acquiringInstitutionIdentificationCode" bit="32" type="string" length="11" format="llvar" />
- 		<field id="forwardingInstitutionIdentificationCode" bit="33" type="string" length="11" format="llvar" />
- 		<field id="primaryAccountNumberExtended" bit="34" type="string" length="28" format="llvar" />
- 		<field id="track2Data" bit="35" type="string" length="37" format="llvar" />
- 		<field id="track3Data" bit="36" type="string" length="104" format="lllvar" />
- 		<field id="retrievalReferenceNumber" bit="37" type="string" length="12" />
- 		<field id="authorisationIdentificationResponse" bit="38" type="string" length="6" />  
- 		<field id="responseCode" bit="39" type="string" length="2" padding-mode="left" />
- 		<field id="serviceRestrictionCode" bit="40" type="string" length="3" />
- 		<field id="cardAcceptorTerminalIdentification" bit="41" type="string" length="16" />
- 		<field id="cardAcceptorIdentificationCode" bit="42" type="string" length="15" />
- 		<field id="cardAcceptorName" bit="43" type="string" length="40" />
- 		<field id="additionalResponseData" bit="44" type="string" length="25" format="llvar" />
- 		<field id="track1Data" bit="45" type="string" length="76" format="llvar" />
- 		<field id="additionalDataIso" bit="46" type="string" length="999" format="lllvar" />
- 		<field id="additionalDataNational" bit="47" type="string" length="999" format="lllvar" />
- 		<field id="additionalDataPrivate" bit="48" type="string" length="999" format="lllvar" />
- 		<field id="currencyCodeTransaction" bit="49" type="string" length="3" />
- 		<field id="currencyCodeSettlement" bit="50" type="string" length="3" />
- 		<field id="currencyCodeCardholderBilling" bit="51" type="string" length="3" />
- 		<field id="personalIdentificationNumberData" bit="52" type="string" length="16" />
- 		<field id="securityRelatedControlInformation" bit="53" type="string" length="18" padding-mode="left" padding-char="0" />
- 		<field id="additionalAmounts" bit="54" type="string" length="999" format="lllvar" />
- 		<field id="reservedIso1" bit="55" type="string" length="999" format="lllvar" />
- 		<field id="reservedIso2" bit="56" type="string" length="999" format="lllvar" />
- 		<field id="reservedNational1" bit="57" type="string" length="999" format="lllvar" />
- 		<field id="reservedNational2" bit="58" type="string" length="999" format="lllvar" />
- 		<field id="reservedNational3" bit="59" type="string" length="999" format="lllvar" />
- 		<field id="reasonCode" bit="60" type="string" length="999" format="lllvar" />
- 		<field id="reservedPrivate1" bit="61" type="string" length="999" format="lllvar" />
- 		<field id="reservedPrivate2" bit="62" type="string" length="999" format="lllvar" />
- 		<field id="reservedPrivate3" bit="63" type="string" length="999" format="lllvar" />
- 		<field id="messageAuthenticationCode" bit="64" type="string" length="16" />
- 		<field id="bitMapTertiary" bit="65" type="string" length="16" />
- 		<field id="settlementCode" bit="66" type="string" length="1" padding-mode="left" padding-char="0" />
- 		<field id="extendedPaymentCode" bit="67" type="string" length="2" padding-mode="left" padding-char="0" />
- 		<field id="receivingInstitutionCountryCode" bit="68" type="string" length="3" />
- 		<field id="settlementInstitutionCountyCode" bit="69" type="string" length="3" />
- 		<field id="networkManagementInformationCode" bit="70" type="string" length="3" />
- 		<field id="messageNumber" bit="71" type="string" length="4" padding-mode="left" padding-char="0" />
- 		<field id="messageNumberLast" bit="72" type="string" length="4" padding-mode="left" padding-char="0" />
- 		<field id="dateAction" bit="73" type="string" length="6" />
- 		<field id="creditsNumber" bit="74" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="creditsReversalNumber" bit="75" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="debitsNumber" bit="76" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="debitsReversalNumber" bit="77" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="transferNumber" bit="78" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="transferReversalNumber" bit="79" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="inquiriesNumber" bit="80" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="authorisationsNumber" bit="81" type="string" length="10" padding-mode="left" padding-char="0" />
- 		<field id="creditsProcesssingFeeAmount" bit="82" type="string" length="14" padding-mode="left" padding-char="0" />
- 		<field id="creditsTransactionFeeAmount" bit="83" type="string" length="14" padding-mode="left" padding-char="0" />
- 		<field id="debitsProcessingFeeAmount" bit="84" type="string" length="14" padding-mode="left" padding-char="0" />
- 		<field id="debitsTransactionFeeAmount" bit="85" type="string" length="14" padding-mode="left" padding-char="0" />
- 		<field id="creditsAmount" bit="86" type="string" length="15" padding-mode="left" padding-char="0" />
- 		<field id="creditsReversalAmount" bit="87" type="string" length="15" padding-mode="left" padding-char="0" />
- 		<field id="debitsAmount" bit="88" type="string" length="15" padding-mode="left" padding-char="0" />
- 		<field id="debitsReversalAmount" bit="89" type="string" length="15" padding-mode="left" padding-char="0" />
- 		<field id="originalDataElements" bit="90" type="string" length="42" padding-mode="left" />
- 		<field id="fileUpdateCode" bit="91" type="string" length="1" />
- 		<field id="fileSecurityCode" bit="92" type="string" length="2" padding-mode="left" padding-char="0" />
- 		<field id="responseIndicator" bit="93" type="string" length="5" padding-mode="left" padding-char="0" />
- 		<field id="serviceIndicator" bit="94" type="string" length="7" />
- 		<field id="replacementAmounts" bit="95" type="string" length="42" />
- 		<field id="messageSecurityCode" bit="96" type="string" length="8" />
- 		<field id="amountNetSettlement" bit="97" type="string" length="16" padding-mode="left" padding-char="0" />
- 		<field id="payee" bit="98" type="string" length="25" />
- 		<field id="settlementInstitutionIdentificationCode" bit="99" type="string" length="11" format="llvar" />
- 		<field id="receivingInstitutionIdentificationCode" bit="100" type="string" length="11" format="llvar" />
- 		<field id="slipNumber" bit="101" type="string" length="11" format="llvar" />
- 		<field id="fromAccount" bit="102" type="string" length="28" format="llvar" />
- 		<field id="toAccount" bit="103" type="string" length="28" format="llvar" />
- 		<field id="transactionDescription" bit="104" type="string" length="100" format="lllvar" />
- 		<field id="reservedForIsoUse1" bit="105" type="string" length="999" format="lllvar" />
- 		<field id="reservedForIsoUse2" bit="106" type="string" length="999" format="lllvar" />
- 		<field id="reservedForIsoUse3" bit="107" type="string" length="999" format="lllvar" />
- 		<field id="reservedForIsoUse4" bit="108" type="string" length="999" format="lllvar" />
- 		<field id="reservedForIsoUse5" bit="109" type="string" length="999" format="lllvar" />
- 		<field id="reservedForIsoUse6" bit="110" type="string" length="999" format="lllvar" />
- 		<field id="reservedForIsoUse7" bit="111" type="string" length="999" format="lllvar" />
- 		<field id="reservedForNationalUse" bit="112" type="string" length="999" format="lllvar" />
- 		<field id="authorisingAgentInstitutionIdCode" bit="113" type="string" length="11" format="llvar" />
- 		<field id="reservedForNationalUse1" bit="114" type="string" length="999" format="lllvar" />
- 		<field id="reservedForNationalUse2" bit="115" type="string" length="999" format="lllvar" />
- 		<field id="reservedForNationalUse3" bit="116" type="string" length="999" format="lllvar" />
- 		<field id="reservedForNationalUse4" bit="117" type="string" length="999" format="lllvar" />
- 		<field id="reservedForNationalUse5" bit="118" type="string" length="999" format="lllvar" />
- 		<field id="reservedForNationalUse6" bit="119" type="string" length="999" format="lllvar" />
- 		<field id="reservedForPrivateUse1" bit="120" type="string" length="999" format="lllvar" />
- 		<field id="reservedForPrivateUse2" bit="121" type="string" length="999" format="lllvar" />
- 		<field id="reservedForPrivateUse3" bit="122" type="string" length="999" format="lllvar" />
- 		<field id="reservedForPrivateUse4" bit="123" type="string" length="999" format="lllvar" />
- 		<field id="infoText" bit="124" type="string" length="255" format="lllvar" />
- 		<field id="networkManagementInformation" bit="125" type="string" length="50" format="lllvar" />
- 		<field id="issuerTraceId" bit="126" type="string" length="6" format="lllvar" />
- 		<field id="reservedForPrivateUse" bit="127" type="string" length="11" format="lllvar" />
- 		<field id="messageAuthenticationCode2" bit="128" type="string" length="16" />
- 	</field>
- 	<field id="!type" type="script" encode="true">iso-8583-bi-conn</field>
- 	<field id="!mid" type="script" encode="true">${msg.transmissionDateTime}.${msg.systemsTraceAuditNumber}</field>
- 	<field id="!code" type="script" encode="true">${msg.messageType}.${msg.messageType.startsWith("08") ? msg.networkManagementInformationCode?.padLeft(6, "0") : msg.processingCode?.trim()}</field>
-</codex>
-', 'DB2PROD ', '2021-12-17 16:19:19.711712');
-
-INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-konven', 'incoming', 'iso-8583-bi-conn');
-INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-konven', 'outgoing', 'iso-8583-bi-conn');
-INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-syariah', 'incoming', 'iso-8583-bi-conn');
-INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-syariah', 'outgoing', 'iso-8583-bi-conn');
-
-INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-konven', 'echo', '3600000');
-INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-konven', 'needSignOn', 'true');
-INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-konven', 'timeout', '60000');
-INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-syariah', 'echo', '3600000');
-INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-syariah', 'needSignOn', 'true');
-INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-syariah', 'timeout', '60000');
-
-INSERT INTO MWCONFIG.CLIENT (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) VALUES('bi-conn-konven', 0, 0, NULL, NULL, 1, 0, 'backend-iso');
-INSERT INTO MWCONFIG.CLIENT (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) VALUES('bi-conn-syariah', 0, 0, NULL, NULL, 1, 0, 'backend-iso');
-
-INSERT INTO MWCONFIG.CLIENT_TARGET (CLIENT_ID, ID, HOST, WEIGHT, SEQ) VALUES('bi-conn-konven', 'bi-conn-konven', 'localhost:13067', 1, 0);
-INSERT INTO MWCONFIG.CLIENT_TARGET (CLIENT_ID, ID, HOST, WEIGHT, SEQ) VALUES('bi-conn-syariah', 'bi-conn-syariah', 'localhost:8357', 1, 0);
-
-INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-konven.SIGN-ON', NULL, 'DB2PROD ', '2021-12-17 16:20:21.982167', '');
-INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-konven.ECHO-TEST', NULL, 'DB2PROD ', '2021-12-17 16:20:22.008627', '');
-INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-syariah.SIGN-ON', NULL, 'DB2PROD ', '2021-12-17 16:20:22.436100', '');
-INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-syariah.ECHO-TEST', NULL, 'DB2PROD ', '2021-12-17 16:20:22.462368', '');
-
-INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-konven.SIGN-ON', 1, '/data', '/data/body', NULL, NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-konven.ECHO-TEST', 1, '/data', '/data/body', 'bi-conn-konven.SIGN-ON', 1);
-INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-syariah.SIGN-ON', 1, '/data', '/data/body', NULL, NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-syariah.ECHO-TEST', 1, '/data', '/data/body', 'bi-conn-syariah.SIGN-ON', 1);
-
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '@', 'copyMessage();', 5);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'transmissionDateTime', '${getTimeZoneFormat("MMddHHmmss","GMT")}', 10);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'systemsTraceAuditNumber', '${counter("bi-conn-konven", 5, 1, "ddMMyy")}', 10);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!mid', '${tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value"}', 20);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!sid', '${getUID(tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value")}', 20);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!destination', 'bi-conn-konven', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!nosignon', 'true', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'messageType', '0800', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'networkManagementInformationCode', '001', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.ECHO-TEST', 1, 'networkManagementInformationCode', '301', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '@', 'copyMessage();', 5);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'transmissionDateTime', '${getTimeZoneFormat("MMddHHmmss","GMT")}', 10);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'systemsTraceAuditNumber', '${counter("bi-conn-syariah", 5, 1, "ddMMyy")}', 10);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!mid', '${tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value"}', 20);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!sid', '${getUID(tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value")}', 20);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!destination', 'bi-conn-syariah', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!nosignon', 'true', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'messageType', '0800', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'networkManagementInformationCode', '001', NULL);
-INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.ECHO-TEST', 1, 'networkManagementInformationCode', '301', NULL);
-
+INSERT INTO MWCONFIG.ADAPTOR (ID, DESCRIPTION, ASYNCHRONOUS, MODIFIED_BY, "TIMESTAMP") VALUES('bi-conn-konven', 'BI Fast Connector', 1, 'wpsadmin', '2022-01-19 09:19:11.020000');
+INSERT INTO MWCONFIG.ADAPTOR (ID, DESCRIPTION, ASYNCHRONOUS, MODIFIED_BY, "TIMESTAMP") VALUES('bi-conn-syariah', 'BI Fast Connector', 1, 'wpsadmin', '2022-01-19 09:20:21.119000');
+
+INSERT INTO MWCONFIG.CODEX (ID, ALLOW_PARTIAL, "XML", MODIFIED_BY, "TIMESTAMP") VALUES('iso-8583-bi-conn', 1, '<codex id="iso-8583-bi-conn" escape="true">
+ 	<field id="packetLength" type="groupLengthBinary" decimal-format="binary" length="2" />
+ 	<field id="messageType" type="string" length="4" padding-mode="right" padding-char=" " />
+ 	<field id="bitmap" type="bitmap">
+ 		<field id="primaryAccountNumber" bit="2" type="string" length="19" format="llvar" />
+ 		<field id="processingCode" bit="3" type="string" length="6" />
+ 		<field id="amountTransaction" bit="4" type="string" length="15" padding-mode="left" padding-char="0" />
+ 		<field id="amountSettlement" bit="5" type="string" length="12" padding-mode="left" padding-char="0" />
+ 		<field id="amountCardholderBilling" bit="6" type="string" length="12" padding-mode="left" padding-char="0" />
+ 		<field id="transmissionDateTime" bit="7" type="string" length="10" />
+ 		<field id="amountCardholderBillingFee" bit="8" type="string" length="8" padding-mode="left" padding-char="0" />
+ 		<field id="conversionRateSettlement" bit="9" type="string" length="8" padding-mode="left" padding-char="0" />
+ 		<field id="conversionRateCardholderBilling" bit="10" type="string" length="8" padding-mode="left" padding-char="0" />
+ 		<field id="systemsTraceAuditNumber" bit="11" type="string" length="6" />
+ 		<field id="timeLocalTransaction" bit="12" type="string" length="6" />
+ 		<field id="dateLocalTransaction" bit="13" type="string" length="4" />
+ 		<field id="dateExpiration" bit="14" type="string" length="4" />
+ 		<field id="dateSettlement" bit="15" type="string" length="4" />
+ 		<field id="dateConversion" bit="16" type="string" length="4" />
+ 		<field id="dateCapture" bit="17" type="string" length="4" />
+ 		<field id="merchantType" bit="18" type="string" length="4" padding-mode="left" padding-char="0" />
+ 		<field id="acquiringInstitutionCountryCode" bit="19" type="string" length="3" padding-mode="left" padding-char="0" />
+ 		<field id="panExtendedCountryCode" bit="20" type="string" length="3" padding-mode="left" padding-char="0" />
+ 		<field id="forwardingInstitutionCountryCode" bit="21" type="string" length="3" padding-mode="left" padding-char="0" />
+ 		<field id="pointOfServiceEntryMode" bit="22" type="string" length="3" padding-mode="left" padding-char="0" />
+ 		<field id="applicationPanNumber" bit="23" type="string" length="3" padding-mode="left" padding-char="0" />
+ 		<field id="networkInternationalIdentifier" bit="24" type="string" length="3" padding-mode="left" padding-char="0" />
+ 		<field id="pointOfServiceConditionCode" bit="25" type="string" length="2" padding-mode="left" padding-char="0" />
+ 		<field id="pointOfServiceCaptureCode" bit="26" type="string" length="2" padding-mode="left" padding-char="0" />
+ 		<field id="authorisingIdentificationResponseLength" bit="27" type="string" length="1" padding-mode="left" padding-char="0" />
+ 		<field id="amountTransactionFee" bit="28" type="string" length="9" padding-mode="left" padding-char="0" />
+ 		<field id="amountSettlementFee" bit="29" type="string" length="9" padding-mode="left" padding-char="0" />
+ 		<field id="amountTransactionProcessingFee" bit="30" type="string" length="9" padding-mode="left" padding-char="0" />
+ 		<field id="amountSettlementProcessingFee" bit="31" type="string" length="9" padding-mode="left" padding-char="0" />
+ 		<field id="acquiringInstitutionIdentificationCode" bit="32" type="string" length="11" format="llvar" />
+ 		<field id="forwardingInstitutionIdentificationCode" bit="33" type="string" length="11" format="llvar" />
+ 		<field id="primaryAccountNumberExtended" bit="34" type="string" length="28" format="llvar" />
+ 		<field id="track2Data" bit="35" type="string" length="37" format="llvar" />
+ 		<field id="track3Data" bit="36" type="string" length="104" format="lllvar" />
+ 		<field id="retrievalReferenceNumber" bit="37" type="string" length="12" />
+ 		<field id="authorisationIdentificationResponse" bit="38" type="string" length="6" />  
+ 		<field id="responseCode" bit="39" type="string" length="2" padding-mode="left" />
+ 		<field id="serviceRestrictionCode" bit="40" type="string" length="3" />
+ 		<field id="cardAcceptorTerminalIdentification" bit="41" type="string" length="16" />
+ 		<field id="cardAcceptorIdentificationCode" bit="42" type="string" length="15" />
+ 		<field id="cardAcceptorName" bit="43" type="string" length="40" />
+ 		<field id="additionalResponseData" bit="44" type="string" length="25" format="llvar" />
+ 		<field id="track1Data" bit="45" type="string" length="76" format="llvar" />
+ 		<field id="additionalDataIso" bit="46" type="string" length="999" format="lllvar" />
+ 		<field id="additionalDataNational" bit="47" type="string" length="999" format="lllvar" />
+ 		<field id="additionalDataPrivate" bit="48" type="string" length="999" format="lllvar" />
+ 		<field id="currencyCodeTransaction" bit="49" type="string" length="3" />
+ 		<field id="currencyCodeSettlement" bit="50" type="string" length="3" />
+ 		<field id="currencyCodeCardholderBilling" bit="51" type="string" length="3" />
+ 		<field id="personalIdentificationNumberData" bit="52" type="string" length="16" />
+ 		<field id="securityRelatedControlInformation" bit="53" type="string" length="18" padding-mode="left" padding-char="0" />
+ 		<field id="additionalAmounts" bit="54" type="string" length="999" format="lllvar" />
+ 		<field id="reservedIso1" bit="55" type="string" length="999" format="lllvar" />
+ 		<field id="reservedIso2" bit="56" type="string" length="999" format="lllvar" />
+ 		<field id="reservedNational1" bit="57" type="string" length="999" format="lllvar" />
+ 		<field id="reservedNational2" bit="58" type="string" length="999" format="lllvar" />
+ 		<field id="reservedNational3" bit="59" type="string" length="999" format="lllvar" />
+ 		<field id="reasonCode" bit="60" type="string" length="999" format="lllvar" />
+ 		<field id="reservedPrivate1" bit="61" type="string" length="999" format="lllvar" />
+ 		<field id="reservedPrivate2" bit="62" type="string" length="999" format="lllvar" />
+ 		<field id="reservedPrivate3" bit="63" type="string" length="999" format="lllvar" />
+ 		<field id="messageAuthenticationCode" bit="64" type="string" length="16" />
+ 		<field id="bitMapTertiary" bit="65" type="string" length="16" />
+ 		<field id="settlementCode" bit="66" type="string" length="1" padding-mode="left" padding-char="0" />
+ 		<field id="extendedPaymentCode" bit="67" type="string" length="2" padding-mode="left" padding-char="0" />
+ 		<field id="receivingInstitutionCountryCode" bit="68" type="string" length="3" />
+ 		<field id="settlementInstitutionCountyCode" bit="69" type="string" length="3" />
+ 		<field id="networkManagementInformationCode" bit="70" type="string" length="3" />
+ 		<field id="messageNumber" bit="71" type="string" length="4" padding-mode="left" padding-char="0" />
+ 		<field id="messageNumberLast" bit="72" type="string" length="4" padding-mode="left" padding-char="0" />
+ 		<field id="dateAction" bit="73" type="string" length="6" />
+ 		<field id="creditsNumber" bit="74" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="creditsReversalNumber" bit="75" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="debitsNumber" bit="76" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="debitsReversalNumber" bit="77" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="transferNumber" bit="78" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="transferReversalNumber" bit="79" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="inquiriesNumber" bit="80" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="authorisationsNumber" bit="81" type="string" length="10" padding-mode="left" padding-char="0" />
+ 		<field id="creditsProcesssingFeeAmount" bit="82" type="string" length="14" padding-mode="left" padding-char="0" />
+ 		<field id="creditsTransactionFeeAmount" bit="83" type="string" length="14" padding-mode="left" padding-char="0" />
+ 		<field id="debitsProcessingFeeAmount" bit="84" type="string" length="14" padding-mode="left" padding-char="0" />
+ 		<field id="debitsTransactionFeeAmount" bit="85" type="string" length="14" padding-mode="left" padding-char="0" />
+ 		<field id="creditsAmount" bit="86" type="string" length="15" padding-mode="left" padding-char="0" />
+ 		<field id="creditsReversalAmount" bit="87" type="string" length="15" padding-mode="left" padding-char="0" />
+ 		<field id="debitsAmount" bit="88" type="string" length="15" padding-mode="left" padding-char="0" />
+ 		<field id="debitsReversalAmount" bit="89" type="string" length="15" padding-mode="left" padding-char="0" />
+ 		<field id="originalDataElements" bit="90" type="string" length="42" padding-mode="left" />
+ 		<field id="fileUpdateCode" bit="91" type="string" length="1" />
+ 		<field id="fileSecurityCode" bit="92" type="string" length="2" padding-mode="left" padding-char="0" />
+ 		<field id="responseIndicator" bit="93" type="string" length="5" padding-mode="left" padding-char="0" />
+ 		<field id="serviceIndicator" bit="94" type="string" length="7" />
+ 		<field id="replacementAmounts" bit="95" type="string" length="42" />
+ 		<field id="messageSecurityCode" bit="96" type="string" length="8" />
+ 		<field id="amountNetSettlement" bit="97" type="string" length="16" padding-mode="left" padding-char="0" />
+ 		<field id="payee" bit="98" type="string" length="25" />
+ 		<field id="settlementInstitutionIdentificationCode" bit="99" type="string" length="11" format="llvar" />
+ 		<field id="receivingInstitutionIdentificationCode" bit="100" type="string" length="11" format="llvar" />
+ 		<field id="slipNumber" bit="101" type="string" length="11" format="llvar" />
+ 		<field id="fromAccount" bit="102" type="string" length="28" format="llvar" />
+ 		<field id="toAccount" bit="103" type="string" length="28" format="llvar" />
+ 		<field id="transactionDescription" bit="104" type="string" length="100" format="lllvar" />
+ 		<field id="reservedForIsoUse1" bit="105" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForIsoUse2" bit="106" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForIsoUse3" bit="107" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForIsoUse4" bit="108" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForIsoUse5" bit="109" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForIsoUse6" bit="110" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForIsoUse7" bit="111" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForNationalUse" bit="112" type="string" length="999" format="lllvar" />
+ 		<field id="authorisingAgentInstitutionIdCode" bit="113" type="string" length="11" format="llvar" />
+ 		<field id="reservedForNationalUse1" bit="114" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForNationalUse2" bit="115" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForNationalUse3" bit="116" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForNationalUse4" bit="117" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForNationalUse5" bit="118" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForNationalUse6" bit="119" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForPrivateUse1" bit="120" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForPrivateUse2" bit="121" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForPrivateUse3" bit="122" type="string" length="999" format="lllvar" />
+ 		<field id="reservedForPrivateUse4" bit="123" type="string" length="999" format="lllvar" />
+ 		<field id="infoText" bit="124" type="string" length="255" format="lllvar" />
+ 		<field id="networkManagementInformation" bit="125" type="string" length="50" format="lllvar" />
+ 		<field id="issuerTraceId" bit="126" type="string" length="6" format="lllvar" />
+ 		<field id="reservedForPrivateUse" bit="127" type="string" length="11" format="lllvar" />
+ 		<field id="messageAuthenticationCode2" bit="128" type="string" length="16" />
+ 	</field>
+ 	<field id="!type" type="script" encode="true">iso-8583-bi-conn</field>
+ 	<field id="!mid" type="script" encode="true">${msg.transmissionDateTime}.${msg.systemsTraceAuditNumber}</field>
+ 	<field id="!code" type="script" encode="true">${msg.messageType}.${msg.messageType.startsWith("08") ? msg.networkManagementInformationCode?.padLeft(6, "0") : msg.processingCode?.trim()}</field>
+</codex>
+', 'DB2PROD ', '2021-12-17 16:19:19.711712');
+
+INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-konven', 'incoming', 'iso-8583-bi-conn');
+INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-konven', 'outgoing', 'iso-8583-bi-conn');
+INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-syariah', 'incoming', 'iso-8583-bi-conn');
+INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('bi-conn-syariah', 'outgoing', 'iso-8583-bi-conn');
+
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-konven', 'echo', '3600000');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-konven', 'needSignOn', 'true');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-konven', 'timeout', '60000');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-syariah', 'echo', '3600000');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-syariah', 'needSignOn', 'true');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('bi-conn-syariah', 'timeout', '60000');
+
+INSERT INTO MWCONFIG.CLIENT (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) VALUES('bi-conn-konven', 0, 0, NULL, NULL, 1, 0, 'backend-iso');
+INSERT INTO MWCONFIG.CLIENT (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) VALUES('bi-conn-syariah', 0, 0, NULL, NULL, 1, 0, 'backend-iso');
+
+INSERT INTO MWCONFIG.CLIENT_TARGET (CLIENT_ID, ID, HOST, WEIGHT, SEQ) VALUES('bi-conn-konven', 'bi-conn-konven', 'localhost:13067', 1, 0);
+INSERT INTO MWCONFIG.CLIENT_TARGET (CLIENT_ID, ID, HOST, WEIGHT, SEQ) VALUES('bi-conn-syariah', 'bi-conn-syariah', 'localhost:8357', 1, 0);
+
+INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-konven.SIGN-ON', NULL, 'DB2PROD ', '2021-12-17 16:20:21.982167', '');
+INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-konven.ECHO-TEST', NULL, 'DB2PROD ', '2021-12-17 16:20:22.008627', '');
+INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-syariah.SIGN-ON', NULL, 'DB2PROD ', '2021-12-17 16:20:22.436100', '');
+INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('bi-conn-syariah.ECHO-TEST', NULL, 'DB2PROD ', '2021-12-17 16:20:22.462368', '');
+
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-konven.SIGN-ON', 1, '/data', '/data/body', NULL, NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-konven.ECHO-TEST', 1, '/data', '/data/body', 'bi-conn-konven.SIGN-ON', 1);
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-syariah.SIGN-ON', 1, '/data', '/data/body', NULL, NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('bi-conn-syariah.ECHO-TEST', 1, '/data', '/data/body', 'bi-conn-syariah.SIGN-ON', 1);
+
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '@', 'copyMessage();', 5);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'transmissionDateTime', '${getTimeZoneFormat("MMddHHmmss","GMT")}', 10);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'systemsTraceAuditNumber', '${counter("bi-conn-konven", 5, 1, "ddMMyy")}', 10);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!mid', '${tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value"}', 20);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!sid', '${getUID(tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value")}', 20);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!destination', 'bi-conn-konven', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, '!nosignon', 'true', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'messageType', '0800', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.SIGN-ON', 1, 'networkManagementInformationCode', '001', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-konven.ECHO-TEST', 1, 'networkManagementInformationCode', '301', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '@', 'copyMessage();', 5);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'transmissionDateTime', '${getTimeZoneFormat("MMddHHmmss","GMT")}', 10);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'systemsTraceAuditNumber', '${counter("bi-conn-syariah", 5, 1, "ddMMyy")}', 10);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!mid', '${tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value"}', 20);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!sid', '${getUID(tar.transmissionDateTime."!value"+"."+tar.systemsTraceAuditNumber."!value")}', 20);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!destination', 'bi-conn-syariah', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, '!nosignon', 'true', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'messageType', '0800', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.SIGN-ON', 1, 'networkManagementInformationCode', '001', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('bi-conn-syariah.ECHO-TEST', 1, 'networkManagementInformationCode', '301', NULL);
+
+INSERT INTO MWCONFIG.PARAM_MAP ("GROUP", NAME, VALUE, SEQ, MODIFIED_BY, "TIMESTAMP", DESCRIPTION) VALUES('bds-api-core', 'BIFast-bankCode', 'http://172.15.1.24:6604/mid/bifast/bankCode?id=MIDDLE&key=aCHuTi8R8ZfwKDPLeqTOWxoSeqPKkV84', NULL, 'DB2PROD ', '2021-12-17 16:50:50.761554', NULL);
+INSERT INTO MWCONFIG.PARAM_MAP ("GROUP", NAME, VALUE, SEQ, MODIFIED_BY, "TIMESTAMP", DESCRIPTION) VALUES('bds-api-core', 'BIFast-inqAcc', 'http://172.15.1.24:6604/mid/bifast/inqAccount?id=MIDDLE&key=aCHuTi8R8ZfwKDPLeqTOWxoSeqPKkV84', NULL, 'DB2PROD ', '2021-12-17 16:50:50.951212', NULL);
+INSERT INTO MWCONFIG.PARAM_MAP ("GROUP", NAME, VALUE, SEQ, MODIFIED_BY, "TIMESTAMP", DESCRIPTION) VALUES('bds-api-core', 'BIFast-inqTx', 'http://172.15.1.24:6604/mid/bifast/inqTransaction?id=MIDDLE&key=aCHuTi8R8ZfwKDPLeqTOWxoSeqPKkV84', NULL, 'DB2PROD ', '2021-12-17 16:50:51.047228', NULL);
+

+ 167 - 0
mwconfig/migration/MWCONFIG_INIT_FNTCONN.sql

@@ -0,0 +1,167 @@
+INSERT INTO MWCONFIG.ADAPTOR (ID, DESCRIPTION, ASYNCHRONOUS, MODIFIED_BY, "TIMESTAMP") VALUES('fnt-conn', 'connector/adaptor untuk FINNET', 1, 'wpsadmindev', '2022-02-07 12:57:15.725000');
+
+INSERT INTO MWCONFIG.CODEX (ID, ALLOW_PARTIAL, "XML", MODIFIED_BY, "TIMESTAMP") VALUES('iso-8583-finnet', NULL, '<codex id="iso-8583-finnet" escape="true">
+	<field id="packetLength" type="groupLengthBinary" big-endian="false" length="2" />
+	<field id="messageType" type="string" length="4" padding-mode="right" padding-char=" " />
+	<field id="bitmap" type="bitmap">
+		<field id="primaryAccountNumber" bit="2" type="string" length="19" format="llvar" />
+		<field id="processingCode" bit="3" type="string" length="6" />
+		<field id="amountTransaction" bit="4" type="string" length="12" padding-mode="left" padding-char="0" />
+		<field id="amountSettlement" bit="5" type="string" length="18" padding-mode="left" padding-char="0" />
+		<field id="amountCardholderBilling" bit="6" type="string" length="18" padding-mode="left" padding-char="0" />
+		<field id="transmissionDateTime" bit="7" type="string" length="10" />
+		<field id="amountCardholderBillingFee" bit="8" type="string" length="8" padding-mode="left" padding-char="0" />
+		<field id="conversionRateSettlement" bit="9" type="string" length="8" padding-mode="left" padding-char="0" />
+		<field id="conversionRateCardholderBilling" bit="10" type="string" length="8" padding-mode="left" padding-char="0" />
+		<field id="systemsTraceAuditNumber" bit="11" type="string" length="6" />
+		<field id="timeLocalTransaction" bit="12" type="string" length="6" />
+		<field id="dateLocalTransaction" bit="13" type="string" length="4" />
+		<field id="dateExpiration" bit="14" type="string" length="4" />
+		<field id="dateSettlement" bit="15" type="string" length="4" />
+		<field id="dateConversion" bit="16" type="string" length="4" />
+		<field id="dateCapture" bit="17" type="string" length="4" />
+		<field id="merchantType" bit="18" type="string" length="4" padding-mode="left" padding-char="0" />
+		<field id="acquiringInstitutionCountryCode" bit="19" type="string" length="3" padding-mode="left" padding-char="0" />
+		<field id="panExtendedCountryCode" bit="20" type="string" length="3" padding-mode="left" padding-char="0" />
+		<field id="forwardingInstitutionCountryCode" bit="21" type="string" length="3" padding-mode="left" padding-char="0" />
+		<field id="pointOfServiceEntryMode" bit="22" type="string" length="3" padding-mode="left" padding-char="0" />
+		<field id="applicationPanNumber" bit="23" type="string" length="3" padding-mode="left" padding-char="0" />
+		<field id="networkInternationalIdentifier" bit="24" type="string" length="3" padding-mode="left" padding-char="0" />
+		<field id="pointOfServiceConditionCode" bit="25" type="string" length="2" padding-mode="left" padding-char="0" />
+		<field id="pointOfServiceCaptureCode" bit="26" type="string" length="2" padding-mode="left" padding-char="0" />
+		<field id="authorisingIdentificationResponseLength" bit="27" type="string" length="1" padding-mode="left" padding-char="0" />
+		<field id="amountTransactionFee" bit="28" type="string" length="9" padding-mode="left" padding-char="0" />
+		<field id="amountSettlementFee" bit="29" type="string" length="9" padding-mode="left" padding-char="0" />
+		<field id="amountTransactionProcessingFee" bit="30" type="string" length="9" padding-mode="left" padding-char="0" />
+		<field id="amountSettlementProcessingFee" bit="31" type="string" length="9" padding-mode="left" padding-char="0" />
+		<field id="acquiringInstitutionIdentificationCode" bit="32" type="string" length="11" format="llvar" />
+		<field id="forwardingInstitutionIdentificationCode" bit="33" type="string" length="11" format="llvar" />
+		<field id="primaryAccountNumberExtended" bit="34" type="string" length="28" format="llvar" />
+		<field id="track2Data" bit="35" type="string" length="37" format="llvar" />
+		<field id="track3Data" bit="36" type="string" length="104" format="lllvar" />
+		<field id="retrievalReferenceNumber" bit="37" type="string" length="12" />
+		<field id="authorisationIdentificationResponse" bit="38" type="string" length="6" />  
+		<field id="responseCode" bit="39" type="string" length="2" padding-mode="left" />
+		<field id="serviceRestrictionCode" bit="40" type="string" length="3" />
+		<field id="cardAcceptorTerminalIdentification" bit="41" type="string" length="8" />
+		<field id="cardAcceptorIdentificationCode" bit="42" type="string" length="15" />
+		<field id="cardAcceptorName" bit="43" type="string" length="40" />
+		<field id="additionalResponseData" bit="44" type="string" length="25" format="llvar" />
+		<field id="track1Data" bit="45" type="string" length="76" format="llvar" />
+		<field id="additionalDataIso" bit="46" type="string" length="999" format="lllvar" />
+		<field id="additionalDataNational" bit="47" type="string" length="999" format="lllvar" />
+		<field id="additionalDataPrivate" bit="48" type="string" length="999" format="lllvar" />
+		<field id="currencyCodeTransaction" bit="49" type="string" length="3" />
+		<field id="currencyCodeSettlement" bit="50" type="string" length="3" />
+		<field id="currencyCodeCardholderBilling" bit="51" type="string" length="3" />
+		<field id="personalIdentificationNumberData" bit="52" type="string" length="16" />
+		<field id="securityRelatedControlInformation" bit="53" type="string" length="18" padding-mode="left" padding-char="0" />
+		<field id="additionalAmounts" bit="54" type="string" length="999" format="lllvar" />
+		<field id="reservedIso1" bit="55" type="string" length="999" format="lllvar" />
+		<field id="reservedIso2" bit="56" type="string" length="999" format="lllvar" />
+		<field id="reservedNational1" bit="57" type="string" length="999" format="lllvar" />
+		<field id="reservedNational2" bit="58" type="string" length="999" format="lllvar" />
+		<field id="reservedNational3" bit="59" type="string" length="999" format="lllvar" />
+		<field id="reasonCode" bit="60" type="string" length="999" format="lllvar" />
+		<field id="reservedPrivate1" bit="61" type="string" length="999" format="lllvar" />
+		<field id="reservedPrivate2" bit="62" type="string" length="999" format="lllvar" />
+		<field id="reservedPrivate3" bit="63" type="string" length="999" format="lllvar" />
+		<field id="messageAuthenticationCode" bit="64" type="string" length="16" />
+		<field id="bitMapTertiary" bit="65" type="string" length="16" />
+		<field id="settlementCode" bit="66" type="string" length="1" padding-mode="left" padding-char="0" />
+		<field id="extendedPaymentCode" bit="67" type="string" length="2" padding-mode="left" padding-char="0" />
+		<field id="receivingInstitutionCountryCode" bit="68" type="string" length="3" />
+		<field id="settlementInstitutionCountyCode" bit="69" type="string" length="3" />
+		<field id="networkManagementInformationCode" bit="70" type="string" length="3" />
+		<field id="messageNumber" bit="71" type="string" length="4" padding-mode="left" padding-char="0" />
+		<field id="messageNumberLast" bit="72" type="string" length="4" padding-mode="left" padding-char="0" />
+		<field id="dateAction" bit="73" type="string" length="6" />
+		<field id="creditsNumber" bit="74" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="creditsReversalNumber" bit="75" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="debitsNumber" bit="76" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="debitsReversalNumber" bit="77" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="transferNumber" bit="78" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="transferReversalNumber" bit="79" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="inquiriesNumber" bit="80" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="authorisationsNumber" bit="81" type="string" length="10" padding-mode="left" padding-char="0" />
+		<field id="creditsProcesssingFeeAmount" bit="82" type="string" length="12" padding-mode="left" padding-char="0" />
+		<field id="creditsTransactionFeeAmount" bit="83" type="string" length="12" padding-mode="left" padding-char="0" />
+		<field id="debitsProcessingFeeAmount" bit="84" type="string" length="12" padding-mode="left" padding-char="0" />
+		<field id="debitsTransactionFeeAmount" bit="85" type="string" length="12" padding-mode="left" padding-char="0" />
+		<field id="creditsAmount" bit="86" type="string" length="16" padding-mode="left" padding-char="0" />
+		<field id="creditsReversalAmount" bit="87" type="string" length="16" padding-mode="left" padding-char="0" />
+		<field id="debitsAmount" bit="88" type="string" length="16" padding-mode="left" padding-char="0" />
+		<field id="debitsReversalAmount" bit="89" type="string" length="16" padding-mode="left" padding-char="0" />
+		<field id="originalDataElements" bit="90" type="string" length="42" padding-mode="left" />
+		<field id="fileUpdateCode" bit="91" type="string" length="1" />
+		<field id="fileSecurityCode" bit="92" type="string" length="2" padding-mode="left" padding-char="0" />
+		<field id="responseIndicator" bit="93" type="string" length="5" padding-mode="left" padding-char="0" />
+		<field id="serviceIndicator" bit="94" type="string" length="7" />
+		<field id="replacementAmounts" bit="95" type="string" length="42" />
+		<field id="messageSecurityCode" bit="96" type="string" length="8" />
+		<field id="amountNetSettlement" bit="97" type="string" length="16" padding-mode="left" padding-char="0" />
+		<field id="payee" bit="98" type="string" length="25" />
+		<field id="settlementInstitutionIdentificationCode" bit="99" type="string" length="11" format="llvar" />
+		<field id="receivingInstitutionIdentificationCode" bit="100" type="string" length="11" format="llvar" />
+		<field id="slipNumber" bit="101" type="string" length="11" format="llvar" />
+		<field id="fromAccount" bit="102" type="string" length="28" format="llvar" />
+		<field id="toAccount" bit="103" type="string" length="28" format="llvar" />
+		<field id="transactionDescription" bit="104" type="string" length="100" format="lllvar" />
+		<field id="reservedForIsoUse1" bit="105" type="string" length="999" format="lllvar" />
+		<field id="reservedForIsoUse2" bit="106" type="string" length="999" format="lllvar" />
+		<field id="reservedForIsoUse3" bit="107" type="string" length="999" format="lllvar" />
+		<field id="reservedForIsoUse4" bit="108" type="string" length="999" format="lllvar" />
+		<field id="reservedForIsoUse5" bit="109" type="string" length="999" format="lllvar" />
+		<field id="reservedForIsoUse6" bit="110" type="string" length="999" format="lllvar" />
+		<field id="reservedForIsoUse7" bit="111" type="string" length="999" format="lllvar" />
+		<field id="reservedForNationalUse" bit="112" type="string" length="999" format="lllvar" />
+		<field id="authorisingAgentInstitutionIdCode" bit="113" type="string" length="11" format="llvar" />
+		<field id="reservedForNationalUse1" bit="114" type="string" length="999" format="lllvar" />
+		<field id="reservedForNationalUse2" bit="115" type="string" length="999" format="lllvar" />
+		<field id="reservedForNationalUse3" bit="116" type="string" length="999" format="lllvar" />
+		<field id="reservedForNationalUse4" bit="117" type="string" length="999" format="lllvar" />
+		<field id="reservedForNationalUse5" bit="118" type="string" length="999" format="lllvar" />
+		<field id="reservedForNationalUse6" bit="119" type="string" length="999" format="lllvar" />
+		<field id="reservedForPrivateUse1" bit="120" type="string" length="999" format="lllvar" />
+		<field id="reservedForPrivateUse2" bit="121" type="string" length="999" format="lllvar" />
+		<field id="reservedForPrivateUse3" bit="122" type="string" length="999" format="lllvar" />
+		<field id="reservedForPrivateUse4" bit="123" type="string" length="999" format="lllvar" />
+		<field id="infoText" bit="124" type="string" length="255" format="lllvar" />
+		<field id="networkManagementInformation" bit="125" type="string" length="50" format="lllvar" />
+		<field id="issuerTraceId" bit="126" type="string" length="6" format="lllvar" />
+		<field id="reservedForPrivateUse" bit="127" type="string" length="11" format="lllvar" />
+		<field id="messageAuthenticationCode2" bit="128" type="string" length="16" />
+	</field>
+	<field id="!type" type="script" encode="true">iso-8583-finnet</field>
+	<field id="!mid" type="script" encode="true">${msg.transmissionDateTime}.${msg.systemsTraceAuditNumber}</field>
+	<field id="!code" type="script" encode="true">${msg.messageType}.${msg.messageType.startsWith("08") ? msg.networkManagementInformationCode?.padLeft(6, "0") : msg.processingCode?.trim().substring(0,2) +"."+ msg.toAccount}</field>
+</codex>
+', 'DB2PROD ', '2012-01-13 21:39:52.699324');
+
+INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('fnt-conn', 'incoming', 'iso-8583-finnet');
+INSERT INTO MWCONFIG.ADAPTOR_CODEX (ADAPTOR_ID, ID, CODEX_ID) VALUES('fnt-conn', 'outgoing', 'iso-8583-finnet');
+
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('fnt-conn', 'echo', '120000');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('fnt-conn', 'needSignOn', 'TRUE');
+INSERT INTO MWCONFIG.ADAPTOR_PARAM (ADAPTOR_ID, NAME, VALUE) VALUES('fnt-conn', 'timeout', '60000');
+
+INSERT INTO MWCONFIG.CLIENT (ADAPTOR_ID, IDLE_WAIT, TIMEOUT, CLOSE_QUEUE, CONTROL_QUEUE, KEEP_CONN, REUSE_DELAY, NODE) VALUES('fnt-conn', 0, 0, NULL, NULL, 1, 0, 'billpayClientNode');
+
+INSERT INTO MWCONFIG.CLIENT_TARGET (CLIENT_ID, ID, HOST, WEIGHT, SEQ) VALUES('fnt-conn', 'fnt-conn', 'localhost:1100', 0, 1);
+
+INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('fnt-conn.ECHO-TEST', '', 'DB2PROD ', '2017-05-24 11:29:20.779458', '[zsym]');
+INSERT INTO MWCONFIG.MAPPING (ID, DESCRIPTION, MODIFIED_BY, "TIMESTAMP", MODULE) VALUES('fnt-conn.SIGN-ON', NULL, 'DB2PROD ', '2017-05-24 07:31:03.323678', '[zsym]');
+
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('fnt-conn.SIGN-ON', 1, '/data', '/data/body', NULL, NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('fnt-conn.SIGN-ON', 2, '/data', '/data/body', 'fnt-conn.SIGN-ON', 1);
+INSERT INTO MWCONFIG.MAPPING_GROUP (MAPPING_ID, ID, "SOURCE", TARGET, INCLUDE_MAPPING_ID, INCLUDE_ID) VALUES('fnt-conn.ECHO-TEST', 1, '/data', '/data/body', 'fnt-conn.SIGN-ON', 2);
+
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.ECHO-TEST', 1, 'networkManagementInformationCode', '301', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 1, 'messageType', '0800', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 1, 'networkManagementInformationCode', '001', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 1, 'systemsTraceAuditNumber', '${counter("fnt-conn", 5, 1, "ddMMyy")}', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 1, 'transmissionDateTime', '${getTimeZoneFormat(''MMddHHmmss'',''GMT'')}', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 2, '!destination', 'fnt-conn', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 2, '!mid', '${tar.systemsTraceAuditNumber.''!value''}', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 2, '!nosignon', 'true', NULL);
+INSERT INTO MWCONFIG.MAPPING_GROUP_LINE (MAPPING_ID, MAPPING_GROUP_ID, NAME, TEXT, SEQ) VALUES('fnt-conn.SIGN-ON', 2, '!sid', '${msg.sid==null?getUID(tar.systemsTraceAuditNumber.''!value''):msg.sid.''!value''}', NULL);

+ 89 - 0
nginx.conf

@@ -0,0 +1,89 @@
+events {
+    worker_connections 1024;
+}
+
+http {
+    server {
+        # Listen on the standard ACE administration port
+        listen 4454;
+
+        location / {
+            # Forward directly to the internal ACE container
+            proxy_pass http://btn-middleware:4454;
+
+            # Pass all original headers completely unmodified
+            proxy_set_header Host $host;
+            
+            # HTTP/1.1 support for persistent connections
+            proxy_http_version 1.1;
+
+            # Oversized buffers to seamlessly handle fragmented Java client packets
+            proxy_buffer_size 128k;
+            proxy_buffers 4 256k;
+            proxy_busy_buffers_size 256k;
+        }
+    }
+
+    server {
+        # Listen on the standard ACE administration port
+        listen 4474;
+
+        location / {
+            # Forward directly to the internal ACE container
+            proxy_pass http://btn-middleware:4474;
+
+            # Pass all original headers completely unmodified
+            proxy_set_header Host $host;
+            
+            # HTTP/1.1 support for persistent connections
+            proxy_http_version 1.1;
+
+            # Oversized buffers to seamlessly handle fragmented Java client packets
+            proxy_buffer_size 128k;
+            proxy_buffers 4 256k;
+            proxy_busy_buffers_size 256k;
+        }
+    }
+
+    server {
+        # Listen on the standard ACE administration port
+        listen 4534;
+
+        location / {
+            # Forward directly to the internal ACE container
+            proxy_pass http://btn-middleware:4534;
+
+            # Pass all original headers completely unmodified
+            proxy_set_header Host $host;
+            
+            # HTTP/1.1 support for persistent connections
+            proxy_http_version 1.1;
+
+            # Oversized buffers to seamlessly handle fragmented Java client packets
+            proxy_buffer_size 128k;
+            proxy_buffers 4 256k;
+            proxy_busy_buffers_size 256k;
+        }
+    }
+
+    server {
+        # Listen on the standard ACE administration port
+        listen 4494;
+
+        location / {
+            # Forward directly to the internal ACE container
+            proxy_pass http://btn-middleware:4494;
+
+            # Pass all original headers completely unmodified
+            proxy_set_header Host $host;
+            
+            # HTTP/1.1 support for persistent connections
+            proxy_http_version 1.1;
+
+            # Oversized buffers to seamlessly handle fragmented Java client packets
+            proxy_buffer_size 128k;
+            proxy_buffers 4 256k;
+            proxy_busy_buffers_size 256k;
+        }
+    }
+}