docs: public MessageApp getMessageApplication(boolean bCreateIfNotFound, Map<String, Object> properties)
      {
      	String strDBPrefix = null;
      	String strSubSystem = null;
      	String strDomain = null;
      	if (properties != null)
      		strDomain = (String)properties.get(DBParams.DOMAIN);
      	Map<String,Object> propDomain = null;
  		if (this.getDefaultApplication() instanceof MainApplication)
  		{
  	    	if (strDomain == null)
  	    		strDomain = this.getDefaultApplication().getProperty(DBParams.DOMAIN);	// Default domain
  			propDomain = ((MainApplication)this.getDefaultApplication()).getDomainProperties(strDomain);
  			if (propDomain != null)
  			{
  				strDBPrefix = (String)propDomain.get(DBConstants.DB_USER_PREFIX);
  				strSubSystem = (String)propDomain.get(DBConstants.SYSTEM_NAME);
  			}
  	        if ((properties != null) && (strDBPrefix == null))
  	            strDBPrefix = (String)properties.get(DBConstants.DB_USER_PREFIX);
              if ((properties != null) && (strSubSystem == null))
                  strSubSystem = (String)properties.get(DBConstants.SYSTEM_NAME);
              if (strSubSystem != null)
                  strSubSystem = Utility.getSystemSuffix(strSubSystem, this.getProperty(DBConstants.DEFAULT_SYSTEM_NAME));
  		}
  		MessageApp messageApplication = this.getMessageApplication(strDBPrefix, strSubSystem);
          if (bCreateIfNotFound)
      		if (messageApplication == null)
          {
      		MessageApp defaultMessageApplication = this.getMessageApplication(null, null);
              synchronized (this)
              {
              	messageApplication = this.getMessageApplication(strDBPrefix, strSubSystem);
          		if (messageApplication != null)
          			return messageApplication;
              	Map<String,Object> propTemp = new HashMap<String,Object>();
      			if (defaultMessageApplication != null)
      				if (defaultMessageApplication.getProperties() != null)
      					propTemp.putAll(defaultMessageApplication.getProperties());
          		if (properties != null)
  					propTemp.putAll(properties);
      			if (propDomain != null)
  					propTemp.putAll(propDomain);
      			properties = propTemp;
      			String className = MessageInfoModel.THICK_APPLICATION;
      			messageApplication = (MessageApp)ClassServiceUtility.getClassService().makeObjectFromClassName(className);
      			messageApplication.init(this, properties, null);
                  //messageApplication = new MessageInfoApplication(this, properties, null);
                  if (this.getDefaultApplication() != null)
                      if (this.getDefaultApplication() != messageApplication)
                          if ((!DBConstants.TRUE.equalsIgnoreCase(messageApplication.getProperty(DBParams.MESSAGE_SERVER))) // JMSServer has no server
                              && (!DBParams.LOCAL.equalsIgnoreCase(messageApplication.getProperty(DBParams.MESSAGE_SERVER))))
                  {   // (remote)
                      RemoteTask server = (RemoteTask)messageApplication.getRemoteTask(null);
                      RemoteTask appServer = (RemoteTask)this.getDefaultApplication().getRemoteTask(null, null, false);
                      if ((server != null) && (appServer != null))
                      {
                          try {
                              // Tell the remote session who my main session is
                              // so it can know where not to send server record
                              // messages (to eliminate echos in the client).
                              appServer.setRemoteMessageTask(server); // Should have done all the apps in this env!
                          } catch (RemoteException ex)    {
                              ex.printStackTrace();
                          }
                      }
                  }
              }
          }
          return messageApplication;
      }