Error configuring sharepoint connector on sailpoint

Hello
I’m using SP version 8.5p1
following this documentation* Connecting SailPoint and Microsoft SharePoint Online

in order to integrate microsoft sharepoint online and sailpoint
I’m using Entra ID as my identity service
after setting up the app in app registration, generating the certificate, I try to configure the connector on sailpoint exactly as mentioned in the documentation. However, when I try to save the application or test the connection, I always get the following error.

Illegal pattern character ‘j’

Network connectivity between sharepoint, sailpoint and Entra ID is ok.

I’ve tried several things but nothing works and I always get this error.

Can you please advise on :

  • whether the mentioned documentation is correct and is the good one to use for this version of SP
  • what could be done to resolve the error I’m getting

Thank you

can you share the logs trace, to understand and provide you with correct solution

@ameniii

Please share log file.

@naveenkumar3 @sukarande

here is a screenshot of the error

image

and the log
log_errorJ.txt (7,9 Ko)

@naveenkumar3 @sukarande

if everything works well, SP should be able to send a client assertion to Entra ID first, right?
I tried to capture the requests, and a trace shows that sailpoint is apparently sending a post request to itself and nothing happens after that, so it seems like it’s unable to form a JWT client assertion to Entra ID.
I have obfuscated the SP domain

image

tracer-export-2026-06-17T15_35_06.247Z.json (18,9 Ko)

@ameniii Please enable connector logs and try again. This should capture detailed logs from the connector as well to help you with troubleshooting. Please share here as well.

Can you please provide the steps to enable connector logs?

@ameniii Add below lines to your log4j2.properties file (you can add it at the end of the file):

logger.sharePointLog.name=sailpoint.connector.O365SharepointOnlineConnector

logger.sharePointLog.level=trace

Once you add it, reload your logging configuration or restart your server. Then try to do the test connection.

I checked the logs and issue is
" ApplicationDefinitionUtil.processPrivateKeyInfo() extracts the certificate’s Not After expiry date, then mistakenly passes that date value as the pattern argument to new SimpleDateFormat(pattern). The expiry date string contains j (valid in DateTimeFormatter but illegal in SimpleDateFormat), causing the crash on save."

fix: Try below

the crash is in processPrivateKeyInfo() which processes the private key you uploaded. The fix is to convert your private key to PKCS#8 unencrypted PEM format, as that is what the SharePoint Online connector expects.

Run this command on your certificate/key:

bash

openssl pkcs8 -topk8 -nocrypt -in your_private.key -out private_pkcs8.key

Then in the IIQ SharePoint Online connector configuration, re-upload private_pkcs8.key as the private key and save.

The connector’s processPrivateKeyInfo() parses the key header to extract metadata including the certificate expiry date. If the key is in PKCS#1 format (the default openssl genrsa output), that parsing produces a string the code mishandles as a SimpleDateFormat pattern.

Hello @naveenkumar3 ,

I ran the command
openssl pkcs8 -topk8 -nocrypt -in your_private.key -out private_pkcs8.key
on my private key, but I still get the same error.

This is the sequence of commands I used (I used the first 3 commands that were mentioned in the sailpoint documentation and added the 4th one you told me to run)

  1. openssl pkcs12 -in test1.pfx -nocerts -out sp.key
  2. openssl pkcs12 -in test1.pfx -clcerts -nokeys -out sp.crt
  3. openssl rsa -in sp.key -out rsasp.key
  4. openssl pkcs8 -topk8 -nocrypt -in rsasp.key -out private_pkcs8.key

I’d like to add that the output of the 2nd command is a certificate that looks life this:

@naveenkumar3

and the output of the 3rd command is a key that has this format (I noticed that it starts with “Begin private key”, whereas on the sailpoint doc, the key format start with “Begin RSA private key”. So I’m confused which one is correct).

This should also work. For us it was Private let that was generated and not RSA Private key

@ameniii What do you see in the logs after enabling connector logs? anything useful?

is there a file I should look into specifically?

I don’t seem to find anything related to my test nor the name of the app I created.

Hello Ameni. Your trace shows fr-FR in the browser language header. Since the exception is coming from Java date-pattern processing, could you temporarily switch the browser or IIQ language to English, log out, log back in, and try saving again with the same certificate and private key?

If it works in English, that would strongly indicate the locale is triggering the issue. I would then raise a SailPoint Support case with both test results, French failing and English working, since the permanent resolution may require a SailPoint patch or supported workaround in processPrivateKeyInfo().

I would not keep converting the key either. PKCS#8 was already tested and the same error remained. The certificate commands you followed are the same ones in SailPoint’s SharePoint Online connector documentation, so the setup steps do not appear to be the issue here.

Hello Harish, thanks, I will test this and let you know

Hello, I changed the browser’s language to English and I still get the same error when testing the connection:

Illegal pattern character ‘j’

a screenshot of the error in the log file, not sure if I need to look for more indications in the log file or if this is enough

Thanks for testing, Ameni. Since changing the browser language made no difference, the browser locale is probably not the cause. The Tomcat JVM locale may still be worth checking. If possible, please confirm the running JVM values for user.language, user.country, and java.locale.providers, rather than only checking the server OS language.

This stack trace is enough to show where it fails. testConnectorAction() calls processPrivateKeyInfo(), and the exception occurs there before the SharePoint connector can build the JWT or contact Entra ID. Because of that, additional connector TRACE logging is unlikely to show anything useful.

I would not keep converting the key either, since PKCS#8 was already tested and the same error remained. At this stage, I would open a SailPoint Support case and ask whether there is a hotfix or supported patch for the Illegal pattern character 'j' failure in ApplicationDefinitionUtil.processPrivateKeyInfo() on IIQ 8.5p1.

Thank you.

If the language isn’t the isssue, should I still check the 3 values you mentioned?

Also, how can I open a sailpoint support case ?