1 / 18

Integration of Blackboard Learn™ and PeopleSoft: Bridging Enrollment Data Gaps

This presentation discusses the integration challenges between Blackboard Learn™ versions and PeopleSoft, highlighting the misalignment of data needs between the Student Information System (SIS) and Learning Management System (LMS). Since 2008, significant development efforts have been dedicated to address these issues, emphasizing the importance of reliable data transfer and management. Key technical details, including the use of Python and Java, event-based data snapshots, and database schema considerations, are outlined. Attendees will understand the need for precise control over data fields to enhance connectivity and future capabilities.

meadow
Télécharger la présentation

Integration of Blackboard Learn™ and PeopleSoft: Bridging Enrollment Data Gaps

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Integration Between “Things”™ - with a Catch Chris GreenoughNorthern Arizona University Chris.Greenough@nau.edu@GreenO

  2. Background • Initially PeopleSoft extracts were IMS Enterprise 1.01 Vista 3 was IMS Enterprise 1.1 • Needs in our SIS did not match the needs in our LMS • More need around campus for enrollment data • Constant development since 2008

  3. What’s wrong with direct Integration • Data in your SIS is not Life in your LMS • Incompletes • Guests Lecturers • Cross Listed Classes (What a mess) • Name Changes • Anything else you can think of!

  4. Basic Overview • Export • Logic • Import

  5. Technical Details • Originally written in Java ported to Python • “Event”/Snapshot based • LMS Enterprise 1.1 Based • Oracle Backend • Multiple Destinations

  6. Inbound Sources

  7. Business Logic IMS Enterprise Based Objects • Business Logic • Update Local Database • Apply “Override” Information • IMS Enterprise Based Objects

  8. Outbound Sources

  9. IMS Objects • Objects • Group • Relationship • Properties • Membership • Member • Bulk load • Methods to get override values(default) and underlying values

  10. DB Schema • LMS_GROUP_INFO • LMS_MEMBER_INFO • LMS_ENROLLMENT_INFO • LMS_DESTINATION_INFO • LMS_OVERRIDE_INFO • TABLE_NAME • TABLE_ID • FIELD • VALUE

  11. Web Service Integration • Vista • Multipart IMS XML Web Upload to SIAPI • BBLearn9.1 • WS-Security SOAP requests to API • Using Internally Developed BbPy Web Service Bindings

  12. Conclusion • There is a need to control every field of data from the SIS to the LMS • Distil all sources to common data sources, IMS Enterprise Spec • Separate inbound and outbound data • Hopefully LIS will help the connections • Allows for future expansion

  13. Questions/Links • IMS Enterprise Spec 1.1 http://www.imsglobal.org/enterprise/ • Python http://code.google.com/p/bbpy/ • About.Mehttp://about.me/greeno • Twitter@GreenO

  14. Please provide feedback for this session by emailingBbWorldFeedback@blackboard.com. The title of this session is: • Integration Between Blackboard Learn™, Release 9.1, Vista 8, Others and PeopleSoft - with a Catch

  15. defprocessMembership(self,membership): membership.cacheId="%s:%s"%(membership.sourcedidid,membership.sourcedidsource) logger.info("Starting Membership %s:%s"%(membership.sourcedidid,membership.sourcedidsource)) logger.debug(membership) if(self.shouldProcess(membership)): group = self.odb.getGroup(membership.sourcedidid, membership.sourcedidsource) self.setSubroleToNothing(membership) self.addMissingMembershipTags(membership) self.updateRoles(membership) self.emplidToRegid(membership) self.updateMembershipFromOverride(membership) if getattr(membership,"snap",False): self.processSnap(membership) self.updateDb(membership) self.processExpire(membership, group) self.removeGraders(membership) self.markDestinations(membership) self.markVistaUpdates(membership) self.markDuelEnrollments(membership) self.checkRollup(membership,group) self.runEndPoints(membership) logger.info("Ending Membership") logger.debug(membership)

  16. defprocessGroup(self,group): group.cacheId="%s:%s"%(group.sourcedidid,group.sourcedidsource) logger.info("Starting Group %s:%s"%(group.sourcedidid,group.sourcedidsource)) self.logInfo(group, "Starting Group") self.checkDeleted(group) self.updateGroupFromOverride(group) if hasattr(group,"incomplete"): raise DatabaseErrors.GroupNotFound("Group Not Found!") self.addMissingGroupTags(group) if group.sourcedidsource == config.datasource: self.updateGroupTitle(group) self.createLCH(group) self.createRollups(group) self.updateDb(group) self.extendEndDates(group) self.markVistaUpdates(group) self.markDestinations(group) self.runEndPoints(group) self.sendMembership(group) self.logInfo(group,"Ending Group")

  17. http://code.google.com/p/bbpy/source/browse/trunk/bbpy/src/BbPy/security/SignatureHandler.pyhttp://code.google.com/p/bbpy/source/browse/trunk/bbpy/src/BbPy/security/SignatureHandler.py http://code.google.com/p/bbpy/source/browse/trunk/bbpy/src/BbPy/ContextWS.py

  18. CREATE OR REPLACE VIEW "OVERRIDE_VISTA_GROUP_INFO" ("VISTA_GROUP_ID", "SOURCEDID_ID", "SOURCEDID_SOURCE", "LC_PARENT_ID", "ROLLUP_ID", "TYPE_LEVEL", "SHORT_DESCRIPTION", "LONG_DESCRIPTION", "FULL_DESCRIPTION", "ORG_ID", "ORG_NAME", "BKHIERARCHY", "DIVISION", "BEGIN_DATE", "BEGIN_RESTRICT", "END_DATE", "END_RESTRICT", "ADMIN_PERIOD", "EMAIL", "URL", "WEBCT_TEMPLATE", "CREATE_TS", "MODIFY_TS", "EXPIRE_TS", "COMMENTS", "VISTA_DATA_SOURCE_ID") AS (select VISTA_GROUP_ID, SOURCEDID_ID, SOURCEDID_SOURCE, LC_PARENT_ID, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='ROLLUP_ID'), null, i.ROLLUP_ID, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='ROLLUP_ID'), '') as ROLLUP_ID,TYPE_LEVEL,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='SHORT_DESCRIPTION'), null, i.SHORT_DESCRIPTION, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='SHORT_DESCRIPTION'), '') as SHORT_DESCRIPTION, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='LONG_DESCRIPTION'), null, i.LONG_DESCRIPTION, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='LONG_DESCRIPTION'), '') as LONG_DESCRIPTION, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='FULL_DESCRIPTION'), null, i.FULL_DESCRIPTION, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='FULL_DESCRIPTION'), '') as FULL_DESCRIPTION, ORG_ID, ORG_NAME, BKHIERARCHY, DIVISION,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='BEGIN_DATE'), null, i.BEGIN_DATE, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='BEGIN_DATE'), '') as BEGIN_DATE, BEGIN_RESTRICT, decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='END_DATE'), null, i.END_DATE, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='END_DATE'), '') as END_DATE, END_RESTRICT, ADMIN_PERIOD, EMAIL, URL, WEBCT_TEMPLATE, CREATE_TS, MODIFY_TS,decode( (select 1 from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='EXPIRE_TS'), null, i.EXPIRE_TS, 1,(select value from vista_ims_adm.vista_override_info o where table_name='VISTA_GROUP_INFO' and table_id=i.vista_group_id and field='EXPIRE_TS'), '') as EXPIRE_TS,COMMENTS, VISTA_DATA_SOURCE_ID from vista_ims_adm.vista_group_infoi) ;

More Related