0

Within Test.SalesForce.com Sandbox, SOAP endpoint call using Java EnterpriseConnection.describeGlobal() NOT returning any RemedyForce / "BMCServiceDesk__xxxx" objects


Background Information

1) I am a java developer working on a Java web-application.

2) This Java web application makes a SOQL (Salesforce Object Query Language) call to SalesForce through a SOAP end point.

3) This means that the project files already contain the Enterprise WSDL and the generated JAR files.

3.1) Referencing: (https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_quickstart_steps_import_wsdl.htm), "Step 3: Import the WSDL File Into Your Development Platform".

3.2) Step 3 has been completed successfully and confirmed via operational testing of the web application.

4) I am tasked with resurrecting the JUnit tests for this web-application project which involves using a test.salesforce.com sandbox, and a test Salesforce user account.

Core Issues

Referring to (https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_quickstart_steps_walk_through_code.htm), I have created a separate Java test program based upon the Java " QuickstartApiSample " code.

This test program has "imported" / placed on its build-path the Enterprise WSDL and generated JAR files from #3 (or the exact same files as the web-application).

A) When I used the Production SalesForce credentials (example:

this.authEndPoint = "https://login.salesforce.com/services/Soap/c/39.0/.....";
String username = production_User_Name;
String password = production_Password;

) in the " QuickstartApiSample " example, the private void describeGlobalSample() (or line-140 of the Java sample) outputs a large list of objects that is available to the production account credentials.

There are several entries starting with the prefix BMCServiceDesk__. I am specifically interested in getting read access to the BMCServiceDesk__Change_Request__c object for my JUnit test.

B) Now when I use the Test.SalesForce.com credentials, in the same "QuickstartApiSample" example, the private void describeGlobalSample() (or line-140 of the Java sample), I do get output. Although there is the standard list of SalesForce objects appearing, there are no entries starting with the prefix BMCServiceDesk__.

What's the same between "A" and "B":

  • same WSDL and generated JAR files as web-application

  • same describeGlobalSample(), describeSObjectsSample(), and logout() code

What's different between "A" and "B":

  • the username (production versus test-sandbox)

  • the password (production versus test-sandbox)

  • the "AuthEndPoint" (production versus test-sandbox)

Basically this code:

String strUsername = // production or test sandbox credentials
String strPassword = // production or test sandbox credentials 
String strAuthEndPoint ="https://???.salesforce.comservices/Soap/c/39.0/0000abcdxyz_etc_etc_etc";
ConnectorConfig config = new ConnectorConfig();
config.setUsername(strUsername); config.setPassword(strPassword);
config.setAuthEndpoint(strAuthEndPoint);

According to (https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/calls.htm#topic-title_factors_access) there are configuration settings within SalesForce affecting what objects appear in the EnterpriseConnection.describeGlobal() output.

Unfortunately this documentation does NOT say SPECIFICALLY HOW or WHAT settings changes need to be made before the RemedyForce / BMCServiceDesk__ objects become visible to my Test.SalesForce.com credentials.

Unfortunately, I am a novice SalesForce / RemedyForce administrator with high-level access only to that particular test SalesForce sandbox. It looks like I have assigned a profile to the test account that can read the RemedyForce "Change Request" / BMCServiceDesk__Change_Request__c object... but the output from the "QuickstartApiSample" java program says otherwise -- indicating either I did it wrong or some unknown factors are preventing my intended objects from appearing in the describeGlobal() output

What settings do I need to check and or have my internal corporate SalesForce admin check / verify to get my desired outcome ?

  • It's worth double checking the versions of the managed package that are in both the production and sandbox orgs. When the Enterprise API WSDL is generated it takes a dependency on a particular version of the package. A mismatch may also cause it not to work against the sandbox. – Daniel Ballinger Apr 6 '18 at 8:29
1

The prefix that you have mentioned BMCServiceDesk__ corresponds to a "managed package" in salesforce. So if this managed package is installed in your production salesforce instance, you will get the results as desired.

You may like to verify if the same managed package is installed in the test sandbox or not. If it's not, that's the reason you are not able to retrieve that when you connect to the test salesforce sandbox.

If the package is installed in the test sandbox, then you may like to ask the administrator to make sure that the profile that you are using to connect to the sandbox (which ideally should be the same as for production) to provide access to the objects in the managed package.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.