Troubleshooting Workday Connector 16.4 | MuleSoft Documentation
# Troubleshooting Workday Connector 16.4
To troubleshoot Anypoint Connector for Workday (Workday Connector), become familiar with the information about addressing specific common errors and interpreting commonly thrown exception messages.
## Enable SSL Logging
Enable SSL logs to investigate an issue related to TLS communications.
Set your SSL log level depending on your required level of detail:
  1. Enable only SSL log details:
`javax.net.debug=ssl`
  2. Enable only handshaking details. (The handshake protocol is a series of messages exchanged over the record protocol.)
`javax.net.debug=ssl:handshake`
  3. Enable handshaking details and SSL details at the same time:
`javax.net.debug=ssl, handshake`
  4. Enable the dumping of all details and traffic data:
`javax.net.debug=all`
This option is very verbose and under normal circumstances is not necessary.   
---  


SSL logging results in a performance impact for HTTPS or other TLS connections. Enable SSL logging only to troubleshoot a specific issue and do not enable it for extended periods. SSL logging produces a significant amount of log messages and can inundate your log file if it is left enabled and unattended.   
---  
To enable SSL logs:
Set the debug parameter as an argument in the runtime configuration for the application.
  1. In Studio, right-click on the project and select **Run > Run Configurations**.
  2. Go to the **Arguments** tab and add `-M-Djavax.net.debug=ssl` in the **VM arguments** section.


## Enable Verbose Exception Logging
Enable verbose exception logs to show a complete stack trace of the error instead of the default truncated output:
  1. In Studio, right-click on the project and select **Run > Run Configurations**.
  2. Go to the **Arguments** tab and append the arguments in the **VM arguments** section to add the `mule.verbose.exceptions` property. For example:
`-XX:PermSize=128M -XX:MaxPermSize=256M -Dmule.verbose.exceptions=true`


## Enable Verbose Logging
To get a better understanding of why an application’s interaction with Workday Connector is failing, temporarily enable verbose logging for the connector.
Remember to always disable enhanced verbosity after troubleshooting, because it can affect your Mule application’s performance.
To enable verbose logging in the configuration file:
  1. Access Anypoint Studio and navigate to the **Package Explorer** view.
  2. Open your application’s project name.
  3. Open the `src/main/resources` folder.
  4. Open the `log4j2.xml` file inside the folder.
  5. Add an `<AsyncLogger>` tag inside the `<Loggers>` tag:
```
			<Loggers>
				...
				<AsyncLogger name="com.mulesoft.connectors.workday" level="DEBUG"/>
				...
			</Loggers>
```

  6. Save your application changes.
  7. Click the project name in **Package Explorer** and then click **Run** > **Run As** > **Mule Application**.


## Troubleshoot Common Errors
Here is a list of the common Workday Connector errors and how to resolve them:
  * Connectivity Errors
  * Remove the Warning on Every HTTP Call
  * Timeout in Studio
  * Get Degrees Error When Testing the Connection


### Connectivity Errors
The connector throws `CONNECTIVITY` errors to trigger the reconnection process. If the connector throws a `CONNECTIVITY` error and reconnection is configured for the configuration that throws the error, the connector recreates the session and retries the operation automatically.
The reconnection process is handled by Mule runtime and comes with some exceptions, for example, if a `CONNECTIVITY` error is thrown during the connection creation process, then the reconnection is not triggered even if reconnection is configured. This is because the `CONNECTIVITY` error occurs while connecting to the third-party system, so the `CONNECTIVITY` error (usually caused by expired credentials or misconfiguration) is likely to occur every time, which retries the reconnection as many times as the reconnection is configured. It is the user’s responsibility to handle `CONNECTIVITY` errors if they are thrown during connection creation.
### Remove the Warning on Every HTTP Call
Workday Connector logs the following warning message on every HTTP call:
```
WARN 2020-11-10 10:51:57,494 [[MuleRuntime].uber.12: [workday].workdayFlow.BLOCKING @766054e8] [processor: ; event: 5ec7a670-233a-11eb-a099-f018989d247f] com.ning.http.client.RequestBuilderBase: Value was null, set to ""
```

To remove this warning from the Anypoint Studio console, update `src/main/resources/log4j2.xml` with the following line:
```
<AsyncLogger name="com.ning.http.client.RequestBuilderBase" level="ERROR"/>
```

### Timeout in Studio
Due to connectivity issues, you might experience a timeout while obtaining metadata from Workday Connector and receive one of the following errors:
  * Error While Retrieving SOAP Client ID
```
org.mule.runtime.api.exception.MuleRuntimeException: Error while retrieving soap client id [Absence_Management]
 org.mule.runtime.api.exception.MuleRuntimeException: Error while retrieving soap client id [Absence_Management]
 Caused by: java.util.concurrent.ExecutionException:
 org.mule.wsdl.parser.exception.WsdlParsingException: Error processing
 WSDL file [https://wd3-impl-services1.workday.com/ccx/service/deakin_amu1/Absence_Management/v29.1?wsdl]:
 Unable to locate document at 'https://wd3-impl-services1.workday.com/ccx/service/deakin_amu1/Absence_Management/v29.1?wsdl&#39;.
```

  * Mule Agent REST Service Timed Out
```
org.mule.tooling.client.api.exception.TimeoutException: Mule Agent REST service timed out
 org.mule.tooling.client.api.exception.TimeoutException: Mule Agent REST service timed out
 javax.ws.rs.ProcessingException: java.net.SocketTimeoutException: Read timed out
 	at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:244)
 	at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:245)
 	at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:671)
 	at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:668)
 	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
 	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
 	at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
 	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:668)
 	at
```



To resolve this error:
Increase the timeout values in Anypoint Studio:
  1. In Anypoint Studio, go to **Preferences > Anypoint Studio > Tooling**.
  2. Increase the values to double the default value for `Default Connection Timeout` and `Default Read Timeout`.
  3. Click **Apply** and restart Studio.


### Get Degrees Error When Testing the Connection
When validating connectivity using the **Test Connection** button, you might encounter an error regarding the `Get_Degrees` operation:
```
org.mule.runtime.api.exception.MuleRuntimeException: java.lang.RuntimeException: Unexpected error while consuming the web service operation [Get_Degrees]
```

To validate connectivity using the **Test Connection** button, Workday Connector uses a `Performance_Management` service with the `Get_Degrees` operation. You must ensure that your service account has the required permissions to operate on that service. To resolve this error, grant permissions for the `Get_Degrees` operation in the `Performance_Management` web service.
## Understand Commonly Thrown Exceptions
Here is a list of commonly thrown exception messages and how to interpret them:
  * WORKDAY:CONNECTIVITY
```
A connection cannot be established.
```

  * WORKDAY:PROCESSING_ERROR
```
A processing error occurs, for example, the connector cannot read from the inbound message.
```

  * WORKDAY:RETRY_EXHAUSTED
```
The maximum number of retries for the operation is reached.
```

  * WORKDAY:VALIDATION_ERROR
```
A validation error occurs, for example, an inactive organization includes an active organization.
```



## See Also
  * Introduction to Anypoint Connectors
  * Workday Connector Reference
  * MuleSoft Help Center
  *