docs: public void setupUserInfo()
      {
          MessageProcessInfo recMessageProcessInfo = null;
          try {
              Record recUser = this.getMainRecord();
              Object bookmark = recUser.getLastModified(DBConstants.BOOKMARK_HANDLE);
              recUser = recUser.setHandle(bookmark, DBConstants.BOOKMARK_HANDLE);
              if ((recUser == null) ||
                  (recUser.getEditMode() == DBConstants.EDIT_NONE) || (recUser.getEditMode() == DBConstants.EDIT_ADD))
                      return;     // Never
          
              Map<String, Object> properties = this.getSiteProperties();
              RunRemoteProcessMessageData createSiteRequest = this.setupUserProperties(properties);
          
              recMessageProcessInfo = new MessageProcessInfo(this);
              recMessageProcessInfo.setKeyArea(MessageProcessInfo.CODE_KEY);
              recMessageProcessInfo.getField(MessageProcessInfo.CODE).setString("RunRemoteProcessRQ");
              if (recMessageProcessInfo.seek(null))
              {
                  TrxMessageHeader trxMessageHeader = recMessageProcessInfo.createProcessMessageHeader(null, MessageTransport.XML);
                  if (trxMessageHeader == null)
                      return;
                  trxMessageHeader.put(TrxMessageHeader.DESTINATION_PARAM, properties.get(TrxMessageHeader.DESTINATION_PARAM));
                  trxMessageHeader.put(MessageTransport.MANUAL_RESPONSE_PARAM, DBConstants.TRUE);    // For testing, allow manual requests
                  if (m_intRegistryID != null)
                      trxMessageHeader.put(TrxMessageHeader.REGISTRY_ID, m_intRegistryID);    // The return Queue ID
                  BaseMessage message = createSiteRequest.getMessage();
                  message.setMessageHeader(trxMessageHeader);
                  if (!MessageTransport.DIRECT.equalsIgnoreCase((String)trxMessageHeader.get(MessageTransport.SEND_MESSAGE_BY_PARAM)))
                  {
                      MessageManager messageManager = ((Application)this.getTask().getApplication()).getMessageManager();
                      if (messageManager != null)
                          messageManager.sendMessage(message);
                  }
              }
          } catch (DBException ex) {
              ex.printStackTrace();
          } finally {
              recMessageProcessInfo.free();
          }
              
          synchronized (this)
          {
             try {
                 waiting = true;
                 this.wait(40000);
             } catch (InterruptedException ex) {
                 ex.printStackTrace();
             }
             if (waiting)
                 strMessage = "Error: Timeout on message call";
          }
      }