SYNCHRONIZE CHANGES WITH AFFILIATIONS SESSION 5315 17 November 2015
SYNCHRONIZE CHANGES WITH AFFILIATIONS 2
PRESENTER
Hans Janssen
Product Manager SaNS Expertise Centre [email protected]
Hans has a background in study advising, functional maintenance and information management and works since 2008 for the SaNS Expertise Centre as Product Manager and Solutions Architect
SYNCHRONIZE CHANGES WITH AFFILIATIONS 3
OVERVIEW1
AFFILIATIONS & CONSTITUENTS:
Concepts and use in Campus Solutions
3
4
TECHNICAL:How the affiliation
functionality technically
works
5
ENHANCEMENTS&
CONCLUSIONS
2
BUSINESS NEED:
Why we started to use
affiliations
AIF & CWSWhat the affiliation
functionality does
SYNCHRONIZE CHANGES WITH AFFILIATIONS 4
SaNSSaNS
EXPERTISECENTRUM
Universiteit LeidenUniversiteit van AmsterdamHogeschool van AmsterdamTilburg University
SYNCHRONIZE CHANGES WITH AFFILIATIONS 5
WHAT IS SaNS?
SaNS: ‘Collaboration for a New SIS’
4 Universities in the Netherlands: University of Amsterdam (Research University) Hogeschool van Amsterdam (Univ. of Applied Research) University of Leiden (Research University) University of Tilburg (Research University)
120.000 students
10.000 faculty users
1000 administrative users
‘Vanilla CampusHO’
Joint maintenance and development (Expertise Center)
SYNCHRONIZE CHANGES WITH AFFILIATIONS 6
EXPERTISE CENTER
Joint effort of the 4 SaNS-Universities
Responsible for Hosting of the Infrastructure & Technical Maintenance Application Maintenance Application Development and Customization Servicedesk, support, testing, set up
Delivers ‘Campus HO’ as a SaaS-Solution
12 FTE employees Support (3), development (2), technical (2) and functional (3)
Hosting and technical maintenance outsourced to MCX
SYNCHRONIZE CHANGES WITH AFFILIATIONS 7
SaNS SITUATION ON ORACLE PeopleSoft Campus Solutions 9 Bundle #37 Modules in use:
Campus Community Student Records Academic Advisement (Recruitment and) Admission (Student Finance) Student Self Service
Heavily customized application (NL Higher Ed): ‘CampusHO’
PeopleTools 8.54.13
Infrastructure and Database: Oracle 11g 35 CS-environments (5 per SaNS-institution, 10 for EC, 5 POC) 50 Physical servers, no VM
SYNCHRONIZE CHANGES WITH AFFILIATIONS 9
University
Constituents
Inst. 1
Inst. 2
Inst. 3
CONSTITUENTS & AFFILIATIONS Constituent person (or organization) with
a relation to your institution
SYNCHRONIZE CHANGES WITH AFFILIATIONS 10
University
Constituents
Inst. 1
Inst. 2
Inst. 3
University
Constituents Affiliations
Prospect
Student
Applicant
Alumnus
Faculty
Bachelor Student
Student Progr. A
Student Progr. B
Inst. 1
Inst. 2
Inst. 3
CONSTITUENTS & AFFILIATIONS Constituent person (or organization) with
a relation to your institution
Affiliation: Kind of relation the constituent
has with your institution With a startdate And eventually an enddate Affiliations change in time Key fields in CS:
EMPLID Institution Affiliationtype Startdate
SYNCHRONIZE CHANGES WITH AFFILIATIONS 11
AFFILIATIONS IN CAMPUS SOLUTIONS Affiliation to Institution Framework (AIF) - History Delivered in Feature Pack 1 (Bundle #13) in June 2009 Part of the Constituent WebServices (CWS) in Campus Community Based on the PERSON_BASIC_SYNC service operation (SOA
framework from PT 8.9)
Functionality Changes in person-data trigger messages with person-data to an
external system Changes in relations trigger messages with affiliation-data to an
external system You define what the
relevant relations are Different relations can
be sent to different external systems
Campus Solutions
Add/change person
Add/change relation
Constituent message
Constituent message
Add/change affiliation record
External system
SYNCHRONIZE CHANGES WITH AFFILIATIONS 12
SYNCHRONIZING PERSON DATA … Person data synchronization: Integration Broker messages with person information (name,
addresses) Part of the SOA framework to synchronize CS and HCM internally Service operation and message ‘PERSON_BASIC_SYNC’ Triggered from Person components/pagesCampus Solutions/HCM
HCMcomponents
SOA-framework: PERSON_BASIC_SYNC service
Personmessage
Component/page SCC_BIO_DEMO
Add/change Person
Generate Person
message
update Persondata
SYNCHRONIZE CHANGES WITH AFFILIATIONS 13
… TO EXTERNAL SYSTEMS Person data synchronization with external systems: Introduction of Constituent WebServices (CWS) Extended for synchronization to and from HCM, HECH and other
external systems Also used for external search/match and incoming messages
External system
Campus Solutions
Constituent webservice
SOA-framework: PERSON_BASIC_SYNC service
Personmessage
Constituent message
Component/page SCC_BIO_DEMO
Add/change Person
Generate Person
message
Generate Constituent Message
SYNCHRONIZE CHANGES WITH AFFILIATIONS 14
ADDING AFFILIATION DATA Affiliation framework ads functionality to the constituent framework: Webservices and application packages handle changes in relationship Trigger is on component/pages Affiliations for a person are (automatically) added to a record Messages with affiliation-data are sent by the constituent webservice Research Tracking uses affiliations to indicate research evaluators or supervisors
External system
Campus Solutions
Constituent webservice
SOA-framework: PERSON_BASIC_SYNC service
Personmessage
Constituent message
person-data
Component/page SCC_BIO_DEMO
Add/change Person
Generate Person
message
Generate Constituent Message
Affiliation-framework: SCC_APPLICANT_CHANGED service
Affiliationmessage
Component/page ADM_APPL_ENTRY1
addapplication
Generate Affiliation message
Constituent message
affiliation-data
Generate Constituent Message
SYNCHRONIZE CHANGES WITH AFFILIATIONS 16
NEW IDM-SYSTEM (OIM) NEEDS NEW INTEGRATION UvA and HvA are replacing their identity management (IdM) system: New system based on Oracle Identity Manager (OIM) OIM has a standard adaptor for Campus Solutions, based on
Affiliation functionality IdM uses different roles (access-rights) for ‘applicants’ and
‘students’ OIMCS
Application
Program Enrollment
User/Role
HCM
LDAPAD
ELO
Provisioning
CS->OIM connector
SYNCHRONIZE CHANGES WITH AFFILIATIONS 17
CS TO OIM FUNCTIONALITY Functionality delivered by Oracle Assigning affiliations (relationships) to constituents (persons) in CS Adding context to every individual affiliation Sending messages about these affiliations Filtering based on affiliation type Export of all the affiliations as files for full reconciliation in OIM Connector for CS Constituent messages in OIM
Functionality added by SaNS Different business rules for assigning affiliations Much more affiliation types, but based on the same application class Extra context
History Support for OIM’s CS-connector delivered in Bundle #27 (October 2012) Based on constituents and affiliations (Bundle #13, June 2009)
SYNCHRONIZE CHANGES WITH AFFILIATIONS 19
HOW AFFILIATION WORKS - OVERVIEW
Affiliation process steps1. Relevant information about a person is added or changed in CS
(on a component)2. Affiliation webservice is triggered to publish a message with the
affiliation data3. The affiliation framework constructs a constituent object based
on the message4. The affiliation framework determines if an affiliation has te be
assigned or ended5. A constituent message with the affiliation data is published to
external systems
Triggeredprocess
Constituent information
changed in CS
Affiliationmessage published
Affiliation framework
processes the message
Constituent message published
Affiliation assigned or
ended
SYNCHRONIZE CHANGES WITH AFFILIATIONS 20
ASSIGNING AFFILIATIONS: 3 WAYS
Manualprocess
Constituent message published
Affiliation assigned or
ended
Triggeredprocess
Constituent information
changed in CS
Affiliationmessage published
Affiliation framework
processes the message
Constituent message published
Affiliation assigned or
ended
Batchprocess
Batch proces to identify
constituents
Constituent message published
Affiliation assigned or
ended
Affiliation framework
processes the 'messages'
SYNCHRONIZE CHANGES WITH AFFILIATIONS 21
ADDING A NEW AFFILIATION TYPE Define your own affiliation types Based on existing ones …
… or completely new Attach business logic to your
affiliation with an application class
The class logic defines whether or not an affiliation is set or ended
SYNCHRONIZE CHANGES WITH AFFILIATIONS 22
ADD TRIGGERS TO THE AFFILIATIONTYPE Trigger Connects the affiliation type to a specific service operation This information is used to route the internal messages Affiliation types can share the same trigger/service operation
SYNCHRONIZE CHANGES WITH AFFILIATIONS 23
ADD CONTEXT DATA
Add context records and field To add extra information about the person or the affiliation The information is added
when you assign an affiliation to a person
SYNCHRONIZE CHANGES WITH AFFILIATIONS 24
AFFILIATION HIERARCHY
Affiliations can be a child of another affiliation Only the lowest level is actually assigned
Student
Bachelor Master
Prog X Prog Y
SYNCHRONIZE CHANGES WITH AFFILIATIONS 25
VIEW AFFILIATONS AND HIERARCHY Campact view of affiliation codes is found under Campus Community
SYNCHRONIZE CHANGES WITH AFFILIATIONS 26
MANUALLY ASSIGN AN AFFILIATIONSteps to manually assign a affiliation:1. Choose a constituent with an affiliation or add an new
constituent/affiliation
2. Assign an existing affiliation type to the constituent
3. Add a start date for this affiliation
4. Save the affiliation for this constituent
Campus takes care of the rest Context field data are automatically added Hierarchy is build Constituent message is sent to external system
SYNCHRONIZE CHANGES WITH AFFILIATIONS 31
TRIGGER BASED AFFILIATION ASSIGNING Adding affiliation for an applicant1. Add an applicant in the Application Entry component
2. Save the application
3. (Person data are saved; PERSON_BASIC_SYNC message is published)
4. (Constituent message with person data is published)
5. Application data are saved; SCC_AFL_APPLICANT message is published
6. Constituent object is created; business logic checks applicant status
7. If a valid affiliation, a Person-Affiliation record is added
8. Constituent message with affiliation data is published
CS
Constituent webservicesAffiliations Framework
Affiliation message
Constituent message
CS-page application
Application
Constituent object
add affiliation record
create message
create constituent message
SYNCHRONIZE CHANGES WITH AFFILIATIONS 32
VISIBILITY
On component/pages with affiliation content, a ‘affiliation’ icon appears when an affiliation is assigned for this person
SYNCHRONIZE CHANGES WITH AFFILIATIONS 33
FILTERING THE CONSTITUENT MESSAGES A constituent message with affiliation data is first sent through a filter For every external system you can define which affiliation types are
able to pass
SYNCHRONIZE CHANGES WITH AFFILIATIONS 35
BATCH PROCESSES
Assign affiliations in batch Delivered process, uses the available business rules for each
affiliationtype Based on Population Selection; define your own selections, using a
bind-record For one, some or all affiliation types
Delete affiliations in batch Delivered process Bases on Population Selection; define your own selections, using a
bind-record
Full Synchronization Delivered process and service operation Fetches all the affiliations and combines them in XML-files for full
reconciliation
SYNCHRONIZE CHANGES WITH AFFILIATIONS 39
AFFILIATIONS TECHNICALLY
A closer look at the technical parts
SYNCHRONIZE CHANGES WITH AFFILIATIONS 40
SERVICE OPERATIONS
Affiliation functionality depends on 3 types of services: Constituent services SOA framework services Affiliation services
Constituent services Used for publishing messages to external systems Service operations: SCC_CONSTITUENT_SYNC and SCC_CONSTITUENT_FULLSYNC
SOA framework services Used for publishing person data internally, as trigger for the constituent service Service operation: PERSON_BASIC_SYNC
Affiliation service Used for publishing affiliation data internally, as trigger for the affiliation
framework Service operations: SCC_AFL_APPLICANT_CHANGED,
SCC_AFL_STUDENT_CHANGED etc.
SYNCHRONIZE CHANGES WITH AFFILIATIONS 41
CONSTITUENT WEBSERVICES (CWS)
Constituent Webservices
CWS for synchronizing
Entity registry based CWS (used for AAWS)
Outboundservices
Inboundservices
Synchronize Constituent Service operation: SCC_CONSTITUENT_SYNC
Message: SCC_CONSTITUENT_DS
Update Constituent
External Search/Match Get Constituent
Read Constituent
Full Sync Service operation: SCC_CONSTITUENT_FULLSYNC
Message: SCC_CONSTITUENT_FULLSYNC
Synchronizing person data with external systems
SYNCHRONIZE CHANGES WITH AFFILIATIONS 42
TRIGGERS ON COMPONENTS SavePostChange on components Call Eventpublish with module-name and service operation:&myApplicant = create SCC_EVENT_PUBLISH:PublishAffiliation(&RS0, "APPLICANT", "SCC_AFL_APPLICANT_CHANGED");&rsltmsg = &myApplicant.execute();
SYNCHRONIZE CHANGES WITH AFFILIATIONS 43
AFFILIATION IMPLEMENTATION CLASSES SCC_CONSTITUENT_MGR:HANDLER:ConstituentNotifyProcessor This class processes the internal affiliation message
SCC_CONSTITUENT_EVENTS.ApplicantSync This class marshals the internal trigger-message into a constituent
object
SCC_AFFILIATIONS:IMPLEMENTATION Contains the (sample) classes for the different affiliation types Classes contain te business logic that decides whether or not
an affiliation has to be assigned
SNS_AFFILIATIONS.AffiliationAbstract Affiliation record is added or end-dated
SYNCHRONIZE CHANGES WITH AFFILIATIONS 44
MESSAGE STRUCTURE
PERSON_BASIC_SYNC SCC_AFL_XXX_CHANGED SCC_CONSTITUENT_DS.V2
You can easily add or delete records and fields for the messages
SYNCHRONIZE CHANGES WITH AFFILIATIONS 46
CUSTOM MADE SaNS ENHANCEMENTS Every plan its own affiliation Roles in OIM are dependent on the department responsible for a AcadPlan Every AcadPlan (almost 500!) gets its own affiliationtype 1 Application Class handles all the different AcadPlan’s
‘Applicant’ and ‘Student’ are somewhat different in the Netherlands Customized triggers and business logic
More context fields, independent of EMPLID Remove code that limits the number of context fields to 10 Use views to add non-emplid based records/fields (descriptions,
organization)
Always a complete Person data message Change code from ‘delta’ to ‘complete’ Trigger person-messages with all affiliation additions
SYNCHRONIZE CHANGES WITH AFFILIATIONS 48
WHAT YOU NEED TO DO AND KNOW If your affiliation functionality needs are limited: Use the Oracle-delivered affiliation types and business logic Read the peoplebooks chapters on affiliations Have/gain/use Integration Broker knowledge
IB Configuration, Services, Operations, Messages, Nodes, Routings, Handlers, Security…
If you want to extend or change the delivered functionality: Copy the delivered application classes as a start Change the application class logic or add your own classes Read the developer guides on constituents and affiliations Build/use knowledge on XML Schema
XML Tools, Schemas, XML Development APIs, W3C Industry Standards, Testing Approaches…
Build/use knowledge on Application Package PeopleCode Object Principles, Extension, Inheritance, Overriding, Abstraction, Programming Patterns…
SYNCHRONIZE CHANGES WITH AFFILIATIONS 49
SUMMARY
Affiliations are a great framework To define your own affiliation-types with their own business logic
Lifecycle types: Applicant, Bachelor Student, Master Student, Postgraduate, Alumnus Special relations: contributor, foreign student, internship, research supervisor
To synchronize person and relationship data with external systems
Basic functionality is available out of the box
For specific types or rules you need to build your own appl. classes
SYNCHRONIZE CHANGES WITH AFFILIATIONS 50
MORE INFORMATION
Hans Janssen
Product Manager SaNS Expertise Centre [email protected] www.sans-ec.nl
ALL ALLIANCE PRESENTATIONS WILL BE AVAILABLE FOR DOWNLOAD FROM THE CONFERENCE SITE