Problem
Commas in X500 addresses being synced into eDiscovery Platform are causing a failure with the M365 Sync process.
Error Message
From M365 Job log:
Job ID: 1.5.6.2291276777953189773
Appliance: eDP-Appliance Server
06/04/2025 11:43:32 Starting On Cloud Employee synchronization task
06/04/2025 11:43:32 Found 1 tenants to synchronize
06/04/2025 11:43:32 Starting On Cloud Synchronization
06/04/2025 11:43:32 Updated Domain List
06/04/2025 11:43:32 joinExistingTables method started for Pass : 1
06/04/2025 11:43:39 joinExistingTables method completed for Pass : 1
06/04/2025 11:43:39 Started crawl for tenants edp.lab,
06/04/2025 11:45:06 Completed crawl for tenants edp.lab,
06/04/2025 11:45:06 Read input data for first merge pass
06/04/2025 11:45:07 Merged: 10000 employees
06/04/2025 11:45:07 Merged: 20000 employees
06/04/2025 11:45:07 Merged: 30000 employees
06/04/2025 11:45:08 Merged: 40000 employees
06/04/2025 11:45:08 Merged: 42578 employees
06/04/2025 11:45:08 Beginning commit of the merged employees
06/04/2025 11:45:13 Exception in merging employees from directory to database:
Commit of updated employee data to database failed - Incorrect integer value: 'test.user014' for column 'StartDate' at row 788
06/04/2025 11:45:13 Exception in merging employees from directory to database: Commit of updated employee data to database failed - Incorrect integer value: 'test.user014' for column 'StartDate' at row 788
com.symc.cm.exception.CMServiceException: Commit of updated employee data to database failed - Incorrect integer value: 'test.user014' for column 'StartDate' at row 788
com.symc.cm.bulkdata.EmployeeOutputProcessor.commitOutputStreams(EmployeeOutputProcessor.java:516)
com.symc.cm.bulkdata.BulkDataImpl.mergeEmployees(BulkDataImpl.java:234)
com.symc.cm.bulkdata.BulkDataImpl$$EnhancerByGuice$$14771225.GUICE$TRAMPOLINE(<generated>)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
com.symc.cm.advice.EmployeeCacheReloadAdvice.invoke(EmployeeCacheReloadAdvice.java:75)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
com.symc.cm.advice.DataAccessAdvice.invoke(DataAccessAdvice.java:143)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
com.symc.cm.bulkdata.BulkDataImpl$$EnhancerByGuice$$14771225.mergeEmployees(<generated>)
com.symc.cm.sync.AzureSynchronizationServiceImpl.startSynchronization(AzureSynchronizationServiceImpl.java:190)
com.symc.cm.sync.AzureSynchronizationServiceImpl$$EnhancerByGuice$$17434158.GUICE$TRAMPOLINE(<generated>)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
com.symc.cm.advice.DataAccessAdvice.invoke(DataAccessAdvice.java:143)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
com.symc.cm.sync.AzureSynchronizationServiceImpl$$EnhancerByGuice$$17434158.startSynchronization(<generated>)
com.teneo.esa.icp.EmployeeManager.startAzureSynchronization(EmployeeManager.java:766)
com.teneo.esa.directory.ads.AzureEmployeeSyncJob.run(AzureEmployeeSyncJob.java:110)
com.teneo.esa.jobmanager.JobRunner.executeJob(JobRunner.java:181)
com.teneo.esa.jobmanager.JobRunner.executeJob(JobRunner.java:166)
com.teneo.esa.jobmanager.JobRunner.access$000(JobRunner.java:78)
com.teneo.esa.jobmanager.JobRunner$1.call(JobRunner.java:213)
com.teneo.esa.common.ThreadPool.Task.cwRun(Task.java:304)
com.teneo.esa.common.util.CWRunnableImpl.run(CWRunnableImpl.java:61)
com.teneo.esa.common.util.CWThread.run(CWThread.java:104)
Caused by: java.sql.SQLException: Incorrect integer value: 'test.user014' for column 'StartDate' at row 788
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130)
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:767)
com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:652)
com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95)
com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
sun.reflect.GeneratedMethodAccessor1555.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.teneo.esa.cluster.resource.LeasedInvocationHandler.invoke(LeasedInvocationHandler.java:299)
com.sun.proxy.$Proxy138.execute(Unknown Source)
com.symc.cm.bulkdata.EmployeeOutputProcessor.loadStreamsIntoTables(EmployeeOutputProcessor.java:381)
com.symc.cm.bulkdata.EmployeeOutputProcessor.commitOutputStreams(EmployeeOutputProcessor.java:482)
com.symc.cm.bulkdata.BulkDataImpl.mergeEmployees(BulkDataImpl.java:234)
com.symc.cm.bulkdata.BulkDataImpl$$EnhancerByGuice$$14771225.GUICE$TRAMPOLINE(<generated>)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
com.symc.cm.advice.EmployeeCacheReloadAdvice.invoke(EmployeeCacheReloadAdvice.java:75)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
com.symc.cm.advice.DataAccessAdvice.invoke(DataAccessAdvice.java:143)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
com.symc.cm.bulkdata.BulkDataImpl$$EnhancerByGuice$$14771225.mergeEmployees(<generated>)
com.symc.cm.sync.AzureSynchronizationServiceImpl.startSynchronization(AzureSynchronizationServiceImpl.java:190)
com.symc.cm.sync.AzureSynchronizationServiceImpl$$EnhancerByGuice$$17434158.GUICE$TRAMPOLINE(<generated>
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:74)
com.symc.cm.advice.DataAccessAdvice.invoke(DataAccessAdvice.java:143)
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
com.google.inject.internal.InterceptorStackCallback.invoke(InterceptorStackCallback.java:55)
com.symc.cm.sync.AzureSynchronizationServiceImpl$$EnhancerByGuice$$17434158.startSynchronization(<generated>)
com.teneo.esa.icp.EmployeeManager.startAzureSynchronization(EmployeeManager.java:766)
com.teneo.esa.directory.ads.AzureEmployeeSyncJob.run(AzureEmployeeSyncJob.java:110)
com.teneo.esa.jobmanager.JobRunner.executeJob(JobRunner.java:181)
com.teneo.esa.jobmanager.JobRunner.executeJob(JobRunner.java:166)
com.teneo.esa.jobmanager.JobRunner.access$000(JobRunner.java:78)
com.teneo.esa.jobmanager.JobRunner$1.call(JobRunner.java:213)
com.teneo.esa.common.ThreadPool.Task.cwRun(Task.java:304)
com.teneo.esa.common.util.CWRunnableImpl.run(CWRunnableImpl.java:61)
com.teneo.esa.common.util.CWThread.run(CWThread.java:104)
06/04/2025 11:45:14 Commit of updated employee data to database failed - Incorrect integer value: 'test.user014' for column 'StartDate' at row 788 (Wed Jun 04 2025 11:45:14 EDT)
Cause
Hybrid environment between Azure M365 and on premise Exchange Server. The AD Sync tool used to keep Active Directory (AD) and M365 in sync is adding X500 addresses to AD User objects for users who have been migrated to M365. The addresses are configured to show the last name, comma, and then first name. eDiscovery Platform (eDP) by design uses comma-separated data for sync processes. Previously, the AD field just contained email addresses where a comma within an email address was not valid / non RFC compliant. The only previous case where this was an issue was where someone used a comma in an email address instead of a period such as test.user@edp,com and being non RFC compliant the email address was changed to the appropriate address of test.user@edp.com. Below are examples of X500 addresses shown near the end of the lines the users "Test User014" and "Test User015" are shown with "last name, comma, first name" format. Being all other data is comma separated, these commas are causing the data to shift over and causing eDP to try and add the info to the StartDate field, which does not accept text characters seen in the error mentioned above.
X500:/o=Support/ou=Exchange Administrative Group (FYEFAODA11SPABC)/cn=Recipients/cn=70bda6d7603650dfb98df9de3a727321-User014, Test
X500:/o=Support/ou=Exchange Administrative Group (FYEFAODA11SPABC)/cn=Recipients/cn=68c70053040d4ab58dd69e6d3bceb420-User015, Test
Solution
There are currently no plans to address this issue by way of a cumulative hotfix or service pack in the current or previous versions of the software at the present time. This issue may be resolved in a future major revision of the software at a later time, but is not scheduled for any release. If you feel this issue has a direct business impact for you and your continued use of the product, please contact your Arctera Sales representative or the Arctera Sales group to discuss these concerns. For information on how to contact Arctera Sales, please see https://www.arctera.io.
Note: Customers experiencing this issue are encouraged to monitor this article for resolution. The resolution is complex and will take time to complete and properly test.