diff --git a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
index d446cc5c3ed06f3683f6ed2874f0fcb55beb9221..acc3d4d6af16f5a623d57e47879a2c4a6a9b679f 100644
--- a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
+++ b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
@@ -210,6 +210,7 @@
       <consumer>Persons</consumer>
       <linkedContext>Person</linkedContext>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/contact_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
diff --git a/entity/VisitPlanEntry_entity/entityfields/contact_id/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/contact_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc2a97999f5e408ffa806ed0ab21e76d4cc29e1e
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/contact_id/valueProcess.js
@@ -0,0 +1,18 @@
+import("Contact_lib");
+import("Sql_lib");
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.get("$this.value") == null || vars.get("$this.value") == undefined))
+{
+    var isPersonContact = newSelect("PERSON.PERSONID").from("PERSON")
+        .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID")
+        .whereIfSet("CONTACT.CONTACTID", vars.get("$param.ContactId_param")).cell()
+
+    if(isPersonContact)
+    {
+        result.string(vars.get("$param.ContactId_param"));
+    }
+}
\ No newline at end of file