diff --git a/src/main/java/org/olat/basesecurity/AuthHelper.java b/src/main/java/org/olat/basesecurity/AuthHelper.java
index 23627735571badd48b6f1404f53ab67a5841dfcb..aa83450a11b6ed5eb99142b4385877e34ded7f84 100644
--- a/src/main/java/org/olat/basesecurity/AuthHelper.java
+++ b/src/main/java/org/olat/basesecurity/AuthHelper.java
@@ -271,7 +271,7 @@ public class AuthHelper {
 			}
 		}
 
-		Collection<String> supportedLanguages = I18nModule.getEnabledLanguageKeys();
+		Collection<String> supportedLanguages = CoreSpringFactory.getImpl(I18nModule.class).getEnabledLanguageKeys();
 		if ( locale == null || ! supportedLanguages.contains(locale.toString()) ) {
 			locale = I18nModule.getDefaultLocale();
 		}
@@ -366,7 +366,7 @@ public class AuthHelper {
 			wasGuest = usess.getRoles().isGuestOnly();
 		}
 
-		String lang = I18nManager.getInstance().getLocaleKey(ureq.getLocale());
+		String lang = CoreSpringFactory.getImpl(I18nModule.class).getLocaleKey(ureq.getLocale());
 		HttpSession session = ureq.getHttpReq().getSession(false);
 		// next line fires a valueunbound event to UserSession, which does some
 		// stuff on logout
diff --git a/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java b/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java
index 22c23a5c9aa83d4a92484a3478af14c4b5a7b486..4bbd8e444258d5f2087283cd242eb42d1a36ae0d 100644
--- a/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java
+++ b/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java
@@ -114,4 +114,12 @@ public class Card2BrainManagerImpl implements Card2BrainManager {
 		return card2BrainValidationResult;
 	}
 
+	@Override
+	public String parseAlias(String alias) {
+		String parsedString = alias.endsWith("/editor")? alias.substring(0, alias.length()-7): alias;
+		parsedString = parsedString.replace("https://card2brain.ch/box/", "");
+		parsedString = parsedString.replace(" ", "_");
+		return parsedString;
+	}
+
 }
diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties
index e8cfb88ed04742c52e27cc43b3c9a802b0205b19..901ea2421d320d6c7174f2e6cf06fad61a3aed90 100644
--- a/src/main/resources/serviceconfig/olat.properties
+++ b/src/main/resources/serviceconfig/olat.properties
@@ -362,20 +362,12 @@ help.course.softkey=OLAT::help-course_de.zip
 ########################################################################
 # OLAT technical settings
 ########################################################################
-# OLAT instance ID (effects a unique namespace for addressable items)
+# OLAT instance ID (effects a unqiue namesapce for addressable items)
 # ID should be no longer than 10 characters!
 instance.id=myopenolat
-
-# Issuer of the OpenOLAT users.
-# The issuer is the entity that issues a set of claims. An issuer
-# identifier is a case sensitive URL using the https scheme that contains
-# scheme, host, and optionally, port number and path components and no
-# query or fragment components.
-instance.issuer.identifier=https://${instance.id}.openolat.org
-
 # by creating a theme under webapp/WEB-INF/static/themes you can
 # customize the OLAT application to your liking (see the example
-# theme for further information.
+# theme for futher information.
 # you can also configure a theme via the admin GUI which takes precedence
 layout.theme=light
 layout.coursetemplates.blacklist=
@@ -545,6 +537,7 @@ allow.cross.origin.domain.values=*,www.frentix.com
 ########################################################################
 
 mathjax.cdn=//mathjax.openolat.org/mathjax/2.7-latest/
+mathjax.config=TeX-AMS-MML_HTMLorMML
 
 ########################################################################
 # Database settings
@@ -765,53 +758,150 @@ restapi.ips.system.values=192.168.1.200,192.168.1.201
 statistics.cronjob.expression=0 10 5 * * ?
 
 ########################################################################
-# Security
+# Shibboleth
 ########################################################################
 
-shibboleth.enable=false
-# set the name of the Shibboleth attribute used to identify authorized users
-shibboleth.defaultUID=defaultUID
-# the Authentication and Authorization Infrastructure (AAI) is a
-# federated identity management system used in Switzerland that
-# supports the sending of a locale code within an AAI request using
-# a key as named in the language.param setting
-language.enable=false
-language.param=YOUR_PARAM_NAME
-
+#The auth provider you set to default will be the one you see when you access the loginpage, alternate providers are shows as links below
+#enable and or set the basic login provider (username/password) on the loginpage active and or default
+olatprovider.enable=true
+olatprovider.default=true
 # if you change this all current users will no longer be able to login!
 default.auth.provider.identifier=OLAT
 
+shibboleth.enable=false
+#enable and or set the generic shib login provider on the loginpage active and or default
+shibbolethGeneric.enable=false
+shibbolethGeneric.default=false
+#enable and or set the custom uzh shib login provider on the loginpage active and or default
+shibbolethUZH.enable=false
+shibbolethUZH.default=false
+
 #these settings are university of zurich specific
 shibboleth.wayfSPEntityID=
 shibboleth.wayfSPHandlerURL=
 shibboleth.wayfSPSamlDSURL=
 shibboleth.wayfReturnUrl=
 shibboleth.wayfReturnMobileUrl=$shibboleth.wayfReturnUrl
-
-#you can manuall add additional IDP servers. See org/olat/portal/shiblogin/_content/portlet.html
+#you can manually add additional IDP servers. See org/olat/portal/shiblogin/_content/portlet.html
 #for an example
 shibboleth.wayf.additionalIDPs=
-#The auth provider you set to default will be the one you see when you access the loginpage, alternate providers are shows as links below
-#enable and or set the basic login provider (username/password) on the loginpage active and or default
-olatprovider.enable=true
-olatprovider.default=true
 
-#enable and or set the custom uzh shib login provider on the loginpage active and or default
-shibbolethUZH.enable=false
-shibbolethUZH.default=false
-
-#enable and or set the generic shib login provider on the loginpage active and or default
-shibbolethGeneric.enable=false
-shibbolethGeneric.default=false
-
-# Issuer of the Shibboleth credidentals. You can use a template string.
-# The placeholder %s will be replaced with the value of the attribute.
-# The issuer is the entity that issues a set of claims. An issuer
-# identifier is a case sensitive URL using the https scheme that contains
-# scheme, host, and optionally, port number and path components and no
-# query or fragment components.
-shibboleth.issuer.attribute=swissEduPersonHomeOrganization
-shibboleth.issuer.identifier.template=https://%s
+# set the name of the Shibboleth attribute used to identify authorized users
+shibboleth.uid.shib=
+shibboleth.uid.handler=
+
+#Shibboleth attribute to use if a user logs in the first time.
+shibboleth.preferred.language.shib=
+shibboleth.preferred.language.handler=
+
+#Apply author role automatically to users according to the value of a Shibboleth attribute.
+#The contains parameter can have multiple values separated by commas. The value of the
+#Shibboleth attribute has to match one value of the contains parameter to apply the author role.
+shibboleth.role.mapping.author.enable=false
+shibboleth.role.mapping.author.shib=
+shibboleth.role.mapping.author.contains=
+
+#Define which Shibboleth attributes are mapped to OLAT user properties
+#and how the attributes are mapped. Use a handler to transform the from
+#Shibboleth delivered value to the desired form. If no handler is
+#configured the DoNothing handler is used. Set delete to false to avoid
+#the deletion of the user property value if Shibboleth delivers no value.
+#The mandatory user properties are never deleted by the synchronization.
+shibboleth.user.mapping.handler.values=DoNothing,FirstValue,SchacGender
+#These attributes are mandatory to create new users.
+shibboleth.user.mapping.email.shib=
+shibboleth.user.mapping.email.handler=
+shibboleth.user.mapping.first.name.shib=
+shibboleth.user.mapping.first.name.handler=
+shibboleth.user.mapping.last.name.shib=
+shibboleth.user.mapping.last.name.handler=
+#Further attributes may be mapped if wanted.
+shibboleth.user.mapping.key1.shib=
+shibboleth.user.mapping.key1.olat=
+shibboleth.user.mapping.key1.handler=
+shibboleth.user.mapping.key1.delete=
+shibboleth.user.mapping.key2.shib=
+shibboleth.user.mapping.key2.olat=
+shibboleth.user.mapping.key2.handler=
+shibboleth.user.mapping.key2.delete=
+shibboleth.user.mapping.key3.shib=
+shibboleth.user.mapping.key3.olat=
+shibboleth.user.mapping.key3.handler=
+shibboleth.user.mapping.key3.delete=
+shibboleth.user.mapping.key4.shib=
+shibboleth.user.mapping.key4.olat=
+shibboleth.user.mapping.key4.handler=
+shibboleth.user.mapping.key4.delete=
+shibboleth.user.mapping.key5.shib=
+shibboleth.user.mapping.key5.olat=
+shibboleth.user.mapping.key5.handler=
+shibboleth.user.mapping.key5.delete=
+shibboleth.user.mapping.key6.shib=
+shibboleth.user.mapping.key6.olat=
+shibboleth.user.mapping.key6.handler=
+shibboleth.user.mapping.key6.delete=
+shibboleth.user.mapping.key7.shib=
+shibboleth.user.mapping.key7.olat=
+shibboleth.user.mapping.key7.handler=
+shibboleth.user.mapping.key7.delete=
+shibboleth.user.mapping.key8.shib=
+shibboleth.user.mapping.key8.olat=
+shibboleth.user.mapping.key8.handler=
+shibboleth.user.mapping.key8.delete=
+shibboleth.user.mapping.key9.shib=
+shibboleth.user.mapping.key9.olat=
+shibboleth.user.mapping.key9.handler=
+shibboleth.user.mapping.key9.delete=
+shibboleth.user.mapping.key10.shib=
+shibboleth.user.mapping.key10.olat=
+shibboleth.user.mapping.key10.handler=
+shibboleth.user.mapping.key10.delete=
+shibboleth.user.mapping.key11.shib=
+shibboleth.user.mapping.key11.olat=
+shibboleth.user.mapping.key11.handler=
+shibboleth.user.mapping.key11.delete=
+shibboleth.user.mapping.key12.shib=
+shibboleth.user.mapping.key12.olat=
+shibboleth.user.mapping.key12.handler=
+shibboleth.user.mapping.key12.delete=
+shibboleth.user.mapping.key13.shib=
+shibboleth.user.mapping.key13.olat=
+shibboleth.user.mapping.key13.handler=
+shibboleth.user.mapping.key13.delete=
+shibboleth.user.mapping.key14.shib=
+shibboleth.user.mapping.key14.olat=
+shibboleth.user.mapping.key14.handler=
+shibboleth.user.mapping.key14.delete=
+shibboleth.user.mapping.key15.shib=
+shibboleth.user.mapping.key15.olat=
+shibboleth.user.mapping.key15.handler=
+shibboleth.user.mapping.key15.delete=
+shibboleth.user.mapping.key16.shib=
+shibboleth.user.mapping.key16.olat=
+shibboleth.user.mapping.key16.handler=
+shibboleth.user.mapping.key16.delete=
+shibboleth.user.mapping.key17.shib=
+shibboleth.user.mapping.key17.olat=
+shibboleth.user.mapping.key17.handler=
+shibboleth.user.mapping.key17.delete=
+shibboleth.user.mapping.key18.shib=
+shibboleth.user.mapping.key18.olat=
+shibboleth.user.mapping.key18.handler=
+shibboleth.user.mapping.key18.delete=
+shibboleth.user.mapping.key19.shib=
+shibboleth.user.mapping.key19.olat=
+shibboleth.user.mapping.key19.handler=
+shibboleth.user.mapping.key19.delete=
+shibboleth.user.mapping.key20.shib=
+shibboleth.user.mapping.key20.olat=
+shibboleth.user.mapping.key20.handler=
+shibboleth.user.mapping.key20.delete=
+
+# The attribute translator can be used to simplify ugly shibboleth attribute identifiers and mask them with nicer names.
+# If unsure, use the emptyAttributeTranslator to not mask any shib attributes. The switchAttributeTranslator should only
+# be used when participating in SWTICH AAI.
+shibboleth.attribute.translator=emptyAttributeTranslator
+shibboleth.attribute.translator.values=emptyAttributeTranslator,userMappingAttributeTranslator,switchAttributeTranslator
 
 ########################################################################
 # Clustering settings
@@ -859,10 +949,10 @@ hibernate.caching.use.query.cache=true
 hibernate.use.second.level.cache=true
 hibernate.connection.timeout=120
 
-#####
+########################################
 # LDAP configuration parameters (optional)
 # for advanced config options see webapp/WEB-INF/src/serviceconfig/org/olat/ldap/_spring/olatextconfig.xml
-#####
+########################################
 ldap.enable=false
 # is ldap your default provider? true or false
 ldap.default=false
@@ -949,12 +1039,6 @@ ldap.attributename.useridentifyer=sAMAccountName
 ldap.attributename.email=mail
 ldap.attributename.firstName=givenName
 ldap.attributename.lastName=sn
-# The issuer of the LDAP system.
-# The issuer is the entity that issues a set of claims. An issuer
-# identifier is a case sensitive URL using the https scheme that contains
-# scheme, host, and optionally, port number and path components and no
-# query or fragment components.
-ldap.issuer.identifier=
 # Attribute used as username to log in. Note: the configured login attribute MUST be one of the mapped attributes below, e.g. genericTextProperty1
 # If the login attribute should not be visible in OO, then disable the OO user property in all contexts.
 ldap.login.attribute=${ldap.attributename.useridentifyer}
@@ -1055,8 +1139,8 @@ ldap.learningResourceManagerRoleValue=
 # Build properties
 #####
 application.name=OpenOLAT
-build.version=12.0.0i
-build.identifier=openolat120i-dev
+build.version=12.2a
+build.identifier=openolat122a-dev
 build.repo.revision=local-devel
 
 #####
@@ -1089,6 +1173,17 @@ resource.accesscontrol.home.overview=true
 method.token.enabled=true
 method.free.enabled=true
 method.paypal.enabled=false
+method.auto.enabled=false
+
+# Properties to configure the Shibboleth implementation of the auto access method
+# attributes to use for search (comma separated)
+method.auto.shib.identifiers.values=internalId,externalId,externalRef
+method.auto.shib.identifiers=
+# Name of the Shibboleth attributes with the keys
+method.auto.shib.shib=
+# Splitter to split the parsed value in keys
+method.auto.shib.splitter.values=Semicolon
+method.auto.shib.splitter=
 
 ########################################
 # Paypal (need a business account)
@@ -1276,7 +1371,7 @@ video.site.enable=false
 video.transcoding.enabled=false
 # The transcoding process can run locally in s separate process using HandBrake. In that
 # case, the binary "HandBrakeCLI" must be installed in your system and available to the
-# java environment of your system.
+# java environment of your system. Only HandBrakeCLI in version > 1 is supported.
 # Alternatively, you can disable local transcoding and implement a shell script that runs
 # on another server which reads from the o_vid_transcoding table to separate transcoding
 # from the main server. For larger installations it is recommendet to run the transcoding
@@ -1286,11 +1381,17 @@ video.transcoding.local=true
 video.transcoding.taskset.cpuconfig=0,1
 video.transcoding.taskset.cpuconfig.values=0,1 to indicate usage of 2 cores, set empty value to disable taskset (e.g. on osx not available)
 # List of transcoding versions to be generated by the transcoder
-video.transcoding.resolutions=1080,720,480,360
-video.transcoding.resolutions.values=2160,1080,720,480,360,240
+video.transcoding.resolutions=1080,720,480
+video.transcoding.resolutions.values=2160,1080,720,480
 # The preferred resolution if multiple video versions are available and the user has no
 # customized setting. Should be a values from video.transcoding.resolutions
 video.transcoding.resolution.preferred=720
+# Which profile should be used while transcoding. "Fast" delivers better quality, but taks
+# roughly twice the time for transcoding. "Fast" has about one third larger file size. In
+# short: "Fast" for better quality at the cost or resources, "Very Fast" for smaller files
+# at the cost of quality.
+video.transcoding.profile=Very Fast
+video.transcoding.profile.values=Fast,Very Fast
 # Where to store transcoded versions. This can be located on another path in case the
 # transcoding service is working on another physical server or you just want it to use
 # another (cheap) disk. By default it is also located in the olatdata dir.