diff --git a/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayServiceBinder.java b/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayServiceBinder.java
index 90162ea..9e3ba06 100644
--- a/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayServiceBinder.java
+++ b/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayServiceBinder.java
@@ -67,66 +67,66 @@
   @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
   public synchronized void bindPersistenceService(final IPersistenceService persistenceService) {
     DisplayServiceBinder.persistenceService = persistenceService;
-    log.debug("Mobile PersistenceService bound");
+    log.debug("Display PersistenceService bound");
   }
   
   public synchronized void unbindPersistenceService(final IPersistenceService persistenceService) {
     DisplayServiceBinder.persistenceService = null;
-    log.debug("Mobile PersistenceService unbound");
+    log.debug("Display PersistenceService unbound");
   }
   
   @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
   public synchronized void bindThemeResourceService(final IThemeResourceService themeResourceService) {
     DisplayServiceBinder.themeResourceService = themeResourceService;
-    log.debug("Mobile ThemeResourceService bound");
+    log.debug("Display ThemeResourceService bound");
   }
   
   public synchronized void unbindThemeResourceService(final IThemeResourceService themeResourceService) {
     DisplayServiceBinder.themeResourceService = null;
-    log.debug("Mobile ThemeResourceService unbound");
+    log.debug("Display ThemeResourceService unbound");
   }
   
   @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
   public synchronized void bindUserAccessService(final IUserAccessService userAccessService) {
     DisplayServiceBinder.userAccessService = userAccessService;
-    log.debug("Mobile UserAccessService bound");
+    log.debug("Display UserAccessService bound");
   }
   
   public synchronized void unbindUserAccessService(final IUserAccessService userAccessService) {
     DisplayServiceBinder.userAccessService = null;
-    log.debug("Mobile UserAccessService unbound");
+    log.debug("Display UserAccessService unbound");
   }
   
   @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
   public synchronized void bindDSLMetadataService(final IDSLMetadataService dslMetadataService) {
     DisplayServiceBinder.dslMetadataService = dslMetadataService;
-    log.debug("Mobile DSLMetadataService bound");
+    log.debug("Display DSLMetadataService bound");
   }
   
   public synchronized void unbindDSLMetadataService(final IDSLMetadataService dslMetadataService) {
     DisplayServiceBinder.dslMetadataService = null;
-    log.debug("Mobile DSLMetadataService unbound");
+    log.debug("Display DSLMetadataService unbound");
   }
   
   @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
   public synchronized void bindReportProvider(final IReportProvider reportProvider) {
     DisplayServiceBinder.reportProvider = reportProvider;
-    log.debug("Mobile ReportProvider bound");
+    log.debug("Display ReportProvider bound");
   }
   
   public synchronized void unbindReportProvider(final IReportProvider reportProvider) {
     DisplayServiceBinder.reportProvider = null;
-    log.debug("Mobile ReportProvider unbound");
+    log.debug("Display ReportProvider unbound");
   }
 
   @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
   public synchronized void bindEventDispatcher(final IEventDispatcher eventDispatcher) {
     DisplayServiceBinder.eventDispatcher = eventDispatcher;
-    log.debug("Mobile EventDispatcher bound");
+    log.debug("Display EventDispatcher bound");
   }
   
   public synchronized void unbindEventDispatcher(final IEventDispatcher eventDispatcher) {
     DisplayServiceBinder.eventDispatcher = null;
-    log.debug("Mobile EventDispatcher unbound");
+    log.debug("Display EventDispatcher unbound");
   }
 }
diff --git a/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplaySession.java b/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplaySession.java
index 3f69f89..76de4c6 100644
--- a/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplaySession.java
+++ b/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplaySession.java
@@ -50,6 +50,7 @@
 		super(eclipseContext);
 		this.ui = ui;
 		this.fragment = fragment;
+		LOGGER.error("*** display fragment:{} ***", fragment);
 		setType(Type.SLAVE);
 	}
 
diff --git a/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayUI.java b/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayUI.java
index eadd8e9..1ff6026 100644
--- a/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayUI.java
+++ b/org.eclipse.osbp.display/src/org/eclipse/osbp/display/servlet/DisplayUI.java
@@ -99,15 +99,15 @@
 	 */
 	@Override
 	protected void init(VaadinRequest request) {
-		// fragment has pattern #{master-host}-{displayName} NOSONAR
+		// fragment has pattern #{master-host}§{displayName} NOSONAR
 		String fragment = getPage().getUriFragment();
-		String[] tokens = fragment.split("-");
+		String[] tokens = fragment.split("§");
 		masterId = tokens[0];
 		displayId = tokens[1];
 
 		createEnvironment();
 
-		LOGGER.debug("init");
+		LOGGER.error("*** init display master:{} display:{} ***", masterId, displayId);
 		setTheme("osbp");
 
 		VaadinObservables.getRealm(getUI());
@@ -155,6 +155,7 @@
 		try {
 			InetAddress netAddress = InetAddress.getByName(getPage().getWebBrowser().getAddress());
 			String hostName = netAddress.getHostName();
+			LOGGER.error("*** display hostname:{} ***", hostName);
 			appContext.set("ip", hostName);
 		} catch (UnknownHostException e) {
 			LOGGER.error("{}", e);
