1

I setup WebConnect and connected to it using the quickbooks php-devkit without any issues.

https://github.com/consolibyte/quickbooks-php

The very next day, there was a quickbooks update pending, which I ran, and now I can no longer add my application to webconnect.

.QWC File:

<?xml version="1.0"?>
<QBWCXML>
    <AppName>QuickBooks Integrator</AppName>
    <AppID>1.0</AppID>
    <AppURL>http://localhost/server.php</AppURL>
    <AppDescription>TEST STRING</AppDescription>
    <AppSupport>http://localhost/server.php</AppSupport>
    <UserName>quickbooks</UserName>
    <OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
    <FileID>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</FileID>
    <QBType>QBFS</QBType>
    <Scheduler>
        <RunEveryNMinutes>1</RunEveryNMinutes>
    </Scheduler>
    <IsReadOnly>false</IsReadOnly>
</QBWCXML>

Full QWCLog:

Log file initialized at Wednesday, May 18, 2016 - 2:26 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.

20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : HKEY_CURRENT_USER\Software\Intuit\QBWebConnector\UpdateLock has been set to False
20160518.14:26:24 UTC   : QBWebConnector.RegistryManager.setUpdateLock() : ********************* Update session unlocked *********************
20160518.14:26:24 UTC   : QBWebConnector_Load() : 
QuickBooks Web Connector 2.1.0.30 has started.
Wednesday, May 18, 2016 at 10:26:24 AM
20160518.14:26:24 UTC   : QBWebConnector_Load() : QBWC Form Loaded
20160518.14:26:24 UTC   : QWCReader.ParseQWC() : Contents of QWC file: -
<QBWCXML>
  <AppName>QuickBooks Integrator</AppName>
  <AppID>1.0</AppID>
  <AppURL>http://localhost/server.php</AppURL>
  <AppDescription>TEST STRING</AppDescription>
  <AppSupport>http://localhost/server.php</AppSupport>
  <UserName>quickbooks</UserName>
  <OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
  <FileID>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</FileID>
  <QBType>QBFS</QBType>
  <Scheduler>
    <RunEveryNMinutes>1</RunEveryNMinutes>
  </Scheduler>
  <IsReadOnly>false</IsReadOnly>
</QBWCXML>
20160518.14:26:24 UTC   : QBWebConnector.WebServiceManager.ReadQWC(QWCReader QWC) : Parsing application configuration xml file to load its content to variables
20160518.14:26:26 UTC   : QBWebConnector.RegistryManager.createRegKey() : Error creating registry key for appName = <>
20160518.14:26:26 UTC   : QBWebConnector.RegistryManager.createRegKey() : Reason: Value cannot be null.
Parameter name: name
20160518.14:26:26 UTC   : QBWebConnector.SOAPWebService.SerializeToRegistry() : Error saving QuickBooks Integrator to Registry: Object reference not set to an instance of an object.
20160518.14:26:26 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connecting to QuickBooks...
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.ConnectToQB() : Connected., Session started
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Application name = QuickBooks Integrator
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Querying company file to find if owner/file id exists.
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Latest QBXML version supported = v12.0
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Querying QuickBooks for existance of owner/file id
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefQueryRq requestID="1"><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID></DataExtDefQueryRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DataExtDefQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<DataExtDefRet>
<OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<DataExtName>AppLock</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
<DataExtDefRet>
<OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<AssignToObject>Company</AssignToObject>
</DataExtDefRet>
</DataExtDefQueryRs>
</QBXMLMsgsRs>
</QBXML>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDinQB() : Status message: Status OK
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Creating DataExtDef named AppLock assigned to Company object for the ownerID = {90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : 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>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.registerDataExtInQB() : Data extension definition has been created in QuickBooks for owner id.
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : Registered the AppLock to company file successfully.
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : Latest QBXML version supported = v12.0
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : Querying QuickBooks for existance of owner/file id
20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><CompanyQueryRq requestID="1"><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID></CompanyQueryRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.findFileIDValueinQB() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<CompanyQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<CompanyRet>
<IsSampleCompany>false</IsSampleCompany>
<CompanyName>Test Company 2</CompanyName>
<LegalCompanyName>Test Company 2</LegalCompanyName>
<Address>
<State>ON</State>
<Country>Canada</Country>
</Address>
<AddressBlock>
<Addr1>ON </Addr1>
</AddressBlock>
<LegalAddress>
<State>ON</State>
<Country>Canada</Country>
</LegalAddress>
<FirstMonthFiscalYear>January</FirstMonthFiscalYear>
<FirstMonthIncomeTaxYear>January</FirstMonthIncomeTaxYear>
<CompanyType>WholesaleDistributionandSales</CompanyType>
<TaxForm>FormT2</TaxForm>
<SubscribedServices>
<Service>
<Name>QuickBooks Online Banking</Name>
<Domain>banking.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing</Name>
<Domain>billing.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 1 Service</Name>
<Domain>qbob1.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Level 2 Service</Name>
<Domain>qbob2.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Payment Service</Name>
<Domain>qbobpay.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Bill Payment</Name>
<Domain>billpay.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Online Billing Paper Mailing Service</Name>
<Domain>qbobpaper.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Payroll Service</Name>
<Domain>payroll.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Payroll Service</Name>
<Domain>payrollbsc.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Basic Disk Payroll Service</Name>
<Domain>payrollbscdisk.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Deluxe Payroll Service</Name>
<Domain>payrolldlx.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>QuickBooks Premier Payroll Service</Name>
<Domain>payrollprm.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal</Name>
<Domain>basic_plus_fed.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Federal and State</Name>
<Domain>basic_plus_fed_state.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Basic Plus Direct Deposit</Name>
<Domain>basic_plus_dd.qb</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
<Service>
<Name>Merchant Account Service</Name>
<Domain>mas.qbn</Domain>
<ServiceStatus>Never</ServiceStatus>
</Service>
</SubscribedServices>
<AccountantCopy>
<AccountantCopyExists>false</AccountantCopyExists>
</AccountantCopy>
</CompanyRet>
</CompanyQueryRs>
</QBXMLMsgsRs>
</QBXML>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>FileID</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 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>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<DataExtName>FileID</DataExtName>
<DataExtType>STR255TYPE</DataExtType>
<DataExtValue>{57F3B9B6-86F1-4fcc-B1FF-967DE1813D20}</DataExtValue>
</DataExtRet>
</DataExtAddRs>
</QBXMLMsgsRs>
</QBXML>


20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.enterDataExtValueInQB() : Data extension value has been created in QuickBooks for FileID
20160518.14:26:27 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtDefAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtDefAddRq requestID="1"><DataExtDefAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>AppLock</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Company</AssignToObject></DataExtDefAdd></DataExtDefAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 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>


20160518.14:26:27 UTC   : QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML() : XML dump follows: -

<?xml version="1.0"?><?qbxml version="12.0"?><QBXML><QBXMLMsgsRq onError="stopOnError"><DataExtAddRq requestID="1"><DataExtAdd><OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID><DataExtName>AppLock</DataExtName><OtherDataExtType>Company</OtherDataExtType><DataExtValue>UNLOCKED: </DataExtValue></DataExtAdd></DataExtAddRq></QBXMLMsgsRq></QBXML>

20160518.14:26:27 UTC   : QBWebConnector.SOAPWebService.AddToQuickBooks() : QBWC1039: There was a problem adding the application. Check QWCLog.txt for details.
<QuickBooks found an error when parsing the provided XML text stream.>
   at Interop.QBXMLRP2.RequestProcessor2Class.ProcessRequest(String ticket, String inputRequest)
   at QBWebConnector.QBSession.ProcessRequest(String inXML)
   at QBWebConnector.SessionManager.ProcessRequest(String sessid, String inXML)
   at QBWebConnector.CompanyFileLock.Send_DataExtAddRqXML(String dataExtAddRqXML)
   at QBWebConnector.CompanyFileLock..ctor(String sessID, String ownerID, String qbType)
   at QBWebConnector.WebService.AddToQuickBooks()
20160518.14:26:42 UTC   : QBWebConnector.SOAPWebService.DisconnectFromQB() : Session ended and connection closed

The part that I am suspicious about is the response with <DataExtValue>UNLOCKED: </DataExtValue>.

Anybody know what might be causing this?

DT2K
  • 11
  • 4
  • First, make sure you rebooted after the QuickBooks updates. Reboot again. Failure to connect is a very common problem immediately after running QuickBooks updates, if you haven't rebooted yet. Now -- are you trying to add a .QWC file to the Web Connector, or trying to run the Web Connector? – Keith Palmer Jr. May 18 '16 at 12:52
  • I did reboot several times, no effect. I open the web connector, then add the .QWC file to it via the add application button. This generates an error message saying that it received malformed XML and to check the log. – DT2K May 18 '16 at 12:59
  • Post your .QWC file then. Also - why are you adding the .QWC file again, after just doing a QuickBooks update? Doing QuickBooks updates doesn't make apps disappear from the Web Connector... how did the app get removed from it? – Keith Palmer Jr. May 18 '16 at 13:30
  • Post the rest of the log as well. – Keith Palmer Jr. May 18 '16 at 13:30
  • I posted the .QWC and the full QWCLog. I am re-adding the .QWC file to the Web Connector because I removed the server from the connector after it connected successfully. I was testing my scripts and assumed that I would be able to easily re-add the server when I needed to. By the way, this error seems to happen before it executes the code from because it makes no difference what I put in that file, a valid server, or a die() statement. – DT2K May 18 '16 at 14:44
  • Things I would try, in no particular order - remove the AppID tag from your .QWC file. Reboot. Reinstall QuickBooks. Re-run all of the updates. Reinstall the QuickBooks SDK. Install the latest version of the QuickBooks Web Connector. This obviously isn't a coding issue at this point, it's an issue with QuickBooks or the Web Connector itself. – Keith Palmer Jr. May 19 '16 at 13:00
  • I did try all of things you suggested, but no luck. I have also re-installed everything and cleared registry several times. I gave up on it, but now I need to get it to work. @KeithPalmerJr. could you please shed some light on why AppLock already exists or what could be causing it to not be released from before? – DT2K Apr 12 '17 at 20:52
  • I have no idea. I've already indicated everything I have to try above. – Keith Palmer Jr. Apr 12 '17 at 21:08

1 Answers1

0

Ultimately, I had to reformat to fix this (seriously).

DT2K
  • 11
  • 4