public String tryInitSessionOnDatabase( CBPBackendServicesManager BackendServicesManager, CloseableHttpClient HTTPClient, CConfigServiceDBConnection ConfigDBConnection, CExtendedLogger Logger, CLanguage Lang ) {

		long lngStart = System.currentTimeMillis();
		
		String strSecurityTokenID = "";
		
		try {
		
			int intTryCounts = 1;
			
			String strOldBackendURLSelected = "";
			
			while ( strSecurityTokenID.isEmpty() && intTryCounts <= 4 ) {

				ArrayList<CRegisteredManagerInfo> ListOfBackendsNodes = null;

				if ( ConfigDBConnection.getDynamicBackendOnSelectMethod() && intTryCounts <= 3 ) {

					ListOfBackendsNodes = this.getListOfBackendsNodes( BackendServicesManager, HTTPClient, Logger, Lang ); //BackendServicesManager.callServiceSystemListRegisteredManagers( HTTPClient, strSecurityTokenID, strURL, ConfigProxy, strContext, Logger, Lang)  

				}

				if ( ListOfBackendsNodes != null && ListOfBackendsNodes.size() > 0 ) {

					ConfigDBConnection.selectURLBackend( 2, ListOfBackendsNodes, Logger, Lang ); //Dynamic backend

				}
				else {

					ConfigDBConnection.selectURLBackend( 1, ListOfBackendsNodes, Logger, Lang ); //Round robind

				}

				if ( strOldBackendURLSelected != ConfigDBConnection.getURLBackend() )
					strSecurityTokenID = this.startSessionOnDatabase( BackendServicesManager, HTTPClient, ConfigDBConnection, Logger, Lang ); //Result.get( 0 ).get( "SecurityTokenID" );

				strOldBackendURLSelected = ConfigDBConnection.getURLBackend();
				
				intTryCounts += 1;

			}
		
		}
		catch ( Error Err ) {

			Logger.logError( "-1025", Err.getMessage(), Err );
			
		}
		catch ( Exception Ex ) {
			
			Logger.logException( "-1026", Ex.getMessage(), Ex );
			
		}
		
		long lngEnd = System.currentTimeMillis();
		
		Logger.logDebug( "0xExecutedON", Lang.translate( "[%s] executed on: [%s] ms", "tryInitSessionOnDatabase", Long.toString( lngEnd - lngStart ) ) );
		
		return strSecurityTokenID;
		
	}