One SIS Integration Enrollment Record Failure in a Snapshot Flat-File Causes Rest of Records To Fail




 
One SIS Integration Enrollment Record Failure in a Snapshot Flat-File Causes Rest of Records To Fail

Date Published: Dec 16,2024 Category: Planned_First_Fix_Release:Future_Reference_Learn; Product:Blackboard_Learn_MH,Blackboard_Learn_SaaS,Blackboard_Learn_Software; Version:X3900_104_0,X3900_106_0,X3900_108_0,X3900_110_0   Article No.: 000090132

Producto: Learn Software

Versión: 9.1;SaaS

Paquetes de servicio: 3900.104.0, 3900.106.0, 3900.108.0, 3900.110.0

Descripción:

When enrolling users via SIS flatfile Integrations, some enrollments are not processing and are throwing errors.  

 

The issue occurs when enrolling users into a new DSK that does not exist yet and the first record in the feed that references that DSK errors out (say for an invalid user batch_uid).  Then, all subsequent enrollments in the feed are processed through that integration that are to get associated to that "new" DSK error out with a caused by: Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "course_users" violates foreign key constraint "course_users_fk3" Detail: Key (data_src_pk1)=(54) is not present in table "data_source"

Pasos para repetir:

  1. Log into Blackboard Learn as an administrator
  2. Navigate to System Admin > Data Integration > Student Information System Integrations
  3. Upload a Course Membership Feed file that has several records at least that reference a new dsk that was not created yet.  The key here is to have the first record in the feed that references the new DSK to have an error in it that it cannot process like a bad user batch_uid
  4. Submit the feed file for processing

Observed Behavior:
The defective record does not process as expected and all other records that have that DSK error out as the SIS system seems to expect that DSK to be in the database now and since it is not it errors all subsequent records.

Expected Behavior:
Only the record with the bad batch_UID is not processed and then the next record that references the new DSK will process associated to that DSK and all subsequent records that need to be associated to that DSK are created and associated. 

 
Síntomas:

Sample Error Stack Trace:

Membership [create/update, bbtest-student2, apple2]
An error occurred while processing MembershipPersistOperation
blackboard.persist.PersistenceException: A database error occurred.
at blackboard.persist.impl.NewBaseDbLoader.loadObject(NewBaseDbLoader.java:132)
at blackboard.persist.course.impl.CourseCourseDbLoaderImpl.loadParent(CourseCourseDbLoaderImpl.java:71)
at blackboard.persist.course.impl.CourseCourseDbLoaderImpl.loadParent(CourseCourseDbLoaderImpl.java:83)
at blackboard.data.course.impl.CourseCourseManagerImpl.loadParent(CourseCourseManagerImpl.java:49)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at blackboard.db.TransactionInterfaceFactory$TransactionHandler.invoke(TransactionInterfaceFactory.java:53)
at com.sun.proxy.$Proxy2325.loadParent(Unknown Source)
at blackboard.platform.dataintegration.operationdefinition.MembershipPersistOperationHandler.syncMaster(MembershipPersistOperationHandler.java:304)
at blackboard.platform.dataintegration.operationdefinition.MembershipPersistOperationHandler.handleOperation(MembershipPersistOperationHandler.java:123)
at blackboard.platform.dataintegration.operationdefinition.MembershipPersistOperation.execute(MembershipPersistOperation.java:262)
at blackboard.platform.dataintegration.operationdefinition.BaseOperation.execute(BaseOperation.java:53)
at blackboard.platform.dataintegration.operationdefinition.impl.OperationManagerImpl.processOperation(OperationManagerImpl.java:99)
at blackboard.platform.dataintegration.operationdefinition.impl.OperationManagerImpl.executeOperation(OperationManagerImpl.java:43)
at blackboard.platform.dataintegration.operationdefinition.impl.OperationManagerImpl.executeOperation(OperationManagerImpl.java:34)
at blackboard.platform.dataintegration.mapping.impl.DataIntegrationObjectMappingManagerImpl.persistSISObject(DataIntegrationObjectMappingManagerImpl.java:241)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
... 45 more
Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "course_users" violates foreign key constraint "course_users_fk3"
  Detail: Key (data_src_pk1)=(36) is not present in table "data_source".
 
... 34 more
Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2725)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2412)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:371)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:502)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:419)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:137)
at jdk.internal.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
... 45 more
Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "course_users" violates foreign key constraint "course_users_fk3"
  Detail: Key (data_src_pk1)=(36) is not present in table "data_source".



Resolución/Solución alternativa:

Create the DSK manually then the feed will process as expected. 



Versión de destino: Future Reference