Periodic Refresh
Every 30 minutes, Higher Logic calls the stored procedure hlGetChangedMembers to return a list of changed users. The procedure targets several tables within iMIS, such as Activity, Orders, and Name.
- Activity offers transaction dates for purchasing products within the iMIS system, such as membership packages and committee memberships.
- The Name table offers a LastUpdated field to query based on any changes to the user profile within iMIS.
- Orders represents the current outstanding memberships to the various iMIS modules, such as committees and chapters. Each of these objects encompass many of the various actions that would need to be factored within the stored procedure. The default stored procedure covers the basic SQL that is provided for the iMIS integration.
For any customized logic that is added and that exceeds the scope of the basic SQL stored procedures and views, corresponding logic must be added to the periodic refresh and the existing criteria needs to be updated to encompass the new customized logic. Below is a sample format for adding customized logic to this stored procedure.
SELECT {iMIS ID} AS MemberKey, {Datetime Field} AS LastUpdated
FROM {Table with Datetime Field}
WHERE {Datetime Field} >= @ChangedSince
- The SELECT statement must return the iMIS ID and the datetime field for when a change has happened.
- The FROM statement needs to target the database table that houses the iMIS ID and the datetime field.
- The WHERE statement must use that datetime field relative to the ChangedSince variable. That variable is the date and time that Higher Logic is sending over with each periodic refresh.
Custom Demographics
Base information for a user includes first name, last name, phone numbers. This information comes from the hlGetMemberDetails stored procedure. The logic provided can be modified, but the schema must remain the same.
hlGetMemberDetails
Field | iMIS | Higher Logic |
---|---|---|
MEMBERKEY | ID field from the Name table | Unique identifier of the user - this value is the most important as it serves as the mapping between Higher Logic and iMIS. |
PREFIX | Prefix field from the Name table | A name prefix (Mr., Ms., Dr.) |
FIRSTNAME | First_Name field from the Name table | User’s first name |
LASTNAME | Last_Name field from the Name table | User’s last name |
SUFFIX | Suffix field from the Name table | A name suffix (Jr., Sr., III) |
DESIGNATION | Designation field from the Name table | A designation or credential included in the user’s name. |
INFORMALNAME | Informal field from the Name table | An informal or nickname for the user |
COMPANYNAME | Company field from the Name table | Company name or employer (this is required for organization accounts) |
TITLE | Title field from the Name table | Job title for the user |
EMAIL1 | Email field from the Name table | Primary email address of the user. |
PHONE1 | Work_Phone field from the Name table | Formatted phone number |
PHONE1TYPE | Set to “Work” by default | Designated type for Phone Number 1 |
PHONE2 | Home_Phone field from the Name table | Formatted phone number |
PHONE2TYPE | Set to “Home” by default | Designated type for Phone Number 2 |
PHONE3 | Fax field from the Name table | Formatted phone number |
PHONE3TYPE | Set to “Fax” by default | Designated type for Phone Number 3 |
PHONE4 | Toll_Free field from the Name table | Formatted phone number |
PHONE4TYPE | Set to “TollFree” by default | Designated type for Phone Number 4 |
WEBSITEURL | Website field from the Name table | Full URL |
DONOTLIST | EXCLUDE_DIRECTORY field from the Name table | Flag that indicates if Higher Logic should show this record in directory searches. Also known as directory opt out (True or False). |
DONOTEMAIL | This is set to 0 by default. This field will need to be modified to be usable with the integration. | Allow users to opt out of all Higher Logic emails (True or False). |
STATUS | Status field from the Name table | Determine if this user is considered active in Higher Logic |
ISCOMPANY | COMPANY_RECORD field from the Member_Types table | Company or organization record (True or False). |
COMPANYID | CO_ID field from the Name table | Parent company unique identifier |
CUSTOM01 | NULL by default. | Available for custom demographics |
CUSTOM02 | NULL by default. | Available for custom demographics |
CUSTOM03 | NULL by default. | Available for custom demographics |
CUSTOM04 | NULL by default. | Available for custom demographics |
CUSTOM05 | NULL by default. | Available for custom demographics |
CUSTOM06 | NULL by default. | Available for custom demographics |
CUSTOM07 | NULL by default. | Available for custom demographics |
CUSTOM08 | NULL by default. | Available for custom demographics |
CUSTOM09 | NULL by default. | Available for custom demographics |
CUSTOM10 | NULL by default. | Available for custom demographics |
Community Groups
hlMemberCommunityGroups
NOTE: Fields in bold text are required.
Field | Role for Integrated Communities + Notes |
---|---|
MEMBERKEY | The primary identifier used to map an integrated user to an integrated community. |
SINCEDATE | Deprecated; leave as NULL. |
BEGINDATE | The starting date for the membership. The integration has to make sure the date range being returned is valid. If the begin date is set in the future, the membership will not count and the user will not be added. If the begin date is empty, the user will be added to the community as the integration will treat it as the earliest date in SQL time (January 1, 1753) |
ENDDATE | The ending date for the membership. The integration has to make sure the date range being returned is valid. If the end date is set in the past, the user will be removed from (or not added to) the community. If the end date is empty, the user will not be removed from (or will be added to) the community as the integration will treat it as having the latest date. |
GROUP | The unique identifier that Higher Logic will use to link the community back in iMIS. |
GROUPNAME | The long name that Higher Logic will display for the community name. |
GROUPTYPE | The community type that will be associated with this community. |
ROLE | The identifier for an integrated role in an integrated community. |
Assume a test user with an iMIS ID of 10000 and the current date is 01/01/2019.
SELECT *
FROM hlMemberCommunityGroups
WHERE MemberKey = '10000'
Running the above SQL query displays all community memberships that will be returned to Higher Logic for the test user. Here’s a sample output with some important scenarios to be aware of. Any columns that are left out are assumed to be NULL or are not relevant in this example.
MEMBERKEY | BEGINDATE | ENDDATE | GROUPKEY | GROUPNAME | GROUPTYPE |
---|---|---|---|---|---|
10000 | 12/01/2018 | 01/10/2019 | TEST-COMM | Test Community 1 | COMMUNITY |
10000 | 01/10/2019 | 01/20/2019 | TEST-COMM2 | Test Community 2 | COMMUNITY |
10000 | 12/01/2018 | 12/10/2018 | TEST-CHAPT | Test Chapter | CHAPTER |
User 10000 will be added to one community in Higher Logic. Community memberships with invalid date ranges (e.g., a BeginDate in the future or an EndDate in the past) are excluded. The memberships to "Test Community 2" and "Test Chapter" are invalid because the values of BeginDate and EndDate are invalid. The first membership is valid, so User 10000 will appear in the roster of the "Test Community 1" integrated community with a unique identifier of TEST-COMM between the BeginDate and EndDate returned by the view.
Security Groups
hlMemberSecurityGroups
NOTE: Fields in bold text are required.
Field | Role for Integrated Security Groups + Notes |
---|---|
MEMBERKEY | The primary identifier used to map an integrated user to an integrated security group. |
SINCEDATE | Deprecated; leave NULL. |
BEGINDATE | The starting date for the membership. The integration needs to make sure the date range being returned is valid. If the begin date is set in the future, the membership will not count, and the user will not be added. If the begin date is empty, the user will be added to the security group as the integration will treat it as the earliest date in SQL time (January 1, 1753) |
ENDDATE | The ending date for the membership. The integration needs to be made sure the date range being returned is valid. If the end date is set in the past, the membership will not count, and the user will not be added. If the end date is empty, the user will be added to the security group as the integration will treat it as having the latest date. |
GROUPKEY | The unique identifier that Higher Logic will use to link the security group back to iMIS. |
GROUPNAME | The long name that Higher Logic will display for the security group. |
GROUPTYPE | The type that will be associated with this security group. |
ROLE | Not applicable; leave NULL. |
The same idea applies to this example. The integration filters for invalid date ranges when applying security group memberships. The SQL query is also similar:
SELECT *
FROM hlMemberCommunityGroups
WHERE MemberKey = '10000'
Events
The schema for what constitutes an event in Higher Logic is within the API Bridge. Higher Logic pulls all iMIS data from the iMIS event table, MEET_MASTER. The API Bridge will transform the data into the schema below. This schema is normally not modified.
Event Schema
NOTE: Fields in bold text are required.
iMIS Field | Higher Logic Field | Role for Integrated Events + Notes |
---|---|---|
MEETING | LEGACYEVENTKEY | The unique identifier that represents a mapping to an integrated event. |
TITLE | TITLE | The long title used to display the event name on Higher Logic |
NULL | SHORTITLE | The short form title used in some compact views for events on Higher Logic. This field will be generated from the TITLE field by taking the first 20 characters. |
MEETING_TYPE | TYPE | A category field that can be created/assigned to events. This field can also be used to limit certain events from coming over via the integration. |
DESCRIPTION | EVENTDESCRIPTION | A description that can be added to events to disclose more detailed information |
BEGIN_DATE | STARTDATETIME | The starting date for the event |
END_DATE | ENDDATETIME | The end date for the event. The integration will check if the date is set in the future before pulling it in. |
STATUS | ISACTIVE | The active flag that determines if this event should be imported to Higher Logic. This field will be true if the STATUS is set to “A” (for Active) AND if the WEB_ENABLED field returns true. |
ADDRESS_1 | ADDRESS1 | The Address1 field for the address associated with the event. |
ADDRESS_2 | ADDRESS2 | The Address2 field for the address associated with the event. |
ADDRESS_3 | ADDRESS3 | The Address3 field for the address associated with the event. |
CITY | CITY | The city for the address associated with the event. |
STATE_PROVINCE | STATEPROVINCECODE | The state province code for the address associated with the event. |
ZIP | POSTALCODE | The postal code for the address associated with the event. |
COUNTRY | COUNTRY | The country for the address associated with the event. |
EARLY_CUTOFF | EARLYREGISTRATIONDATE | The date which determines when early registration ends. This date represents the cutoff point for early pricing. |
REG_CUTOFF | REGULARREGISTRATIONDATE | The date which determines when regular registration ends. This date represents the cutoff point for regular pricing. |
LATE_CUTOFF | LATEREGISTRATIONDATE | The date which determines when late registration ends. This date represents the cutoff point for late pricing. |
MEETING_URL | DETAILURL | A URL that is displayed on an event for users if more information is required. |
EVENTFUNCTIONS | EVENTOPTIONS | A list of sessions within the main event. Sessions are a separate object with a separate schema. |
Every event can have mini-events that are called event sessions. For example, Higher Logic Super Forum represents the main event. The many breakout sessions (speaker presentations, consulting sessions) that happen during Super Forum are the event sessions. In iMIS they are called event functions. Higher Logic performs a lookup on all event functions/sessions in the PRODUCT and PRODUCT_FUNCTION SQL tables using the iMIS MEETING field or the LegacyEventKey. Sessions are created the same way as events. The schema below is not modified.
Event Session Schema
NOTE: Fields in bold text are required.
iMIS Field | Higher Logic Field | Role for Integrated Events + Notes |
---|---|---|
PRODUCT_CODE | LEGACYOPTIONKEY | Unique identifier that represents a mapping to an integrated event |
TITLE | FUNCTIONTITLE | Long title used to display the event name on Higher Logic |
FUNCTION_TYPE | FUNCTIONTYPEKEY | Category field that can be created/assigned to event sessions |
WEB_DESC | FUNCTIONDESCRIPTION | Description that can be added to event sessions to display more detailed information |
BEGIN_DATE_TIME | STARTDATETIME | Start date time for the event |
END_DATE_TIME | ENDDATETIME | End date time for the event |
CEU_AMOUNT | CECREDITS | Number field, usually for a registration fee for the event session |
COURSE_CODE | SESSIONCODE | Additional identifier brought over from iMIS |
STATUS | ISACTIVE | Active flag that determines if this event should be imported to Higher Logic. This field will be true if the STATUS is set to A (for Active) AND if the WEB_ENABLED field returns true. |
Related articles
The following articles have supporting information for the iMIS integration.