diff --git a/src/main/java/org/eclipse/openk/elogbook/common/BackendConfig.java b/src/main/java/org/eclipse/openk/elogbook/common/BackendConfig.java
index 45c640a..78a05da 100644
--- a/src/main/java/org/eclipse/openk/elogbook/common/BackendConfig.java
+++ b/src/main/java/org/eclipse/openk/elogbook/common/BackendConfig.java
@@ -38,6 +38,11 @@
   private boolean enableEmailPresenceCheckJob;
   private boolean isOnlySendSameDayReminderEmail;
 
+  private String cronSyncContacts;
+  private boolean enableContactSyncJob;
+  private String contactServiceTechUser;
+  private String contactServiceTechUserPwd;
+
   private static BackendConfig instance;
 
   private BackendConfig() {
@@ -128,6 +133,22 @@
   public boolean isOnlySendSameDayReminderEmail() {
     return isOnlySendSameDayReminderEmail;
   }
+
+  public String getCronSyncContacts() {
+    return cronSyncContacts;
+  }
+
+  public boolean isEnableContactSyncJob() {
+    return enableContactSyncJob;
+  }
+
+  public String getContactServiceTechUser() {
+    return contactServiceTechUser;
+  }
+
+  public String getContactServiceTechUserPwd() {
+    return contactServiceTechUserPwd;
+  }
 }
 
 
diff --git a/src/main/java/org/eclipse/openk/elogbook/common/timer/ContactSyncJob.java b/src/main/java/org/eclipse/openk/elogbook/common/timer/ContactSyncJob.java
new file mode 100644
index 0000000..81a35e3
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/elogbook/common/timer/ContactSyncJob.java
@@ -0,0 +1,27 @@
+package org.eclipse.openk.elogbook.common.timer;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.elogbook.controller.BackendControllerUser;
+import org.eclipse.openk.elogbook.exceptions.BtbException;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+public class ContactSyncJob implements Job {
+
+    private static final Logger LOGGER = Logger.getLogger(ContactSyncJob.class.getName());
+
+    @Override
+    public void execute(JobExecutionContext arg0) throws JobExecutionException {
+        LOGGER.debug("Quartz: ContactSyncJob called");
+
+        try {
+            new BackendControllerUser().synchronizeContacts();
+        } catch (BtbException btbException) {
+            LOGGER.error("Error in synchronizeContacts");
+        }
+        LOGGER.debug("Quartz: ContactSyncJob finished");
+
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/elogbook/common/timer/InitContactSyncJobServlet.java b/src/main/java/org/eclipse/openk/elogbook/common/timer/InitContactSyncJobServlet.java
new file mode 100644
index 0000000..06f2ffd
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/elogbook/common/timer/InitContactSyncJobServlet.java
@@ -0,0 +1,50 @@
+package org.eclipse.openk.elogbook.common.timer;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.elogbook.common.BackendConfig;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.JobBuilder;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.quartz.TriggerBuilder;
+import org.quartz.impl.StdSchedulerFactory;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+
+public class InitContactSyncJobServlet extends HttpServlet {
+
+    private static final long serialVersionUID = -7802116179801471578L;
+
+    private static final Logger LOGGER = Logger.getLogger(InitContactSyncJobServlet.class.getName());
+
+    @Override
+    public void init() throws ServletException {
+        String cronExpression = BackendConfig.getInstance().getCronSyncContacts();
+        boolean isJobEnabled = BackendConfig.getInstance().isEnableContactSyncJob();
+        if (isJobEnabled) {
+            LOGGER.info("Init timer: 'Check contact sync job' triggered with cronExpression: " + cronExpression);
+
+            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("CheckContactSyncTrigger", "CheckContactSyncTriggerGroup1")
+                    .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).build();
+
+            Scheduler scheduler;
+
+            try {
+                JobDetail contactSyncJob = JobBuilder.newJob(ContactSyncJob.class)
+                        .withIdentity("contactSyncJob", "contactSyncJobGroup").build();
+                scheduler = new StdSchedulerFactory().getScheduler();
+                scheduler.start();
+                scheduler.scheduleJob(contactSyncJob, trigger);
+            } catch (SchedulerException e) {
+                LOGGER.error("SchedulerException caught", e);
+            }
+        } else {
+            LOGGER.info("'Check contact sync job' is disabled");
+        }
+
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java b/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
index 6e0a18d..38c675a 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
@@ -13,6 +13,7 @@
 package org.eclipse.openk.elogbook.controller;
 
 import org.apache.log4j.Logger;
+import org.eclipse.openk.elogbook.auth2.model.JwtToken;
 import org.eclipse.openk.elogbook.auth2.model.KeyCloakUser;
 import org.eclipse.openk.elogbook.auth2.util.JwtHelper;
 import org.eclipse.openk.elogbook.common.BackendConfig;
@@ -56,6 +57,17 @@
 		return userAuthenticationList;
 	}
 
+	public String portalLogin(String user, String pwd) throws BtbException {
+		LOGGER.debug("portalLogin is called");
+		String credentials = "{ \"userName\": \""+user+"\", \"password\": \""+pwd+"\"}";
+		RestServiceWrapper restServiceWrapper = new RestServiceWrapper(BackendConfig.getInstance().getPortalBaseURL(), false);
+		String url = "login";
+		JwtToken jwt = JsonGeneratorBase.getGson().fromJson( restServiceWrapper.performPostRequest(url, "", credentials), JwtToken.class );
+
+		return jwt.getAccessToken();
+
+	}
+
 	public UserAuthentication authenticate(String credentials) throws BtbException {
 		LOGGER.debug("authenticate() is called");
 
@@ -112,6 +124,20 @@
 
 	}
 
+
+	public void synchronizeContacts() throws BtbException {
+		LOGGER.debug("synchronizeContacts() is called");
+
+		try {
+			ContactBaseDataManager.getInstance().synchronizeContacts(portalLogin(
+					BackendConfig.getInstance().getContactServiceTechUser(),
+					BackendConfig.getInstance().getContactServiceTechUserPwd()
+			));
+		} finally {
+			LOGGER.debug("synchronizeContacts() is finished");
+		}
+
+	}
 	public String getUserSettings( String modUser ) throws BtbInternalServerError {
 		LOGGER.debug("getUserSettings() is called");
 		EntityManager emOrg = EntityHelper.getEMF().createEntityManager();
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java b/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
index 8bc650d..ec45f29 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
@@ -12,18 +12,27 @@
 package org.eclipse.openk.elogbook.controller;
 
 
+import org.apache.log4j.Logger;
 import org.eclipse.openk.elogbook.common.BackendConfig;
 import org.eclipse.openk.elogbook.common.JsonGeneratorBase;
 import org.eclipse.openk.elogbook.communication.RestServiceWrapper;
 import org.eclipse.openk.elogbook.exceptions.BtbException;
+import org.eclipse.openk.elogbook.persistence.dao.AutoCloseEntityManager;
+import org.eclipse.openk.elogbook.persistence.dao.EntityHelper;
+import org.eclipse.openk.elogbook.persistence.dao.TblNotificationDao;
 import org.eclipse.openk.elogbook.viewmodel.contactbasedata.ContactTupel;
 import org.eclipse.openk.elogbook.viewmodel.contactbasedata.VwDetailedContact;
 import org.eclipse.openk.elogbook.viewmodel.contactbasedata.VwDetailedContactPage;
 
+import javax.persistence.EntityManager;
 import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 public class ContactBaseDataManager {
+    private static final Logger LOGGER = Logger.getLogger(ContactBaseDataManager.class.getName());
+
 
     private static final ContactBaseDataManager INSTANCE = new ContactBaseDataManager();
 
@@ -42,6 +51,25 @@
         return vwDetailedContactPage.getContent().stream().map(this::mapFromViewObj ).collect(Collectors.toList());
     }
 
+    public void synchronizeContacts(String token) {
+        LOGGER.debug("synchronizeContacts is called");
+        EntityManager emOrg = EntityHelper.getEMF().createEntityManager();
+        try (AutoCloseEntityManager em = new AutoCloseEntityManager(emOrg)) {
+            em.getTransaction().begin();
+            TblNotificationDao notifDao = new TblNotificationDao(em);
+            Map<UUID, String> uuid2NameMap = getUserContacts(token).stream().collect(Collectors.toMap(ContactTupel::getContactUuid, ContactTupel::getContactName));
+            notifDao.getDistinctResponsibilityForwardingUuid()
+                        .forEach( contactUuid -> notifDao.updateResponsibilityForwardingByContactUuid( contactUuid, uuid2NameMap.getOrDefault(contactUuid, "/gelöscht/")));
+            em.getTransaction().commit();
+
+        } catch (BtbException btbException) {
+            LOGGER.error("error in synchronizeContacts", btbException);
+        } finally {
+            LOGGER.debug("synchronizeContacts is finished");
+        }
+    }
+
+
     private ContactTupel mapFromViewObj( VwDetailedContact vwDetailedContact ) {
         String userName = vwDetailedContact.getName();
         if (userName != null) {
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java b/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
index 4b33f32..b7ba24b 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
@@ -580,6 +580,24 @@
 		}
 	}
 
+
+	public static class SynchronizeContacts extends BackendInvokable {
+
+		private BackendControllerUser backendControllerUser;
+		private String token;
+
+		public SynchronizeContacts(BackendControllerUser backendControllerUser, String token) {
+			this.backendControllerUser = backendControllerUser;
+			this.token = token;
+		}
+
+		@Override
+		public Response invoke() throws BtbException {
+			backendControllerUser.synchronizeContacts();
+			return ResponseBuilderWrapper.INSTANCE
+					.buildOKResponse(JsonGeneratorBase.getGson().toJson(Globals.OK_STRING));
+		}
+	}
 	public static class GetTestMail extends BackendInvokable {
 
 		private BackendControllerUser backendControllerUser;
diff --git a/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java b/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java
index d8bf720..9685cbb 100644
--- a/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java
+++ b/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java
@@ -11,11 +11,6 @@
 */
 package org.eclipse.openk.elogbook.persistence.dao;
 
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
 import org.eclipse.openk.elogbook.common.NotificationStatus;
 import org.eclipse.openk.elogbook.exceptions.BtbException;
 import org.eclipse.openk.elogbook.exceptions.BtbInternalServerError;
@@ -29,6 +24,13 @@
 import org.eclipse.openk.elogbook.viewmodel.NotificationSearchFilter;
 import org.eclipse.openk.elogbook.viewmodel.ReminderSearchFilter;
 
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
 public class TblNotificationDao extends GenericDaoJpa<TblNotification, Integer> {
 	private static final String VIEW_ACTIVE_NOTIFICATION = EntityHelper.instance().makeIdentifier("VIEW_ACTIVE_NOTIFICATION");
 	private static final String FK_REF_NOTIFICATION_STATUS = EntityHelper.instance().makeIdentifier("fk_ref_notification_status");
@@ -36,6 +38,7 @@
 	private static final String INCIDENT_ID = EntityHelper.instance().makeIdentifier("incident_id");
 	private static final String VERSION = EntityHelper.instance().makeIdentifier("version");
 	private static final String RESPONSIBILITY_FORWARDING = EntityHelper.instance().makeIdentifier("responsibility_forwarding");
+	private static final String RESPONSIBILITY_FORW_UUID = EntityHelper.instance().makeIdentifier("responsibility_forwarding_uuid");
 
 
 
@@ -189,6 +192,31 @@
 		}
 	}
 
+	public List<UUID> getDistinctResponsibilityForwardingUuid() throws BtbInternalServerError {
+		try {
+			String selectString = "select distinct "+RESPONSIBILITY_FORW_UUID+" from "+TBL_NOTIFICATION+" n where n.responsibility_forwarding_uuid is not null";
+			Query q = getEM().createNativeQuery(selectString);
+			return q.getResultList();
+
+		} catch (Exception t) {
+			LOGGER.error(t);
+			throw new BtbInternalServerError("Error loading distict responsibility forwarding uuid");
+		}
+	}
+
+	public void updateResponsibilityForwardingByContactUuid( UUID contactUuid, String contactName ) {
+		try {
+			String selectString = "update "+TBL_NOTIFICATION+" set "+RESPONSIBILITY_FORWARDING+" = ? where "+RESPONSIBILITY_FORW_UUID+" = ?";
+			Query q = getEM().createNativeQuery(selectString);
+			q.setParameter(2, contactUuid);
+			q.setParameter(1, contactName);
+			q.executeUpdate();
+
+		} catch (Exception t) {
+			LOGGER.error(t);
+		}
+	}
+
 
 	/**
 	 * Create and execute the query to get a collection of notifications.
diff --git a/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java b/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java
index 7f9b029..b0b694e 100644
--- a/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java
+++ b/src/main/java/org/eclipse/openk/elogbook/rest/BackendRestService.java
@@ -325,6 +325,15 @@
 				new ControllerImplementations.GetUserSuggestions(new BackendControllerUser(), token));
 	}
 
+
+	@GET
+	@Path("/synchronizeContacts")
+	@Produces("application/json")
+	public Response synchronizeContacts(@HeaderParam(value = Globals.KEYCLOAK_AUTH_TAG) String token) {
+		return invoke(token, SecureType.NORMAL,
+				new ControllerImplementations.SynchronizeContacts(new BackendControllerUser(), token));
+	}
+
 	@GET
 	@Path("/testmail")
 	@Produces("application/json")
diff --git a/src/main/resources/backendConfigDevLocal.json b/src/main/resources/backendConfigDevLocal.json
index feea975..f0de1af 100644
--- a/src/main/resources/backendConfigDevLocal.json
+++ b/src/main/resources/backendConfigDevLocal.json
@@ -18,5 +18,12 @@
   "isOnlySendSameDayReminderEmail": true,
 
   "cronEmailPresenceCheck": "30 0 16 * * ?",
-  "enableEmailPresenceCheckJob": true
+  "enableEmailPresenceCheckJob": true,
+
+  "_cronSyncContacts": "0 0 1 * * ?",
+  "cronSyncContacts": "* 0/1 * * * ?",
+  "enableContactSyncJob": true,
+  "contactServiceTechUser": "admin",
+  "contactServiceTechUserPwd": "admin"
+
 }
diff --git a/src/main/resources/backendConfigDevServer.json b/src/main/resources/backendConfigDevServer.json
index 423efd9..f945a7c 100644
--- a/src/main/resources/backendConfigDevServer.json
+++ b/src/main/resources/backendConfigDevServer.json
@@ -19,5 +19,11 @@
 
   "_cronEmailPresenceCheck": "30 0 16 * * ?",
   "cronEmailPresenceCheck": "* 0/1 * * * ?",
-  "enableEmailPresenceCheckJob": true
+  "enableEmailPresenceCheckJob": true,
+
+  "_cronSyncContacts": "0 0 1 * * ?",
+  "cronSyncContacts": "* 0/1 * * * ?",
+  "enableContactSyncJob": true,
+  "contactServiceTechUser": "admin",
+  "contactServiceTechUserPwd": "admin"
 }
diff --git a/src/main/resources/backendConfigProduction.json b/src/main/resources/backendConfigProduction.json
index da1c02d..dc6de41 100644
--- a/src/main/resources/backendConfigProduction.json
+++ b/src/main/resources/backendConfigProduction.json
@@ -16,5 +16,11 @@
 
   "_cronEmailPresenceCheck": "30 0 16 * * ?",
   "cronEmailPresenceCheck": "0/10 * * * * ?",
-  "enableEmailPresenceCheckJob": true
+  "enableEmailPresenceCheckJob": true,
+
+  "cronSyncContacts": "0 0 1 * * ?",
+  "enableContactSyncJob": true,
+  "contactServiceTechUser": "admin",
+  "contactServiceTechUserPwd": "admin"
+
 }
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index d8a0ce9..99fd8b3 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -73,5 +73,9 @@
         <load-on-startup>3</load-on-startup>
     </servlet>
 
-
+    <servlet>
+        <servlet-name>InitContactSyncJobServlet</servlet-name>
+        <servlet-class>org.eclipse.openk.elogbook.common.timer.InitContactSyncJobServlet</servlet-class>
+        <load-on-startup>4</load-on-startup>
+    </servlet>
 </web-app>
diff --git a/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java b/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java
index 57dfa37..5087479 100644
--- a/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java
+++ b/src/test/java/org/eclipse/openk/elogbook/controller/ControllerImplementationsTest.java
@@ -369,7 +369,7 @@
     public void testGetAssignedUserSuggestions() throws BtbException {
         List<String> assignedUserSuggestionsList = new LinkedList<>();
 
-        ControllerImplementations.GetUserSuggestions controllerImpl = new ControllerImplementations.GetUserSuggestions(beMockUser, "fakeToken");
+        ControllerImplementations.SynchronizeContacts controllerImpl = new ControllerImplementations.SynchronizeContacts(beMockUser, "fakeToken");
         expect(beMockUser.getAssignedUserSuggestions()).andReturn(assignedUserSuggestionsList);
          PowerMock.replay(beMockUser);
 
