diff --git a/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java b/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java
index 5e790b6963e5bece6ecdde48a102ced589e2db0a..c88f89c156c4b18a4457be3ee10521b3160e923a 100644
--- a/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java
+++ b/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java
@@ -32,6 +32,7 @@ import org.olat.course.highscore.model.HighScoreRankingResults;
 import org.olat.course.highscore.ui.HighScoreTableEntry;
 import org.olat.modules.assessment.AssessmentEntry;
 import org.olat.user.UserManager;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -44,6 +45,9 @@ public class HighScoreManager {
 
 	private static final OLog log = Tracing.createLoggerFor(HighScoreManager.class);
 	
+	@Autowired
+	private UserManager userManager;
+	
 	/**
 	 * Sort rank by score, then by id and last alphabetically, 
 	 * determine rank of each member dependent on score,
@@ -52,7 +56,7 @@ public class HighScoreManager {
 	public HighScoreRankingResults sortRankByScore (List<AssessmentEntry>  assessEntries,
 			List<HighScoreTableEntry> allMembers, List<HighScoreTableEntry> ownIdMembers,
 			List<List<HighScoreTableEntry>> allPodium, List<Integer> ownIdIndices,	
-			int tableSize, Identity ownIdentity, UserManager userManager){
+			int tableSize, Identity ownIdentity){
 		
 		HighScoreTableEntry ownTableEntry = null;
 
@@ -118,10 +122,17 @@ public class HighScoreManager {
 			double min = Math.floor(Arrays.stream(scores).min().getAsDouble());
 			double range = max - min;
 			// use original scores if range is too small else convert results to fit histogram
-			if (range <= 20) {
+			if (range <= 20 && range <0) {
 				classwidth = 1;
 				return new HighScoreRankingResults(scores, classwidth, min);
 			} else {
+				if(lowerBorder == null) {
+					lowerBorder = 0f;
+				}
+				if(upperBorder == null) {
+					upperBorder = (float)max;
+				}
+
 				// decrease amount of possible classes to avoid overlapping of large numbers(condition) on x-axis 
 				boolean largeNumbers = range > 100d || max >= 1000d;
 				int maxnumberofclasses = largeNumbers ? 12 : 20;
diff --git a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java
index 0838e0f6ea468e7c63b3764afa4d4742258bb9c6..937d6717e3ca5d0db7b53b13530a0d23f3aae2c1 100644
--- a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java
+++ b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java
@@ -182,7 +182,7 @@ public class HighScoreRunController extends FormBasicController{
 		
 		// compute ranking and order
 		highscoreDataModel = highScoreManager.sortRankByScore(assessEntries, allMembers, ownIdMembers,
-				 allPodium, ownIdIndices, tableSize, ownIdentity, userManager);
+				 allPodium, ownIdIndices, tableSize, ownIdentity);
 		
 		allScores = highscoreDataModel.getScores();
 
diff --git a/src/main/java/org/olat/group/ui/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/group/ui/_i18n/LocalStrings_pl.properties
index ed44b7942f4ce6b1a536c6ae58a789a9fb9ec9cf..34ad1884da83b245d794d60f56145184b6678335 100644
--- a/src/main/java/org/olat/group/ui/_i18n/LocalStrings_pl.properties
+++ b/src/main/java/org/olat/group/ui/_i18n/LocalStrings_pl.properties
@@ -1,4 +1,4 @@
-#Thu Jul 27 15:56:40 CEST 2017
+#Thu Aug 03 10:29:08 CEST 2017
 LearningGroup=Grupa edukacyjna
 action.choose=Wybierz
 admin.menu.title=Grupa
@@ -91,25 +91,31 @@ module.admin.title=Zarz\u0105dzanie grupami
 module.privacy.desc=W celu zachowania zgodno\u015B\u0107 z zasadami dotycz\u0105cymi prywatno\u015Bci danych, dodawanie u\u017Cytkownika do grupy mo\u017Ce by\u0107 skonfigurowane tak, aby spowodowa\u0107 jego natychmiastowe cz\u0142onkostwo w grupie lub tylko wys\u0142anie zaproszenia, kt\u00F3re musi zosta\u0107 jednoznacznie zaakceptowane przez u\u017Cytkownika przed przyst\u0105pieniem do cz\u0142onkostwa w grupie.
 module.privacy.title=Ochrona danych
 module.resource.courses=Menad\u017Cerowie grup mog\u0105 wyszukiwa\u0107 i przypisywa\u0107 wszystkie kursy grupom.
+module.resource.courses.grant=Przyznane pe\u0142ne prawa dost\u0119pu do kursu
+module.resource.desc=W\u0142a\u015Bciciele kurs\u00F3w i grup mog\u0105 przypisywa\u0107 swoje grupy do swoich kurs\u00F3w. Dzi\u0119ki poni\u017Cszym ustawieniom, prawa do do\u0142\u0105czania i od\u0142\u0105czania grup do kurs\u00F3w mog\u0105 zosta\u0107 przypisane menad\u017Cerom grup i menad\u017Cerom zasob\u00F3w edukacyjnych.
+module.resource.groups=Menad\u017Cerowie zasob\u00F3w edukacyjnych mog\u0105 do\u0142\u0105cza\u0107 wszystkie grupy do kurs\u00F3w.
+module.resource.groups.grant=Przyznane pe\u0142ne prawa do zarz\u0105dzania grup\u0105
+module.resource.title=Grupa - przydzielanie zasob\u00F3w
 newgroup.title=Utw\u00F3rz now\u0105 grup\u0119 edukacyjn\u0105
 notification.mail.added.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 *** \r\n\r\nZosta\u0142e\u015B zaproszony do grupy przez\: {0} {1} ({2})\: \r\n\r\nNazwa grupy\: $groupname\r\nOpis\: $groupdescription\r\n\r\nW razie pyta\u0144 skontaktuj si\u0119 z {0} {1} ({2}). \r\n\r\nTa grupa edukacyjna jest u\u017Cywana w nast\u0119puj\u0105cych zasobach edukacyjnych\:\r\n\r\n$courselist
 notification.mail.added.self.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 *** \r\n\r\nW\u0142a\u015Bnie zapisa\u0142e\u015B si\u0119 do grupy\: \r\n\r\nNazwa grupy\: $groupname\r\nOpis\: $groupdescription\r\n\r\nTa grupa edukacyjna b\u0119dzie u\u017Cywana w nast\u0119puj\u0105cych zasobach edukacyjnych\:\r\n\r\n$courselist
-notification.mail.added.self.subject=Grupa edukacyjna OLAT\: $groupname 
+notification.mail.added.self.subject=Grupa edukacyjna $groupname
 notification.mail.added.subject=Grupa edukacyjna OLAT\: $groupname 
 notification.mail.error=Nie uda\u0142o si\u0119 wys\u0142a\u0107 wiadomo\u015Bci e-mail. Poinformuj tego u\u017Cytkownika osobi\u015Bcie.
+notification.mail.no.ressource=Ta grupa nie jest wykorzystywana w \u017Cadnym zasobie edukacyjnym.
 notification.mail.removed.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 *** \r\n\r\nZosta\u0142e\u015B wypisany z grupy przez\: {0} {1} ({2})\:  \r\n\r\nNazwa grupy\: $groupname\r\nOpis\: $groupdescription\r\n\r\nW razie pyta\u0144 skontaktuj si\u0119 z{0} {1} ({2}).\r\n\r\nTa grupa edukacyjna jest u\u017Cywana w nast\u0119puj\u0105cych zasobach edukacyjnych\:\r\n\r\n$courselist
 notification.mail.removed.self.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 *** \r\n\r\nWypisa\u0142e\u015B si\u0119 z grupy\: \r\n\r\nNazwa grupy\: $groupname\r\nOpis\: $groupdescription\r\n\r\nTa grupa edukacyjna by\u0142a u\u017Cywana w nast\u0119puj\u0105cych zasobach edukacyjnych\:\r\n\r\n$courselist
-notification.mail.removed.self.subject=Grupa edukacyjna OLAT\: $groupname - Zosta\u0142e\u015B wypisany.
+notification.mail.removed.self.subject=Grupa edukacyjna $groupname - Zosta\u0142e\u015B wypisany.
 notification.mail.removed.subject=Grupa edukacyjna OLAT\: $groupname - Zosta\u0142e\u015B wypisany.
 notification.mail.self.error=Nie uda\u0142o si\u0119 wys\u0142a\u0107 wiadomo\u015Bci e-mail
 notification.mail.waitingList.added.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 ***  \n\n Jeste\u015B w kolejce oczekuj\u0105cych do nast\u0119puj\u0105cej grupy edukacyjnej\: \n\n Nazwa grupy\: $groupname\n Opis\: $groupdescription\n\n
-notification.mail.waitingList.added.subject=Grupa edukacyjna OLAT\: $groupname - kolejka oczekuj\u0105cych
+notification.mail.waitingList.added.subject=Grupa edukacyjna $groupname - kolejka oczekuj\u0105cych
 notification.mail.waitingList.removed.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 ***  \n\n Nie jeste\u015B ju\u017C w kolejce oczekuj\u0105cych do nast\u0119puj\u0105cej grupy edukacyjnej\: \n\n Nazwa grupy\: $groupname\n Opis\: $groupdescription\n\n
-notification.mail.waitingList.removed.subject=Grupa edukacyjna OLAT\: $groupname - kolejka oczekuj\u0105cych\: Zosta\u0142e\u015B wypisany
+notification.mail.waitingList.removed.subject=Grupa edukacyjna $groupname - kolejka oczekuj\u0105cych\: Zosta\u0142e\u015B wypisany
 notification.mail.waitingList.transfer.body=*** Wiadomo\u015B\u0107 generowana automatycznie, nie odpowiadaj na ni\u0105 ***  \n\n Zosta\u0142e\u015B automatycznie przeniesiony z kolejki oczekuj\u0105cych do listy uczestnik\u00F3w nast\u0119puj\u0105cej grupy edukacyjnej\: \n\n Nazwa grupy\:  $groupname\n Opis\: $groupdescription\n\n
-notification.mail.waitingList.transfer.subject=Grupa edukacyjna OLAT\: $groupname - kolejka oczekuj\u0105cych\: Zmiana Twojego statusu
+notification.mail.waitingList.transfer.subject=Grupa edukacyjna $groupname - kolejka oczekuj\u0105cych\: Zmiana Twojego statusu
 overview.intro=Zarz\u0105dzanie grupami edukacyjnymi kursu.
-overview.title=Zarz\u0105dzanie kontekstem edukacyjnym
+overview.title=Zarz\u0105dzanie grup\u0105
 owners.message=E-mail do wszystkich w\u0142a\u015Bcicieli
 owners.message.to=Wszyscy nauczyciele
 sendtochooser.form.chckbx.owners=Wszyscy nauczyciele
diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java b/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java
index fc81c2bc91db4ab1f4866c1bdc00e0f303642568..e1f8f7674c4445d1b4a88ddb89e0b653044bf417 100644
--- a/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java
+++ b/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java
@@ -1,4 +1,5 @@
 /**
+
  * <a href="http://www.openolat.org">
  * OpenOLAT - Online Learning and Training</a><br>
  * <p>
@@ -211,6 +212,10 @@ public class QTI21QPoolServiceProvider implements QPoolSPI {
 			VFSItem file = container.resolve(item.getRootFilename());
 			if(file instanceof VFSLeaf) {
 				VFSLeaf leaf = (VFSLeaf)file;
+				if(leaf.getSize() <= 0l) {
+					return "";
+				}
+				
 				QTI21SAXHandler handler = new QTI21SAXHandler();
 				try(InputStream is = leaf.getInputStream()) {
 					XMLReader parser = XMLReaderFactory.createXMLReader();
@@ -219,7 +224,7 @@ public class QTI21QPoolServiceProvider implements QPoolSPI {
 					parser.setFeature("http://xml.org/sax/features/validation", false);
 					parser.parse(new InputSource(is));
 				} catch (Exception e) {
-					log.error("", e);
+					log.error("Cannot read the XML file of the question item: " + leaf, e);
 				}
 				return handler.toString();
 			}
diff --git a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java
index ec69dea6b8bf1f44fb8d98f46789d7c08256afc2..c9ac65800f796d603f8442cda0da48c878e938b0 100644
--- a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java
+++ b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java
@@ -489,6 +489,7 @@ public class LDAPLoginManagerImpl implements LDAPLoginManager, GenericEventListe
 		String filter = ldapDao.buildSearchUserFilter(ldapUserIDAttribute, uid);
 		LdapContext ctx = bindSystem();
 		String userDN = ldapDao.searchUserDNByUid(uid, ctx);
+		log.info("create and persist user identifier by userDN: " + userDN + " with filter: " + filter);
 		LDAPUserVisitor visitor = new LDAPUserVisitor(syncConfiguration);	
 		ldapDao.search(visitor, userDN, filter, syncConfiguration.getUserAttributes(), ctx);
 
diff --git a/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java b/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java
index 501095325e05d986bcc00d1f8ebf964489ca765e..6f0095e68a4c4d5876b55f681eefd55abc59842c 100644
--- a/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java
+++ b/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java
@@ -500,10 +500,12 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController
 	protected void processEntryChangedEvent(EntryChangedEvent repoEvent) {
 		if(repoEvent.isMe(getIdentity()) &&
 				(repoEvent.getChange() == Change.addBookmark || repoEvent.getChange() == Change.removeBookmark)) {
-			boolean marked = markManager.isMarked(OresHelper.clone(re), getIdentity(), null);
-			String css = "o_icon " + (marked ? Mark.MARK_CSS_ICON : Mark.MARK_ADD_CSS_ICON);
-			bookmarkLink.setIconLeftCSS(css);
-			bookmarkLink.setTitle( translate(marked ? "details.bookmark.remove" : "details.bookmark"));
+			if(bookmarkLink != null) {
+				boolean marked = markManager.isMarked(OresHelper.clone(re), getIdentity(), null);
+				String css = "o_icon " + (marked ? Mark.MARK_CSS_ICON : Mark.MARK_ADD_CSS_ICON);
+				bookmarkLink.setIconLeftCSS(css);
+				bookmarkLink.setTitle( translate(marked ? "details.bookmark.remove" : "details.bookmark"));
+			}
 		}
 	}
 
diff --git a/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java b/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java
index 3b1cd5164bac0bdbdd6e19b04741b2a5a7971cb1..7c82bb9d5176e32062a486c06a853582dc9de8af 100644
--- a/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java
+++ b/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java
@@ -24,6 +24,12 @@
 * <p>
 */
 package org.olat.course.highscore;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
 /**
  * Description:<br>
  * HighScoreManagerTest
@@ -31,11 +37,6 @@ package org.olat.course.highscore;
  * @author fkiefer
  */
 import java.util.List;
-
-import static org.junit.Assert.*;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.UUID;
 
 import org.junit.Test;
@@ -48,35 +49,19 @@ import org.olat.modules.assessment.manager.AssessmentEntryDAO;
 import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
-import org.olat.user.UserManager;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class HighScoreManagerTest extends OlatTestCase {
 	
-	private List<HighScoreTableEntry> allMembers, ownIdMembers;
-	private List<List<HighScoreTableEntry>> allPodium;
-	private List<Integer> ownIdIndices;
-	
-	@Autowired
-	private HighScoreManager highScoreManager;
-	@Autowired
-	private UserManager userManager;
 	@Autowired
 	private DB dbInstance;
 	@Autowired
+	private HighScoreManager highScoreManager;
+	@Autowired
 	private AssessmentEntryDAO courseNodeAssessmentDao;
-	
-	@Test 
-	public void springtest() {
-		assertNotNull(highScoreManager);
-		assertNotNull(userManager);
-		assertNotNull(dbInstance);
-		assertNotNull(courseNodeAssessmentDao);
-	}
 
 	@Test
 	public void highscoreTest() {
-		
 		List<AssessmentEntry> assessEntries = new ArrayList<>();
 		int[] scores = {1,23,10};
 		Identity assessedIdentity = null;
@@ -92,17 +77,17 @@ public class HighScoreManagerTest extends OlatTestCase {
 			AssessmentEntry reloadedAssessment = courseNodeAssessmentDao.loadAssessmentEntryById(nodeAssessment.getKey());
 			assessEntries.add(reloadedAssessment);
 		}
-		
-		ownIdIndices = new ArrayList<>();
-		allMembers = new ArrayList<>();
-		ownIdMembers = new ArrayList<>();
-		allPodium = new ArrayList<>();
+
+		List<Integer> ownIdIndices = new ArrayList<>();
+		List<HighScoreTableEntry> allMembers = new ArrayList<>();
+		List<HighScoreTableEntry> ownIdMembers = new ArrayList<>();
+		List<List<HighScoreTableEntry>> allPodium = new ArrayList<>();
 		allPodium.add(new ArrayList<>());
 		allPodium.add(new ArrayList<>());
 		allPodium.add(new ArrayList<>());
 		
 		double[] allScores = highScoreManager.sortRankByScore(assessEntries, allMembers, ownIdMembers, allPodium,
-				ownIdIndices, 5, JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-2"), userManager)
+				ownIdIndices, 5, JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-2"))
 				.getScores();
 		
 		assertNotNull(allScores);
@@ -115,7 +100,5 @@ public class HighScoreManagerTest extends OlatTestCase {
 
 		long classwidth = highScoreManager.processHistogramData(allScores, 0F, 30F).getClasswidth();
 		assertEquals(2L, classwidth);
-		
 	}
-
-}
+}
\ No newline at end of file