Web Services connector broken after upgrade

Hello,

I’m new to SailPoint and my company. I need help with a Web Service API connector that’s not working and likely stopped after the last upgrade.

We have IIQ v 8.1p5 and I’m using Eclipse Version: Neon.3 Release (4.6.3)

Rule type = Web Service Before Operation Rule.
When running the rule manually I get the error:
Attempt to resolve method: getOperationType() on undefined variable or class name: requestEndPoint

Inside Eclipse it shows “requestEndPoint cannot be resolved”.

https://documentation.sailpoint.com/connectors/identityiq/webservices/help/integrating_webservices/upgrade_considerations.html

The upgrade considerations document shows the class name was changed from sailpoint.connector.webservices.EndPoint → sailpoint.connectorDependencies.EndPoint

Updating the import statement in the rule seems fine:

    //import sailpoint.connector.webservices.EndPoint; <-- Existing that was failing
    import sailpoint.connectorDependencies.EndPoint;

When trying to change the method using the new class I can’t get it to work.

	  //String operation = requestEndPoint.getOperationType();
	  String operation = EndPoint.this.getOperationType();
	Error:
		Multiple annotations found at this line:
			- No enclosing instance of the type EndPoint is accessible 
 in scope

In the upgrade considerations doc it states "All connector classes and third party jars required for connectors are packaged as fat jar and kept under WEB-INF/lib-connectors directory. " but I only see this mapping for web services “sailpoint.connector.webservices.WebServicesConnector” : “connector-bundle-webservices.jar”.

I’m not sure if we are missing a jar file or have one that’s not the correct version. Here are the options I get in Eclipse.

In the template for a new rule I still see requestEndPoint as a valid input so that is also confusing me.

 * Rule: Before Operation Rule Template for Web Services Connector        *
 * Description: Before Operation Rule Template for Web Services Connector *
 * Inputs:                                                                *
 *     application - The application whose data file is being             *
 *               processed.                                               *
 *     requestEndPoint - The current request information contain header,  *
 *               body, context url, method type, response attribute map,  *
 *               successful response code                                 *
 *     oldResponseMap - earlier response object                           *
 *     restClient - REST Client Object                                    *
 * Returns:                                                               *
 *     EndPoint - Updated EndPoint Object

Any help would be very much appreciated. Thanks for your time!

When you say run the rule manually, are you running it in debug or something? As opposed to running it via the connector stack when provisioning? If that is the case, the runtime variable requestEndPoint is not going to be present in the Beanshell namepsace that is passed into the rule.

I would ignore Eclipse telling you that a variable is not present in a rule when writing it. The plugin is not perfect and variables that are coming as inputs in the Beanshell namespace are not always recognized properly.

As far as I can tell, the EndPoint class still exists in the sailpoint.connector.webservices package. Again, if you are running the rule outside of the connector stack, you may not be able to import this class (because of the way class loaders work in newer versions). This article might explain a bit more: https://community.sailpoint.com/t5/IdentityIQ-Forum/Class-EndPoint-not-found-in-namespace/td-p/204287