Search code examples
phpweb-servicessoapquickbooks

Consolibyte webconnector request stuck at queue


I followed the instructions and attempted to use the sample code provided by consolibyte but to no avail. Tried changing ownerid/fileid multiple times, tried reinstalling web connector, tried qb on a different machine, tried dropping all qb tables. I copied the code from example_web_connector_minimal.php and inserted my username and password, server details. The php checks out well in browser. The web connector goes through with no error but nothing is posted in the Quickbooks end. I did get some error in the QWCLog.txt related to AppLock and not sure if this is causing the issue.

Here's my QWC file:

<?xml version="1.0"?>
<QBWCXML>
    <AppName>Dashboard</AppName>
    <AppID>EFDB</AppID>
    <AppURL>[REMOVED]/qb-php-master/web_connector_test.php</AppURL>
    <AppDescription>An example QuickBooks Integration</AppDescription>
    <AppSupport>[REMOVED]</AppSupport>
    <UserName>quickbooks</UserName>
    <OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
    <FileID>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</FileID>
    <QBType>QBFS</QBType>
    <Notify>false</Notify>
    <Scheduler>
        <RunEveryNMinutes>10</RunEveryNMinutes>
    </Scheduler>
    <IsReadOnly>false</IsReadOnly>
</QBWCXML>

QWCLog:

20171005.15:15:50 UTC   : QWCReader.ParseQWC() : Contents of QWC file: -
<QBWCXML>
  <AppName>Dashboard</AppName>
  <AppID>EFDB</AppID>
  <AppURL>[removed]/qb-php-master/web_connector_test.php</AppURL>
  <AppDescription>An example QuickBooks Integration</AppDescription>
  <AppSupport>[removed]/dashboard</AppSupport>
  <UserName>quickbooks</UserName>
  <OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
  <FileID>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</FileID>
  <QBType>QBFS</QBType>
  <Notify>false</Notify>
  <Scheduler>
    <RunEveryNMinutes>10</RunEveryNMinutes>
  </Scheduler>
  <IsReadOnly>false</IsReadOnly>
</QBWCXML>
20171005.15:15:50 UTC   : QBWebConnector.WebServiceManager.ReadQWC(QWCReader QWC) : Parsing application configuration xml file to load its content to variables
20171005.15:15:52 UTC   : QBWebConnector.RegistryManager.createRegKey() : Error creating registry key for appName = <>
20171005.15:15:52 UTC   : QBWebConnector.RegistryManager.createRegKey() : Reason: Value cannot be null.
Parameter name: name
20171005.15:15:52 UTC   : QBWebConnector.SOAPWebService.SerializeToRegistry() : Error saving Dashboard to Registry: Object reference not set to an instance of an object.
20171005.15:15:52 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connecting to QuickBooks...
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connected., Session started
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Application name = Dashboard
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Querying company file to find if owner/file id exists.
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Latest QBXML version supported = v13.0
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Querying QuickBooks for existance of owner/file id
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefQueryRq requestID="1"><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID></DataExtDefQueryRq></QBXMLMsgsRq></QBXML>

20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefQueryRs requestID="1" statusCode="1" statusSeverity="Info" statusMessage="A query request did not find a matching object in QuickBooks" />
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Status message: A query request did not find a matching object in QuickBooks
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : FileID did not exist. Creating new FileID in company file
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Creating DataExtDef named FileID assigned to Company object for the ownerID = {57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}
20171005.15:16:04 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>FileID</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtDefRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
</DataExtDefAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Data extension definition has been created in QuickBooks for owner id.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Registered FileID to company file successfully.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>FileID</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>{57F3B9B6-86F1-4FCC-B8FF-866DE1813D20}</DataExtValue>
</DataExtRet>
</DataExtAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : Data extension value has been created in QuickBooks for FileID
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Entered FileID value to company file successfully.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Creating DataExtDef named AppLock assigned to Company object for the ownerID = {57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtDefRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
</DataExtDefAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Data extension definition has been created in QuickBooks for owner id.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Registered the AppLock to company file successfully.
20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtDefAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtDefAddRqXML() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefAddRs requestID="1" statusCode="3100" statusSeverity="Error" statusMessage="The name &quot;AppLock&quot; of the list element is already in use." />
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID><DataExtName>AppLock</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>UNLOCKED:EFDB1</DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtAddRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtRet>
<OwnerID>{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>UNLOCKED:EFDB1</DataExtValue>
</DataExtRet>
</DataExtAddRs>
</QBXMLMsgsRs>
</QBXML>


20171005.15:16:05 UTC   : QBWebConnector.CompanyFileLock.initialize() : Company file has been initialized with AppLock = UNLOCKED:EFDB1 for ownerID = <{57F3B9B6-86F1-4FCC-A2FF-266DE1813D20}>
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Application Dashboard has been added to QuickBooks.
20171005.15:16:05 UTC   : QBWebConnector.SOAPWebService.DisconnectFromQB() : Session ended and connection closed


Log file initialized at Thursday, October 5, 2017 - 3:18 PM UTC  
Timestamp format used: YYYYMMDD.HH:MM:SS UTC
QBWebConnector 2.0 has been initialized with its logging status to level = VERBOSE.
Please restart QBWebConnector for any change in log level to take effect. Use file menu to clear log.

20171005.15:18:34 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20171005.15:18:34 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20171005.15:18:34 UTC   :  : ~SingleInstanceHandler() - usingInstanceChannel = false. Returning without any Registry key delete or unmarshalling.
20171005.15:25:53 UTC   : UpdateThisScheduledApp() : Password management - Started
20171005.15:25:53 UTC   : UpdateThisScheduledApp() : QBWC1030: Password is not available for application named 'Dashboard'. Please set password for this application.
20171005.15:25:53 UTC   : UpdateThisScheduledApp() : Password management - Ended

quickbooks_Log table:

Handler is starting up...: Array (     [qb_company_file] =>      [qbwc_min_version] =>      [qbwc_wait_before_next_update] =>      [qbwc_min_run_every_n_seconds] =>      [qbwc_version_warning_message] =>      [qbwc_version_error_message] =>      [qbwc_interactive_url] =>      [autoadd_missing_requestid] => 1     [check_valid_requestid] => 1     [server_version] => PHP QuickBooks SOAP Server v3.0 at /qb-php-master/web_connector_test.php     [authenticate] =>      [authenticate_dsn] =>      [map_application_identifiers] => 1     [allow_remote_addr] => Array         (         )      [deny_remote_addr] => Array         (         )      [convert_unix_newlines] => 1     [deny_concurrent_logins] => 1     [deny_concurrent_timeout] => 60     [deny_reallyfast_logins] => 1     [deny_reallyfast_timeout] => 600     [masking] => 1 ) 

quickbooks_queue table:

+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+
| quickbooks_queue_id | quickbooks_ticket_id | qb_username | qb_action   | ident | extra | qbxml | priority | qb_status | msg  | enqueue_datetime    | dequeue_datetime |
+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+
|                   4 |                 NULL | quickbooks  | CustomerAdd | 5     |       |       |        0 | q         | NULL | 2017-10-04 23:23:53 | NULL             |
|                   7 |                 NULL | quickbooks  | CustomerAdd | 50005 |       |       |        0 | q         | NULL | 2017-10-05 10:27:48 | NULL             |
+---------------------+----------------------+-------------+-------------+-------+-------+-------+----------+-----------+------+---------------------+------------------+

QBWClog addition after entering password:

20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : Initiated connection to the following application.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : AppName: Dashboard
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : AppUniqueName (if available): Dashboard
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.instantiateWebService() : AppURL: [removed]/qb-php-master/web_connector_test.php
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : *** Calling serverVersion().
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : Actual error received from web service for serverVersion call: <Response is not well-formed XML.>. For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-serverVersion.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_serverVersion() : This application does not contain support for serverVersion. Allowing update operation for backward compatibility.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : *** Calling clientVersion() with following parameter:<productVersion="2.1.0.30">
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.updateWS() : Actual error received from web service for clientVersion call: <Response is not well-formed XML.>. For backward compatibility of all webservers, QBWC will catch all errors under app-not-supporting-clientVersion.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_clientVersion() : This application does not contain support for clientVersion. Allowing update operation for backward compatibility.
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : Authenticating to application 'Dashboard', username = 'quickbooks'
20171005.23:51:25 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : *** Calling authenticate() with following parameters:<userName="quickbooks"><password=<MaskedForSecurity>
20171005.23:51:26 UTC   : QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: Authentication failed due to following error message.
Response is not well-formed XML.
More info:
StackTrace =    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at QBWebConnector.localhost.WCWebServiceDoc.authenticate(String strUserName, String strPassword)
   at QBWebConnector.localhost.WCWebService.authenticate(String strUserName, String strPassword)
   at QBWebConnector.SOAPWebService.authenticate(String UserName, String Password)
   at QBWebConnector.WebService.do_authenticate(String& ticket, String& companyFileName)
Source = System.Web.Services

Solution

  • Did you actually enter your password into the Web Connector?

    Because according to your logs, you did not:

    20171005.15:25:53 UTC : UpdateThisScheduledApp() : QBWC1030: Password is not available for application named 'Dashboard'. Please set password for this application.

    Are you actually checking off the application in the Web Connector, and clicking the Update Selected button? It doesn't look like it from the logs...