anchor.diff:  		SystemOutput( "Warning test service: [ #arguments.service# ] is not configured", true );
   		return {};
   	}
  -	
  +
  +	function getDefaultBundleVersion (bundleName, fallbackVersion) cachedWithin="request" {
  +		var bundles = getBundleVersions ();
  +		if (structKeyExists(bundles, arguments.bundleName)){
  +			//systemOutput(arguments.bundleName & " " & bundles[arguments.bundleName], true)
  +			return bundles[arguments.bundleName];
  +		} else {
  +			systemOutput("getDefaultBundleVersion: " & arguments.bundleName & " FALLLING BACK TO DEFAULT " & arguments.fallbackVersion, true)
  +			return arguments.fallbackVersion ;
  +		}
  +	}		
  +
  +	function getBundleVersions () cachedWithin="#createTimeSpan(1,0,0,0)#"{
  +		admin 
  +			type="server"
  +			password="#server.SERVERADMINPASSWORD#" 
  +			action="getBundles" 
  +			returnvariable="q_bundles"
  +		var bundles = {};
  +		loop query=q_bundles {
  +			var _bundle = {};
  +			_bundle.append(q_bundles.headers);
  +			bundles[_bundle['Bundle-SymbolicName']] = _bundle['Bundle-Version'];
  +		}
  +		return bundles;
  +	}
   }
   
   
  
positive.code: 					return {
  						class: 'com.mysql.cj.jdbc.Driver'
  						, bundleName: 'com.mysql.cj'
  						, bundleVersion: '8.0.19'
  						, connectionString: 'jdbc:mysql://#mySQL.server#:#mySQL.port#/#mySQL.database#?useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=true&useSSL=false'
  						, username: mySQL.username
  						, password: mySQL.password
  
negative.code: 				if ( structCount( oracle ) gt 0 ){
  					return {
  						class: 'oracle.jdbc.OracleDriver'
  						, bundleName: 'ojdbc7'
  						, bundleVersion: getDefaultBundleVersion('ojdbc7', '11.2.0.4')
  						, connectionString: 'jdbc:oracle:thin:@#oracle.server#:#oracle.port#/#oracle.database#'
  						, username: oracle.username
  						, password: oracle.password
  