Using the Course XML Feeds in a Website

Search for a solution

accessplanit’s website XML Feeds are a very flexible, configurable way to integrate your accessplanit courses into your website.

The XML feeds contain the details of your advertised, future courses and your website developers can use these details to advertise your courses, show your course availability, to give your customers a seamless transition into your accessplanit shopping basket when they click to book!

Why integrate?

There are two main reasons to integrate your courses into your website:

  1. To advertise your course availability
    The HTML plugin displays a table of available, future courses. Your customers can see which courses you are running on what dates, where those courses are being run, and if there are still places left.

  2. To allow people to directly book course places online
    With the HTML plugin you can include a ‘Book’ button which takes your customers straight to your accessplanit shopping basket with that course added, this means you can be taking bookings 24 hours a day, 7 days a week!


Why use the XML Feeds for website integration?

There are two core ways to integrate your accessplanit courses into your website. You can either use accessplanit’s XML feeds which offer a lot of flexibility and functionality for a highly-configured website, or you can use accessplanit’s HTML Plugin for a quick and easy integration, many accessplanit customers opt for the HTML Plugin route as a long-term integration, and some have also chosen this route as a temporary solution while their website developers work on their final website using the XML Feeds.

The benefits to using the XML Feeds are:

  1. Flexibility, the XML Feeds provide your web developer with the freedom to choose how the information about your courses is displayed on your website, whereas the HTML Plugin is limited to displaying courses in a table format.

  2. More course information available, there is a lot more information about your courses available in the XML feeds compared to the HTML Plugin, for example the XML Feeds contain your course description text (Aims, Objectives, Summary) and the External ID for your Courses, this information is not available in the HTML Plugin.


Caveats to use of the XML Feeds

  1. You will need to have the expertise in-house, or be willing to employ an external web developer capable to interpreting the XML feed and performing the actual integration work. This can be time consuming, and if you outsource this work you’ll need to factor in the associated costs.

  2. If you run sessional courses and want to show the child sessions linked to the head course on your website then this is very difficult to achieve using the XML.


What XML feeds are available?

There are three XML feeds available, all of which all return slightly different data sets and you may wish to use a combination of these for your website integration.

 

The WebIntegration options
  • The GetCourses feed will show the details of your Course Templates in your accessplanit platform

  • The GetCoursesPackage will show the details of your scheduled courses

  • The GetCoursesPackageWithCourseDateText will show the details of your scheduled courses and includes Joining Instructions text that you provide for the course

The most common combination used is the GetCourses feed and the GetCoursesPackage feed. The GetCourses feed is used to display information for each course that you offer (such as the course name, course description and course duration), then the GetCoursesPackage feed is used to display the available dates that your customers can book (including the date of the course, the cost, the number of places available, and the link to book the course). This approach ensures that if there are no course dates available for one of your courses, your course information is still displayed.

It should be noted that most of the information available within the GetCourses feed is also available within the GetCoursesPackage and GetCoursesPackageWithCourseDateText feeds, apart from ImageURL and WICategory. Likewise, all the data contained within the GetCoursesPackage feed is contained with the GetCoursesPackageWithCourseDateText feed. Please see ‘Data available in each XML Feed’ below to read about what information is available in each XML Feed.


Accessing the XML Feeds

To access these XML feeds for your integration, use the following URL, replacing 'configname' with your platform's name:

https://configname.accessplanit.com/accessplan/services/WebIntegration.asmx

 

The WebIntegration Options

The ‘configname' in the example URL above should be replaced with your accessplanit platform’s name. This is the first part of the URL on your platform and this is typically the name of your company.
For example, if your accessplanit platform was called 'Galaxy’, the URL to access your accessplanit platform would be https://galaxy.accessplanit.com and the script source URL would be
https://galaxy.accessplanit.com/accessplan/services/WebIntegration.asmx

If you are setting up your integration with your Sandbox accessplanit environment to begin with (before switching the integration to use your Live accessplanit environment), then you will also need to change your URL to reference the sandbox site. To do this change ‘accessplan’ in the URL to ‘accessplansandbox’. For example:
https://galaxy.accessplanit.com/accessplansandbox/services/WebIntegration.asmx

 


Which courses won't show in the feeds?

There are a few reasons why a course might not show in the feeds:

  • Exclusivity - If a course template or date is exclusive to a certain account or account group, this won't show in the plug-in. This is to make sure that only public courses are listed on your website, rather than any courses that you are running specifically for one customer. There is a setting that accessplanit can change to allow exclusive course to show, please get in contact with the accessplanit support team if you would like this changed. 

  • Advertising - If both the course template and course date have the "Advertise" field ticked, and the current date is within the "Advertise Start/End Dates" date range, then the course will show in the feed.

  • Dates - By default, only future courses will show, however there is a setting that accessplanit can change to allow courses that have already started to appear in the feed. Please get in contact with the accessplanit support team if you would like this changed. 

You can learn more about Course Management here. 


The Book Now link is included in the XML Feeds for Courses with the following statuses

  • Available

  • Fully Booked

The Book Now Link is not included in the XML Feeds for Courses with the following statuses

  • Provisional

  • In Progress

  • Fully Booked

  • Cancelled

  • Completed

  • On Hold

  • Failed


Data available in each XML Feed

Here is a list of the information available in each of the XML Feeds, so that you can decide which feeds to use in your integration!

PLEASE NOTE: If your Course Dates & Times are not appearing in the XML feed, this is because the Course ‘Type’ has uppercase letters instead of lowercase. This always must be lowercase!

All three feeds

  • Course ID
    The course ID displays the Course Template ID for the Course Template in your accessplanit platform, this can be up to 10 characters long.

  • Label
    The label displays the Course Template label.

  • Text1
    Text1 displays the course description text that is stored in the ‘Aims’ box for the Course Template. Aims does support HTML (such as making some text bold, and changing the font), and this HTML is included in the XML Feed.

  • Text2
    Text2 displays the course description text that is stored in the ‘Objectives’ box for the Course Template. Objectives does support HTML (such as making some text bold, and changing the font), and this HTML is included in the XML Feed.

  • Text3
    Text3 displays the course description text that is stored in the ‘Summary’ box for the Course Template. Summary does support HTML (such as making some text bold, and changing the font), and this HTML is included in the XML Feed.

  • Cost
    The cost displays the cost of the course, if this is accessed from the <Courses> ... </Courses> part of the feed then the cost will show you the cost stored against the Course Template (the default cost of the course), if this is accessed from the <Dates> ... </Dates> part of the feed then then cost will show you the cost for this specific course date.

  • Cost Type
    The Cost Type displays how cost is calculated for a booking. For public offered courses, the majority courses have the cost type of per “candidate”. The Cost Types available are:

    • Candidate

    • Hour

    • Session

    • Day

    • CandidateDay

  • Type
    The Type tells you what the format of the course is, there are six different types of courses available in the accessplanit platform. The most commonly used types are Class, Web, and eLearning. The Types available are:

    • Class

    • eLearning

    • Module

    • Document

    • Web

  • Duration
    The Duration is the length of the course, the duration is always a number, it is supported by the next field ‘Duration Type’.

  • Duration Type
    The Duration Type supports the previous field ‘Duration’. Courses can either have a duration in days, hours or minutes. Please note that the duration type is displayed as a number in the XML Feed, you can use the below key to understand what each number is for:

    • A duration type of ‘0' means 'Days’

    • A duration type of ‘1' means 'Hours’

    • A duration type of ‘2' means 'Minutes’

  • Currency
    The Currency is typically a three letter currency code such as ‘GBP' or 'USD’, it is used to indicate the currency that this course is being charged in

  • CurrencySymbol
    The Currency Symbol is the symbol associated with the currency in the previous field, for example, GBP would have the associated symbol of '£', and USD would have a associated symbol '$'.

  • CategoryIDs
    The Category IDs displays the IDs of the categories that the Course Template is associated with.

  • Publish Date
    The Publish Date displays the date that the course can be published, this is set up on the Course Template.

  • External ID
    If this is accessed from the <Courses> ... </Courses> part of the feed then the External ID is the ID set up in the Course Template’s External ID option, if this is accessed from the <Dates> ... </Dates> part of the feed then the External ID is the ID set up in the scheduled Course’s External ID option, this is often used to store the ID from another system.

  • Delivery Method
    The Delivery Method displays the ID of the Delivery Method for the Course, the labels for these IDs is available in the GetCoursesPackage feed. If this is accessed from the <Courses> ... </Courses> part of the feed then the Delivery Method is the ID of the Delivery Method set up on the Course Template, if this is accessed from the <Dates> ... </Dates> part of the feed then the Delivery Method is the ID of the Delivery Method set up on the scheduled course.

GetCourses feed only

  • WICategory
    This displays the Category ID and Label of a category that the course relates to. Each Course Template may have multiple WICategory sections, depending on how many categories are associated to it.

  • ImageURL
    This is the link to the image that is stored against the Course Template in accessplanit.

GetCoursesPackage and GetCoursesPackageWithCourseDateText feed only

PLEASE NOTE: If you’re Course Dates & Times are not appearing in the XML feed, this is because the Course ‘Type’ has uppercase letters instead of lowercase. This always must be lowercase!

Dates

  • CourseDateID
    This is the ID number which is unique to this individual occurrence of this course. These IDs are automatically generated in your accessplanit platform and they are numeric.

  • StartDate
    This is the start date and time of this scheduled course, the date is displayed in the format ‘YYYY-MM-DDT00:00:00’, for example '2023-06-17T09:30:00'. The “T” separates the date and time. A 24 clock time format is presented. There will not be a date provided here if the course is not a scheduled course, for example if it is an eLearning course.

  • EndDate
    This is the end date and time of this scheduled course, the date is displayed in the format ‘YYYY-MM-DDT00:00:00’, for example '2023-06-18T17:30:00'. The “T” separates the date and time. A 24 clock time format is presented. There will not be a date provided here if the course is not a scheduled course, for example if it is an eLearning course.

  • StartDateString
    This is the start date of the course only, without the time, the date is displayed in the format DD/MM/YYYY, for example '17/06/2022'.

  • EndDateString
    This is the end date of the course only, without the time, the date is displayed in the format DD/MM/YYYY, for example '18/06/2023'.

  • StartTimeString
    This is the start time of the course only, without the date, the date is displayed in the format HH:MM:SS am/pm, for example '09:30:00 AM'.

  • EndTimeString
    This is the end time of the course only, without the date, the date is displayed in the format HH:MM:SS am/pm, for example '05:30:00 PM'.

  • VenueIDs
    This displays the Venue IDs for each of the venues that the course is assigned to. Each course may have multiple venues, however it is not common for a course to have more than one, details about the venue (such as the venue label and address) are available lower down in the feed.

  • TrainerIDs
    This displays the Trainer IDs for each of the trainers that is leading the course. Each course may have multiple trainers, details about the trainers (such as their forename and surname) are available lower down in the feed.

  • SpacesAvailable
    This displays the number of available spaces left on the course.

  • Status
    This will display the status of the course, the following statuses available are:

    • Available

    • Cancelled

    • Completed

    • InProgress

    • OnHold

    • FullyBooked

    • Unknown

    • Provisional

  • BookNowURL
    This is the unique booking URL for your customers to book this course. Following this URL will add the course to your customer’s accessplanit shopping basket.

  • EnquireURL
    This is a unique enquiry URL for this course which can be used to direct prospective customers to a form they can fill in to express an interest in a course (rather than making a firm booking). From a web developer's perspective, you may choose to have this URL open in a pop-up page once the link is clicked. Please note that accessplanit has an enquiry form plugin which is often used instead of the EnquireURL.

  • Private
    This will either be ‘true’ or ‘false’, and relates to a legacy setting that is no longer widely used. If this is in use, most organisations choose to not display any courses that have private set to “true” on their website as these relate to courses that are not available to the general public.

  • Alias
    The Alias is a the label given to the scheduled course, as an override to the Course Template Label.

  • MaxPlaces
    This displays the total number of spaces that were available on the course before bookings were made. This allows you to create availability warnings based on the size of the course (MaxPlaces) and the SpacesAvailable.

  • Sessional
    This displays ‘true’ or ‘false’ to indicate if the course is sessional or not, a sessional course is one which is made up of multiple parts, such as a blended learning course or a course which runs each Monday for four weeks.

Venues

  • VenueID
    This displays the ID of the Venue and can be used as a reference to the Venue IDs displayed against each date.

  • Label
    This is the label of the Venue

  • Address
    This is the building name/number and street part of the Venue address.

  • Town
    This is the town the Venue is within.

  • County
    This is the county the Venue is within.

  • Country
    This is the country the Venue is within.

  • Postcode
    This is the Venue postcode.

  • Longitude
    This is the approximate longitude based on the postcode supplied of the Venue.

  • Latitude
    This is the approximate latitude based on the postcode supplied of the Venue.

Trainers

  • TrainerID
    This displays the ID of the Trainer and can be used as a reference to the Trainer IDs displayed against each date.

  • Forenames
    This is the Trainer's first name.

  • Surname
    This is the Trainer's last name.

Categories

  • Category ID
    This displays the ID of the Category and can be used as a reference to the Category IDs displayed against each date.

  • Label
    This is the label of the Category.

Delivery Methods

  • Delivery Method ID
    This displays the ID of the Delivery Method and can be used as a reference to the Delivery Method IDs displayed against each date.

  • Label
    This is the label of the Delivery Method.

GetCoursesPackageWithCourseDateText feed only

  • AdditionalInformation
    AdditionalInformation displays any text that is stored in the ‘Additional Information’ box for the scheduled course. Additional Information does support HTML (such as making some text bold, and changing the font), and this HTML is included in the XML Feed.

  • JoiningInstructions
    JoiningInstructions displays any text that is stored in the ‘Joining Instructions’ box for the scheduled course. Joining Instructions does support HTML (such as making some text bold, and changing the font), and this HTML is included in the XML Feed. 


Filtering the XML feeds

GetCourses

There are three filters available for the GetCourses feed, only one of these is mandatory

 

  • CompanyID
    This is the training provider running the courses, this filter is mandatory.
    Please note, if your accessplanit platform has multiple training providers, you will need to run separate requests for each provider, as you cannot comma separate multiple provider IDs to display courses from two or more providers in the feed at the same time. 
    You can find the Company ID inside your accessplanit platform by viewing your Training Provider Account and viewing the ‘Account ID’ option.

  • CategoryIDs
    This is the category of the Course Template, this filter is optional.
    Provide the ID of the category to only return courses that are within this category.
    If you would like to provide multiple category IDs in this filter, pipe-separate them within your request.

  • CourseIDs
    This is the ID of the Course Template, this filter is optional.
    Provide the ID of the Course Template to only return that specific Course Template in your results.
    If you would like to provide multiple category IDs in this filter, pipe-separate them within your request

GetCoursePackage & GetCoursesPackageWithCourseDateText

There are four filters available for the GetCoursesPackage feed, only one of these is mandatory

 

  • CompanyID
    This is the training provider running the courses, this filter is mandatory.
    Please note, if your accessplanit platform has multiple training providers, you will need to run separate requests for each provider, as you cannot comma separate multiple provider IDs to display courses from two or more providers in the feed at the same time. 
    You can find the Company ID inside your accessplanit platform by viewing your Training Provider Account and viewing the ‘Account ID’ option.

  • CourseIDs
    This is the ID of the Course Template, this filter is optional.
    Provide the ID of the Course Template to only return courses for that specific Course Template in your results.
    If you would like to provide multiple category IDs in this filter, pipe-separate them within your request.

  • VenueIDs
    This is the ID of the Venue where the courses are being held, this filter is optional.
    Provide the ID of the Venue to only return courses that are being held at that venue in your results.
    If you would like to provide multiple venue IDs in this filter, pipe-separate them within your request.

  • CategoryIDs
    This is the category of the Course Template, this filter is optional.
    Provide the ID of the category to only return courses that are within this category.
    If you would like to provide multiple category IDs in this filter, pipe-separate them within your request.


Filtering the XML Feeds using URLs

The previous section discussed how to use the …/services/WebIntegration.asmx page to filter the results of the XML Feeds. It is also possible to run the feeds and filter them via a URL request.

To use the URL approach, please see the example URLs below and the instructions for which parts of the URL to change

GetCourses

For the GetCourses feed, use the below URL and change the text that is bold

https://configname.accessplanit.com/accessplan/services/WebIntegration.asmx/GetCourses?categoryIDs=OPTIONAL&companyID=MANDATORY&courseIDs=OPTIONAL

  1. Change the ‘configname' to your accessplanit platform’s name

  2. Change the ‘accessplan’ to ‘accessplansandbox’ if you are using the Sandbox environment instead of the Live environment

  3. Include the IDs of the categories that you would like to filter on

    1. If you do not want to filter on the category, you must still include the ‘categoryIDs=’ text

    2. If you want to filter on multiple categories, you can include multiple IDs and separate them with a pipe

  4. Include the ID of the training provider after the 'companyID=' text

  5. Include the IDs of the courses that you would like to filter on

    1. If you do not want to filter on the course template ID, you must still include the ‘courseIDs=’ text

    2. If you want to filter on multiple courses, you can include multiple IDs and separate them with a pipe

Examples

 

GetCoursesPackage & GetCoursesPackageWithCourseDateText

For the GetCoursesPackage & GetCoursesPackageWithCourseDateText feed, use the below URLs and change the text that is bold
GetCoursesPackage

https://configname.accessplanit.com/accessplan/services/WebIntegration.asmx/GetCoursesPackage?venueIDs=OPTIONAL&categoryIDs=OPTIONAL&companyid=MANDATORY&courseIDs=OPTIONAL

GetCoursesPackageWithCourseDateText

https://configname.accessplanit.com/accessplan/services/WebIntegration.asmx/GetCoursesPackageWithCourseDateText?venueIDs=OPTIONAL&categoryIDs=OPTIONAL&companyid=MANDATORY&courseIDs=OPTIONAL

  1. Change the ‘configname' to your accessplanit platform’s name

  2. Change the ‘accessplan’ to ‘accessplansandbox’ if you are using the Sandbox environment instead of the Live environment

  3. Include the IDs of the venues that you would like to filter on

    1. If you do not want to filter on the venue, you must still include the ‘venueIDs=’ text

    2. If you want to filter on multiple venues, you can include multiple IDs and separate them with a pipe

  4. Include the IDs of the categories that you would like to filter on

    1. If you do not want to filter on the category, you must still include the ‘categoryIDs=’ text

    2. If you want to filter on multiple categories, you can include multiple IDs and separate them with a pipe

  5. Include the ID of the training provider after the 'companyID=' text

  6. Include the IDs of the courses that you would like to filter on

    1. If you do not want to filter on the course template ID, you must still include the ‘courseIDs=’ text

    2. If you want to filter on multiple courses templates, you can include multiple IDs and separate them with a pipe

Examples


Implementing Online Booking

Once you have chosen what course information to display on the website the next step in most cases is to choose how to implement the ability for people to book (and pay, if applicable) for courses.

The only piece of data required from within the XML feed to allow online booking is the BookNowURL which is within the GetCoursesPackage and GetCoursesPackageWithCourseDateText feeds.

This URL is typically embedded behind a “Book Now” link, button, or image and this will launch the accessplanit Shopping Basket. The URL will look like this as below. You'll need to change the bolded text to the relevant information for accessplanit:

https://configname.accessplanit.com/accessplan/clientinput/course/coursebooker.aspx?coursedateid=1234

From here, the person booking the course will simply follow the onscreen instructions to complete their booking.

Our recommendation is that the “book now URL” opens in a separate blank browser window.

Please note that you are able to brand your Shopping Basket to match your website look and feel, this is very important to provide your customers with a seamless booking journey.


Example XML Data

Included below are two examples of the actual XML returned from a test environment – one for the GetCourses feed and one for the GetCoursesPackage feed:

Example of GetCourses XML

Filtered to provide details on just one course

<ArrayOfWICourse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="AccessPlanIT.Accessplan.Web.Services"> <WICourse> <CourseID>ADVANCVHiA</CourseID> <Label>Advanced Excel</Label> <Text1>Aims Text Box</Text2> <Text2>Objectives Text Box</Text2> <Text3>Summary Text Box</Text3> <Cost>55</Cost> <CostType>Candidate</CostType> <Type>Class</Type> <Duration>20.00</Duration> <DurationType>2</DurationType> <Currency>GBP</Currency> <CurrencySymbol>£</CurrencySymbol> <PublishDate/> <TrainingPoints/> <ExternalID>IS4009</ExternalID> <DeliveryMethodID>2</DeliveryMethodID> <ImageURL/> <Categories> <WICategory> <CategoryID>164</CategoryID> <Label>CourseCat1</Label> </WICategory> <WICategory> <CategoryID>169</CategoryID> <Label>CourseCat2</Label> </WICategory> </Categories> </WICourse> </ArrayOfWICourse>


Example of GetCoursesPackage XML

Filtered to provide details on just one course

<WICoursesPackage xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="AccessPlanIT.Accessplan.Web.Services"> <Courses> <WICourse> <CourseID>ADVANCVHiA</CourseID> <Label>Advanced Excel</Label> <Text1>Aims Text Box</Text1> <Text2>Objectives Text Box</Text2> <Text3>Summary Text Box</Text3> <Cost>55</Cost> <CostType>Candidate</CostType> <Type>Class</Type> <Duration>20.00</Duration> <DurationType>2</DurationType> <Currency>GBP</Currency> <CurrencySymbol>£</CurrencySymbol> <CategoryIDs>34</CategoryIDs> </WICourse> </Courses> <Dates> <WICourseDate> <CourseDateID>12328</CourseDateID> <CourseID>ADVANCVHiA</CourseID> <StartDate>2014-12-10T09:00:00</StartDate> <EndDate>2014-12-10T15:00:00</EndDate> <VenueIDs> <string>TRAINI04Y6</string> </VenueIDs> <TrainerIDs> <string>clalle3</string> </TrainerIDs> <SpacesAvailable>10</SpacesAvailable> <Status>Available</Status> <BookNowURL> http://configcode.accessplanit.com/accessplan/clientinput/course/coursebooker.aspx?coursedateid=12328 </BookNowURL> <EnquireURL> http://configcode.accessplanit.com/accessplan/clientinput/company/contactcompany.aspx?contacttype=8&coursecalid=12328 </EnquireURL> <Cost>55</Cost> <Private>false</Private> <Currency>GBP</Currency> <CurrencySymbol>£</CurrencySymbol> </WICourseDate> </Dates> <Venues> <WIVenue> <VenueID>TRAINI04Y6</VenueID> <Label>Training Room 1</Label> <Address>12 Spring Garden Street</Address> <Town>Lancaster</Town> <County>Lancashire</County> <Country>United Kingdom</Country> <Postcode>LA1 1RQ</Postcode> <Longitude>-2.800413</Longitude> <Latitude>54.046914</Latitude> </WIVenue> </Venues> <Trainers> <WITrainer> <TrainerID>clalle3</TrainerID> <Forenames>Clayton</Forenames> <Surname>Allen</Surname> </WITrainer> </Trainers> </WICoursesPackage>

Cookies

accessplanit uses cookies to store the content of Users' Shopping Baskets, so that the information is remembered as they navigate around your website and through the basket. 

Once a customer clicks to add a course to their basket, we will store a cookie recording this.

If you do not yet have a cookie policy available on your website, we encourage adding one to inform your customers that cookies will be recorded.