{ "edges": [ { "id": "start-1751870920411-form-1751870928350-1751954902366", "data": {}, "type": "smoothstep", "label": "", "source": "start-1751870920411", "target": "form-1751870928350", "animated": true, "sourceHandle": "start-1751870920411-right", "targetHandle": "form-1751870928350-left" }, { "id": "form-1751870928350-api-1751871528249-1751954924255", "data": {}, "type": "smoothstep", "label": "", "source": "form-1751870928350", "target": "api-1751871528249", "animated": true, "sourceHandle": "form-1751870928350-bottom", "targetHandle": "api-1751871528249-top" }, { "id": "api-1751871528249-script-1751871635000-1751954926618", "data": {}, "type": "smoothstep", "label": "", "source": "api-1751871528249", "target": "script-1751871635000", "animated": true, "sourceHandle": "api-1751871528249-right", "targetHandle": "script-1751871635000-left" }, { "id": "form-1751871700000-script-1751871635000-1751954928000", "data": {}, "type": "smoothstep", "label": "", "source": "form-1751871700000", "target": "script-1751871635000", "animated": true, "sourceHandle": "form-1751871700000-bottom", "targetHandle": "script-1751871635000-top" }, { "id": "api-1751871750000-form-1751871700000-1751954936240", "data": {}, "type": "smoothstep", "label": "", "source": "api-1751871750000", "target": "form-1751871700000", "animated": true, "sourceHandle": "api-1751871750000-bottom", "targetHandle": "form-1751871700000-top" }, { "id": "api-1751871750000-script-1751871770000-1751954938889", "data": {}, "type": "smoothstep", "label": "", "source": "api-1751871750000", "target": "script-1751871770000", "animated": true, "sourceHandle": "api-1751871750000-right", "targetHandle": "script-1751871770000-left" }, { "id": "script-1751871770000-gateway-1751871800000-1751954943222", "data": {}, "type": "smoothstep", "label": "", "source": "script-1751871770000", "target": "gateway-1751871800000", "animated": true, "sourceHandle": "script-1751871770000-bottom", "targetHandle": "gateway-1751871800000-left" }, { "id": "gateway-1751871800000-business-rule-1751871900000-1751954958263", "data": {}, "type": "smoothstep", "label": "Ya", "source": "gateway-1751871800000", "target": "business-rule-1751871900000", "animated": true, "sourceHandle": "gateway-1751871800000-right", "targetHandle": "business-rule-1751871900000-left" }, { "id": "gateway-1751871800000-notification-1751872000000-1751954960514", "data": {}, "type": "smoothstep", "label": "Tidak", "source": "gateway-1751871800000", "target": "notification-1751872000000", "animated": true, "sourceHandle": "gateway-1751871800000-right", "targetHandle": "notification-1751872000000-left" }, { "id": "business-rule-1751871900000-notification-1751871950000-1751954963756", "data": {}, "type": "smoothstep", "label": "", "source": "business-rule-1751871900000", "target": "notification-1751871950000", "animated": true, "sourceHandle": "business-rule-1751871900000-right", "targetHandle": "notification-1751871950000-left" }, { "id": "notification-1751871950000-end-1751872100000-1751954966017", "data": {}, "type": "smoothstep", "label": "", "source": "notification-1751871950000", "target": "end-1751872100000", "animated": true, "sourceHandle": "notification-1751871950000-bottom", "targetHandle": "end-1751872100000-top" }, { "id": "notification-1751872000000-end-1751872100000-1751954967691", "data": {}, "type": "smoothstep", "label": "", "source": "notification-1751872000000", "target": "end-1751872100000", "animated": true, "sourceHandle": "notification-1751872000000-right", "targetHandle": "end-1751872100000-left" } ], "nodes": [ { "id": "start-1751870920411", "data": { "label": "Start", "description": "Process start point" }, "type": "start", "label": "Start", "position": { "x": 210, "y": 180 } }, { "id": "form-1751870928350", "data": { "label": "Borang Maklumat Peribadi", "formId": 1, "formName": "Borang Maklumat Peribadi", "formUuid": "9f08fc8f-b170-478a-85fd-fa3364401533", "description": "Form: Borang Maklumat Peribadi", "assignedRoles": [], "assignedUsers": [], "inputMappings": [], "assignmentType": "public", "outputMappings": [ { "formField": "text_3", "processVariable": "text3" }, { "formField": "select_1", "processVariable": "select1" }, { "formField": "form_jeniskp_1", "processVariable": "formJeniskp1" }, { "formField": "form_jeniskp_2", "processVariable": "formJeniskp2" }, { "formField": "form_jeniskp_3", "processVariable": "formJeniskp3" }, { "formField": "text_warganegara", "processVariable": "textWarganegara" }, { "formField": "radio_jantina", "processVariable": "radioJantina" }, { "formField": "radio_bangsa", "processVariable": "radioBangsa" }, { "formField": "nyatakan_lain2", "processVariable": "nyatakanLain2" }, { "formField": "radio_9_copy", "processVariable": "radio9Copy" }, { "formField": "radio_pendidikan", "processVariable": "radioPendidikan" }, { "formField": "text_14", "processVariable": "text14" }, { "formField": "date_masukislam", "processVariable": "dateMasukislam" }, { "formField": "date_masukislam_copy", "processVariable": "dateMasukislamCopy" }, { "formField": "select_statusperkahwinan", "processVariable": "selectStatusperkahwinan" }, { "formField": "hubungan_keluarga", "processVariable": "hubunganKeluarga" }, { "formField": "hubungan_lain_nyatakan", "processVariable": "hubunganLainNyatakan" }, { "formField": "nama_tanggungan", "processVariable": "namaTanggungan" }, { "formField": "jenis_kad_tanggungan", "processVariable": "jenisKadTanggungan" }, { "formField": "no_pengenalan_tanggungan", "processVariable": "noPengenalanTanggungan" }, { "formField": "jantina_tanggungan", "processVariable": "jantinaTanggungan" }, { "formField": "tarikh_lahir_tanggungan", "processVariable": "tarikhLahirTanggungan" }, { "formField": "tempat_lahir_tanggungan", "processVariable": "tempatLahirTanggungan" }, { "formField": "bangsa_tanggungan", "processVariable": "bangsaTanggungan" }, { "formField": "bangsa_lain_tanggungan", "processVariable": "bangsaLainTanggungan" }, { "formField": "status_kahwin_tanggungan", "processVariable": "statusKahwinTanggungan" }, { "formField": "tarikh_masuk_islam_tanggungan", "processVariable": "tarikhMasukIslamTanggungan" }, { "formField": "tarikh_mula_kfam_tanggungan", "processVariable": "tarikhMulaKfamTanggungan" }, { "formField": "warganegara_tanggungan", "processVariable": "warganegaraTanggungan" }, { "formField": "tempat_menetap_tanggungan", "processVariable": "tempatMenetapTanggungan" }, { "formField": "no_telefon_tanggungan", "processVariable": "noTelefonTanggungan" }, { "formField": "nama_pemegang_akaun", "processVariable": "namaPemegangAkaun" }, { "formField": "nama_bank", "processVariable": "namaBank" }, { "formField": "no_akaun_bank", "processVariable": "noAkaunBank" }, { "formField": "cara_pembayaran", "processVariable": "caraPembayaran" }, { "formField": "sebab_tunai", "processVariable": "sebabTunai" }, { "formField": "bersekolah_tanggungan", "processVariable": "bersekolahTanggungan" }, { "formField": "pendidikan_tertinggi_tanggungan", "processVariable": "pendidikanTertinggiTanggungan" }, { "formField": "pendidikan_lain_tanggungan", "processVariable": "pendidikanLainTanggungan" }, { "formField": "nama_sekolah", "processVariable": "namaSekolah" }, { "formField": "alamat_sekolah", "processVariable": "alamatSekolah" }, { "formField": "daerah_sekolah", "processVariable": "daerahSekolah" }, { "formField": "negeri_sekolah", "processVariable": "negeriSekolah" }, { "formField": "poskod_sekolah", "processVariable": "poskodSekolah" }, { "formField": "tinggal_bersama_keluarga", "processVariable": "tinggalBersamaKeluarga" } ], "fieldConditions": [], "assignmentVariable": "", "assignmentVariableType": "user_id" }, "type": "form", "label": "Borang Maklumat Peribadi", "position": { "x": 375, "y": 120 } }, { "id": "api-1751871528249", "data": { "label": "Submit Profile API", "apiUrl": "https://jsonplaceholder.typicode.com/posts", "headers": "{ \"Content-Type\": \"application/json\" }", "apiMethod": "POST", "description": "Submit user profile to external system", "requestBody": "{\n \"applicantName\": \"{text3}\",\n \"idType\": \"{select1}\",\n \"mykadNumber\": \"{formJeniskp1}\",\n \"passportNumber\": \"{formJeniskp2}\",\n \"birthCertNumber\": \"{formJeniskp3}\",\n \"nationality\": \"{textWarganegara}\",\n \"gender\": \"{radioJantina}\",\n \"race\": \"{radioBangsa}\",\n \"otherRace\": \"{nyatakanLain2}\",\n \"isStudying\": \"{radio9Copy}\",\n \"education\": \"{radioPendidikan}\",\n \"otherEducation\": \"{text14}\",\n \"islamConversionDate\": \"{dateMasukislam}\",\n \"kfamStartDate\": \"{dateMasukislamCopy}\",\n \"maritalStatus\": \"{selectStatusperkahwinan}\",\n \"dependentInfo\": {\n \"relationship\": \"{hubunganKeluarga}\",\n \"otherRelationship\": \"{hubunganLainNyatakan}\",\n \"name\": \"{namaTanggungan}\",\n \"idType\": \"{jenisKadTanggungan}\",\n \"idNumber\": \"{noPengenalanTanggungan}\",\n \"gender\": \"{jantinaTanggungan}\",\n \"birthDate\": \"{tarikhLahirTanggungan}\",\n \"birthPlace\": \"{tempatLahirTanggungan}\",\n \"race\": \"{bangsaTanggungan}\",\n \"otherRace\": \"{bangsaLainTanggungan}\",\n \"maritalStatus\": \"{statusKahwinTanggungan}\",\n \"islamConversionDate\": \"{tarikhMasukIslamTanggungan}\",\n \"kfamStartDate\": \"{tarikhMulaKfamTanggungan}\",\n \"nationality\": \"{warganegaraTanggungan}\",\n \"residenceDuration\": \"{tempatMenetapTanggungan}\",\n \"phoneNumber\": \"{noTelefonTanggungan}\",\n \"isStudying\": \"{bersekolahTanggungan}\",\n \"education\": \"{pendidikanTertinggiTanggungan}\",\n \"otherEducation\": \"{pendidikanLainTanggungan}\",\n \"schoolName\": \"{namaSekolah}\",\n \"schoolAddress\": \"{alamatSekolah}\",\n \"schoolDistrict\": \"{daerahSekolah}\",\n \"schoolState\": \"{negeriSekolah}\",\n \"schoolPostcode\": \"{poskodSekolah}\",\n \"liveWithFamily\": \"{tinggalBersamaKeluarga}\"\n },\n \"bankingInfo\": {\n \"accountHolderName\": \"{namaPemegangAkaun}\",\n \"bankName\": \"{namaBank}\",\n \"accountNumber\": \"{noAkaunBank}\",\n \"paymentMethod\": \"{caraPembayaran}\",\n \"cashReason\": \"{sebabTunai}\"\n }\n}", "errorVariable": "apiError", "outputVariable": "apiResponse", "continueOnError": false }, "type": "api", "label": "Submit Profile API", "position": { "x": 375, "y": 360 } }, { "id": "script-1751871635000", "data": { "label": "Process API Response", "scriptCode": "// Extract important data from API response\nconst apiData = processVariables.apiResponse;\n\nif (apiData && apiData.data) {\n // Extract application ID\n processVariables.applicationId = apiData.data.id || 'APP-' + Date.now();\n \n // Determine if documents are required based on profile\n processVariables.documentsRequired = true;\n \n // Set verification level based on education and other factors\n if (processVariables.radioPendidikan === 'ijazah' || processVariables.radioPendidikan === 'diploma') {\n processVariables.verificationLevel = 'enhanced';\n processVariables.documentsRequired = true;\n } else {\n processVariables.verificationLevel = 'standard';\n }\n \n // Extract applicant name for verification form\n processVariables.applicantName = processVariables.text3;\n \n // Process dependent information if available\n if (processVariables.namaTanggungan) {\n processVariables.hasDependents = true;\n processVariables.dependentCount = 1;\n processVariables.dependentName = processVariables.namaTanggungan;\n } else {\n processVariables.hasDependents = false;\n processVariables.dependentCount = 0;\n }\n \n // Process banking information\n if (processVariables.namaBank && processVariables.noAkaunBank) {\n processVariables.hasBankingInfo = true;\n processVariables.paymentReady = true;\n } else {\n processVariables.hasBankingInfo = false;\n processVariables.paymentReady = false;\n }\n \n // Set status for next step\n processVariables.profileSubmissionStatus = 'success';\n processVariables.nextStepReady = true;\n \n console.log('Profile processed successfully:', {\n applicationId: processVariables.applicationId,\n verificationLevel: processVariables.verificationLevel,\n documentsRequired: processVariables.documentsRequired,\n hasDependents: processVariables.hasDependents,\n hasBankingInfo: processVariables.hasBankingInfo\n });\n} else {\n // Handle API error case\n processVariables.profileSubmissionStatus = 'failed';\n processVariables.nextStepReady = false;\n processVariables.errorMessage = 'Failed to submit profile';\n}", "description": "Transform API response for document verification step", "errorVariable": "scriptError", "inputVariables": [ "apiResponse", "text3", "radioPendidikan", "namaTanggungan", "namaBank", "noAkaunBank" ], "scriptLanguage": "javascript", "continueOnError": false, "outputVariables": [ { "name": "applicationId", "type": "string", "description": "Generated application ID" }, { "name": "documentsRequired", "type": "boolean", "description": "Whether documents verification is required" }, { "name": "verificationLevel", "type": "string", "description": "Level of verification required" }, { "name": "applicantName", "type": "string", "description": "Applicant name for verification" }, { "name": "hasDependents", "type": "boolean", "description": "Whether applicant has dependents" }, { "name": "dependentCount", "type": "number", "description": "Number of dependents" }, { "name": "dependentName", "type": "string", "description": "Name of dependent" }, { "name": "hasBankingInfo", "type": "boolean", "description": "Whether banking information is provided" }, { "name": "paymentReady", "type": "boolean", "description": "Whether payment processing is ready" }, { "name": "profileSubmissionStatus", "type": "string", "description": "Status of profile submission" }, { "name": "nextStepReady", "type": "boolean", "description": "Whether ready for next step" } ] }, "type": "script", "label": "Process API Response", "position": { "x": 720, "y": 360 } }, { "id": "form-1751871700000", "data": { "label": "Borang Semak Dokumen", "formId": 2, "formName": "Borang Semak Dokumen", "formUuid": "2a15fc8f-c270-478a-95fd-fa4364401644", "description": "Document verification form", "assignedRoles": ["verifier"], "assignedUsers": [], "inputMappings": [ { "formField": "reference_number", "processVariable": "applicationId" }, { "formField": "applicant_name", "processVariable": "applicantName" }, { "formField": "dependent_name", "processVariable": "dependentName" }, { "formField": "has_dependents", "processVariable": "hasDependents" }, { "formField": "verification_level", "processVariable": "verificationLevel" } ], "assignmentType": "role", "outputMappings": [ { "formField": "verification_result", "processVariable": "documentVerificationResult" }, { "formField": "verification_notes", "processVariable": "verificationNotes" } ], "fieldConditions": [], "assignmentVariable": "", "assignmentVariableType": "user_id" }, "type": "form", "label": "Borang Semak Dokumen", "position": { "x": 720, "y": 120 } }, { "id": "api-1751871750000", "data": { "label": "Submit Document Verification API", "apiUrl": "https://api.example.com/documents/verify", "headers": "{ \"Content-Type\": \"application/json\", \"Authorization\": \"Bearer {apiToken}\" }", "apiMethod": "POST", "description": "Submit document verification results to external system", "requestBody": "{\n \"applicationId\": \"{applicationId}\",\n \"applicantName\": \"{applicantName}\",\n \"verificationResult\": \"{documentVerificationResult}\",\n \"verificationNotes\": \"{verificationNotes}\",\n \"verificationLevel\": \"{verificationLevel}\",\n \"verifiedBy\": \"{verifiedBy}\",\n \"verificationDate\": \"{verificationDate}\",\n \"documentStatus\": {\n \"applicantId\": \"{formJeniskp1}\",\n \"dependentInfo\": {\n \"hasDependents\": {hasDependents},\n \"dependentName\": \"{dependentName}\",\n \"dependentId\": \"{noPengenalanTanggungan}\"\n },\n \"bankingVerified\": {hasBankingInfo},\n \"profileScore\": {profileScore}\n }\n}", "errorVariable": "verificationApiError", "outputVariable": "verificationApiResponse", "continueOnError": false }, "type": "api", "label": "Submit Document Verification API", "position": { "x": 720, "y": -105 } }, { "id": "script-1751871770000", "data": { "label": "Process Verification Response", "scriptCode": "// Process document verification API response\nconst verificationData = processVariables.verificationApiResponse;\n\nif (verificationData && verificationData.data) {\n // Extract verification status\n processVariables.verificationStatus = verificationData.data.status || 'pending';\n \n // Set document completeness based on verification result\n if (processVariables.documentVerificationResult === 'lengkap') {\n processVariables.documentsComplete = true;\n processVariables.canProceedToKifayah = true;\n \n // Extract additional data from verification response\n if (verificationData.data.eligibilityScore) {\n processVariables.eligibilityScore = verificationData.data.eligibilityScore;\n }\n \n if (verificationData.data.riskAssessment) {\n processVariables.riskAssessment = verificationData.data.riskAssessment;\n }\n \n // Set verification completion timestamp\n processVariables.verificationCompletedAt = new Date().toISOString();\n \n } else {\n processVariables.documentsComplete = false;\n processVariables.canProceedToKifayah = false;\n processVariables.rejectionReason = processVariables.verificationNotes || 'Dokumen tidak lengkap';\n }\n \n // Process dependent verification if applicable\n if (processVariables.hasDependents && verificationData.data.dependentVerification) {\n processVariables.dependentVerificationStatus = verificationData.data.dependentVerification.status;\n processVariables.dependentDocumentsComplete = verificationData.data.dependentVerification.documentsComplete;\n }\n \n // Set next step readiness\n processVariables.verificationProcessed = true;\n processVariables.readyForDecision = true;\n \n console.log('Verification processed successfully:', {\n verificationStatus: processVariables.verificationStatus,\n documentsComplete: processVariables.documentsComplete,\n canProceedToKifayah: processVariables.canProceedToKifayah,\n eligibilityScore: processVariables.eligibilityScore\n });\n \n} else {\n // Handle verification API error\n processVariables.verificationStatus = 'failed';\n processVariables.documentsComplete = false;\n processVariables.canProceedToKifayah = false;\n processVariables.verificationError = 'Failed to process verification';\n processVariables.readyForDecision = false;\n}", "description": "Process document verification API response and set decision variables", "errorVariable": "verificationScriptError", "inputVariables": [ "verificationApiResponse", "documentVerificationResult", "verificationNotes", "hasDependents", "dependentName" ], "scriptLanguage": "javascript", "continueOnError": false, "outputVariables": [ { "name": "verificationStatus", "type": "string", "description": "Status of document verification process" }, { "name": "documentsComplete", "type": "boolean", "description": "Whether all documents are complete" }, { "name": "canProceedToKifayah", "type": "boolean", "description": "Whether process can proceed to kifayah analysis" }, { "name": "eligibilityScore", "type": "number", "description": "Eligibility score from verification" }, { "name": "riskAssessment", "type": "string", "description": "Risk assessment result" }, { "name": "verificationCompletedAt", "type": "string", "description": "Timestamp when verification was completed" }, { "name": "rejectionReason", "type": "string", "description": "Reason for rejection if documents incomplete" }, { "name": "dependentVerificationStatus", "type": "string", "description": "Dependent verification status" }, { "name": "dependentDocumentsComplete", "type": "boolean", "description": "Whether dependent documents are complete" }, { "name": "verificationProcessed", "type": "boolean", "description": "Whether verification processing is complete" }, { "name": "readyForDecision", "type": "boolean", "description": "Whether ready for decision gateway" } ] }, "type": "script", "label": "Process Verification Response", "position": { "x": 1020, "y": -105 } }, { "id": "gateway-1751871800000", "data": { "label": "Lengkap?", "conditions": [ { "id": "condition-group-ya-path", "output": "Ya", "conditions": [ { "id": "condition-1", "value": "lengkap", "operator": "eq", "variable": "documentVerificationResult", "valueType": "string", "logicalOperator": "and" } ] }, { "id": "condition-group-tidak-path", "output": "Tidak", "conditions": [ { "id": "condition-2", "value": "tidak_lengkap", "operator": "eq", "variable": "documentVerificationResult", "valueType": "string", "logicalOperator": "and" } ] } ], "defaultPath": "notification-1751872000000", "description": "Check if documents are complete", "gatewayType": "exclusive" }, "type": "gateway", "label": "Lengkap?", "position": { "x": 1125, "y": 195 } }, { "id": "business-rule-1751871900000", "data": { "label": "Analisis Had Kifayah", "ruleGroups": [ { "id": "group-1", "name": "Married with Dependents", "actions": [ { "id": "action-1-1", "type": "set_variable", "value": "married_with_dependents", "variable": "householdType" }, { "id": "action-1-2", "type": "set_variable", "value": 1215, "variable": "baseKifayahAmount" }, { "id": "action-1-3", "type": "set_variable", "value": 780, "variable": "spouseKifayahAmount" } ], "operator": "AND", "conditions": [ { "id": "condition-1-1", "value": "berkahwin", "operator": "eq", "variable": "selectStatusperkahwinan" }, { "id": "condition-1-2", "value": true, "operator": "eq", "variable": "hasDependents" } ] }, { "id": "group-2", "name": "Single with Dependents", "actions": [ { "id": "action-2-1", "type": "set_variable", "value": "single_with_dependents", "variable": "householdType" }, { "id": "action-2-2", "type": "set_variable", "value": 1215, "variable": "baseKifayahAmount" }, { "id": "action-2-3", "type": "set_variable", "value": 0, "variable": "spouseKifayahAmount" } ], "operator": "AND", "conditions": [ { "id": "condition-2-1", "value": "berkahwin", "operator": "neq", "variable": "selectStatusperkahwinan" }, { "id": "condition-2-2", "value": true, "operator": "eq", "variable": "hasDependents" } ] }, { "id": "group-3", "name": "Calculate Dependent Allowance", "actions": [ { "id": "action-3-1", "type": "set_variable", "value": 408, "variable": "dependentAllowance" }, { "id": "action-3-2", "type": "set_variable", "value": "school_age_7_17", "variable": "dependentType" } ], "operator": "AND", "conditions": [ { "id": "condition-3-1", "value": true, "operator": "eq", "variable": "hasDependents" }, { "id": "condition-3-2", "value": "ya", "operator": "eq", "variable": "bersekolahTanggungan" } ] } ], "description": "Calculate Had Kifayah based on household composition and income", "errorVariable": "kifayahCalculationError", "outputVariable": "kifayahCalculationResult" }, "type": "business-rule", "label": "Analisis Had Kifayah", "position": { "x": 1485, "y": 45 } }, { "id": "notification-1751871950000", "data": { "label": "Hantar Keputusan Had Kifayah", "message": "Assalamualaikum {applicantName},\n\nAnalisis Had Kifayah untuk permohonan anda dengan rujukan {applicationId} telah selesai.\n\n=== BUTIRAN ANALISIS HAD KIFAYAH ===\n\nJenis Isi Rumah: {householdType}\nJumlah Had Kifayah: RM {totalHadKifayah}\n\nPecahan:\n- Ketua Keluarga: RM {baseKifayahAmount}\n- Pasangan: RM {spouseKifayahAmount}\n- Tanggungan ({dependentCount} orang): RM {dependentAllowance}\n\nTarikh Analisis: {kifayahCalculationDate}\nStatus: {kifayahStatus}\n\nSila tunggu maklumat lanjut mengenai keputusan permohonan anda.\n\nTerima kasih.", "subject": "Keputusan Analisis Had Kifayah - Permohonan {applicationId}", "template": "kifayah-calculation-template", "description": "Send Had Kifayah calculation results to applicant", "errorVariable": "kifayahNotificationError", "recipientType": "variable", "recipientValue": "applicantEmail", "notificationType": "email" }, "type": "notification", "label": "Hantar Keputusan Had Kifayah", "position": { "x": 1890, "y": 30 } }, { "id": "notification-1751872000000", "data": { "label": "Terima Notifikasi", "message": "Assalamualaikum {applicantName},\n\nPermohonan anda dengan rujukan {applicationId} tidak dapat diproses kerana dokumen yang dikemukakan tidak lengkap.\n\nSila lengkapkan dokumen yang diperlukan dan kemukakan semula permohonan anda.\n\nCatatan daripada pegawai pengesah:\n{verificationNotes}\n\nTerima kasih.", "subject": "Dokumen Tidak Lengkap - Permohonan {applicationId}", "template": "incomplete-documents-template", "description": "Send notification for incomplete documents", "errorVariable": "notificationError", "recipientType": "variable", "recipientValue": "applicantEmail", "notificationType": "email" }, "type": "notification", "label": "Terima Notifikasi", "position": { "x": 1485, "y": 360 } }, { "id": "end-1751872100000", "data": { "label": "End", "description": "Process completion - documents incomplete" }, "type": "end", "label": "End", "position": { "x": 1950, "y": 420 } } ], "viewport": { "x": -117.3519061583577, "y": 343.2355816226784, "zoom": 0.7722385141739979 } }