SAP Knowledge Base Article - Public

2362587 - Copy Rule For User Connector - Extended not working

Symptom

Customer would like the LMS_transit field that is passed in the extended user connector file and currently stored in the ACCT_ID field to be copied to custom column after 15. Currently the syntax used is not being picked up when the connector runs.

 

Environment

SuccessFactors LMS Learning Management System

Reproducing the Issue

1. Create an bizx extend user feed/input file with LMS_transit column and place it on sftp.
2. Go to System Admin - Configuration - System Configuration - Connectors then put this mapping - sfuser.extendeduser.field.mapping.data.ACCT_ID=LMS_transit
3. Map custom column after 15 to standard LMS field with the copy rule, sfuser.extendeduser.connector.copy.field.customcolumn.21.mappings=COL_NUM21=ACCT_ID
4. Schedule the connector to run, System Admin - Connectors - User Connector - SF

Connector Run Error:


9/1/2016 05:41 PM America/Indianapolis  com.plateausystems.connector.api.ConnectorException: Column doesn't exists :COL_NUM210_VAL in tables [pa_conn_stud_user, pa_conn_student]
at com.plateausystems.connector.importdata.impl.supercsv.SuperCSVDataImportServiceImpl.getCellProcessor(SuperCSVDataImportServiceImpl.java:379)
at com.plateausystems.connector.importdata.impl.supercsv.SuperCSVDataImportServiceImpl.getCellProcessors(SuperCSVDataImportServiceImpl.java:334)
at com.plateausystems.connector.importdata.impl.supercsv.SuperCSVDataImportServiceImpl.getCellProcessors(SuperCSVDataImportServiceImpl.java:365)
at com.plateausystems.connector.importdata.impl.supercsv.SuperCSVDataImportServiceImpl.initialize(SuperCSVDataImportServiceImpl.java:294)
at com.plateausystems.connector.importdata.impl.supercsv.SuperCSVDataImportServiceImpl.importDataProcess(SuperCSVDataImportServiceImpl.java:126)
at com.plateausystems.connector.importdata.impl.supercsv.StudentExtendedDataImportServiceImpl.importDataProcess(StudentExtendedDataImportServiceImpl.java:41)
at com.plateausystems.connector.importdata.impl.AbstractDataImportServiceImpl.importData(AbstractDataImportServiceImpl.java:115)
at sun.reflect.GeneratedMethodAccessor572.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at com.plateausystems.elms.framework.usagestatistics.impl.UsageStatisticsInterceptor.invoke(UsageStatisticsInterceptor.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at com.plateausystems.elms.framework.authorization.impl.ServiceAuthorizationInterceptor.invoke(ServiceAuthorizationInterceptor.java:127)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at com.plateausystems.elms.framework.localization.DataLocalizationInterceptor.invoke(DataLocalizationInterceptor.java:72)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy599.importData(Unknown Source)
at com.plateausystems.connector.importdata.impl.FileDataImport.importData(FileDataImport.java:114)
at sun.reflect.GeneratedMethodAccessor774.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at $Proxy601.importData(Unknown Source)
at com.plateausystems.connector.consumer.impl.BaseConsumerControllerServiceImpl.importData(BaseConsumerControllerServiceImpl.java:1161)
at com.plateausystems.connector.consumer.student.impl.StudentConsumerControllerServiceImpl.importData(StudentConsumerControllerServiceImpl.java:43)
at com.plateausystems.connector.consumer.impl.EntityTypesConsumerControllerServiceImpl.invokeMainWorkflow(EntityTypesConsumerControllerServiceImpl.java:113)
at com.plateausystems.connector.consumer.impl.BaseConsumerControllerServiceImpl.invokeMainWorkflow(BaseConsumerControllerServiceImpl.java:159)
at com.plateausystems.connector.consumer.impl.BaseConsumerControllerServiceImpl.processSequencedInputFiles(BaseConsumerControllerServiceImpl.java:1215)
at com.plateausystems.connector.consumer.impl.BaseConsumerControllerServiceImpl.invoke(BaseConsumerControllerServiceImpl.java:148)
at sun.reflect.GeneratedMethodAccessor764.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at com.plateausystems.elms.framework.usagestatistics.impl.UsageStatisticsInterceptor.invoke(UsageStatisticsInterceptor.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at com.plateausystems.elms.framework.authorization.impl.ServiceAuthorizationInterceptor.invoke(ServiceAuthorizationInterceptor.java:127)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at com.plateausystems.elms.framework.localization.DataLocalizationInterceptor.invoke(DataLocalizationInterceptor.java:72)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy605.invoke(Unknown Source)
at com.plateausystems.connector.api.ConnectorApmJob.execute(ConnectorApmJob.java:80)
at com.plateau.common.jobscheduling.impl.simple.SimpleJobRunnable.run(SimpleJobRunnable.java:85)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:789)

Resolution

The copy rule will only work with standard LMS columns. Go to System Admin - Configuration - System Configuration - Connectors. Sample Configuration below.

sfuser.extendeduser.connector.copy.field.mappings=COL_NUM4_VAL=ACCT_ID,COL_NUM10_VAL=ACCT_ID
sfuser.field.transform.date.format.JP_EFF_DTE.MMM-dd-yyyy\ HH\:mm\:ss=MM/dd/yyyy
sfuser.extendeduser.field.mapping.data.JL_ID=LMS_JL_ID
sfuser.extendeduser.field.mapping.data.DMN_ID=LMS_DOMAIN_ID
sfuser.extendeduser.field.mapping.data.ORG_ID=LMS_ORG_ID
sfuser.extendeduser.field.mapping.data.ACCT_ID=LMS_transit

For columns over 15 or custom columns, copy rule will not wok as it doesn't exist.

 

Keywords

copy rule, connector, extended user, custom column , KBA , LOD-SF-LMS , Learning Management System , How To

Product

SAP SuccessFactors Learning 1602