Skip to content

Releases: Panopto/SyllabusPlusScheduler

Syllabus Plus Scheduler Service (1.0.6)

17 Sep 16:15
Compare
Choose a tag to compare
  • Update the .NET framework version to 4.7.2. This fixes an issue where the program did not work with Panopto server which blocks TLS 1.0/1.1.

Syllabus Plus Scheduler Service (1.0.5)

19 Dec 18:16
Compare
Choose a tag to compare

This is a minor update optional update from v1.0.4 with a new optional configuration setting

  • Added a new optional config setting "OrderSyncById" which defaults to false. This retains current behaviour of determining the order in which the service syncs rows based on the lastUpdate column (oldest to newest). Setting to true will use the ID column to determine the order in the order in which the service syncs rows (smallest to highest). This was designed to assist in the scenario when an old schedule is cancelled and a new schedule for the same time and recorder is added but the lastUpdate order is not set correctly in the input data.

Syllabus Plus Scheduler Service (1.0.4)

24 Jul 01:21
Compare
Choose a tag to compare

This is a minor update from v1.0.3 to fix a few issues.

  • Added the ability to update folder on schedule. The old schedule will be deleted and the new one created.
  • Fixed an issue where the session owner was not set or updated.
  • Fixed an issue where username that does not exist in Panopto was not errored out correctly.
  • Fixed an issue where it crashed if presenterUsername was null.
  • Fixed an issue where retry did not work correctly under certain condition.

Syllabus Plus Scheduler Service

31 Mar 18:15
Compare
Choose a tag to compare

Panopto-ScheduleRecordingService

The Panopto Syllabus Plus Scheduler service queries a table of scheduled events (meetings, classes, etc.) in a Syllabus Plus database and then schedules recordings in Panopto using the Panopto SOAP API.

How does it work?

  • The service periodically checks the specified database's "Schedules" table to determine if any new or updated entries have been added. The sync interval is a configurable setting.
  • When the service finds a new scheduled event row that needs to be created in Panopto, it calls the Panopto SOAP API to create the scheduled recording with the specified session name, folder, remote recorder, start time, duration and whether the session is a webcast or just a regular recording.
    • Optionally, you can also specify a secondary remote recorder (for rooms equipped with two remote recorders) and the presenter's username. Note that if you omit the presenter's username, the scheduled recording's owner in Panopto will be the remote recorder service.
  • When the service finds an existing scheduled event row that needs to be updated, it calls the API to update the start time, duration, or session name. Note that currently any changes to change the presenter's username, change the folder, or any other information will not be sync'ed after the recording has been scheduled. For now, please make these changes manually through the Panopto web application.
  • When the service finds an existing scheduled event row that has an updated remote recorder ID, the original session will be deleted and a new session will be scheduled for the updated remote recorder.
  • When the service finds an existing scheduled event row that needs to be cancelled (based on if the cancel schedule flag is set), the service will cancel the scheduled recording in Panopto.

How do I set this up?

  1. Run DB Script\SyllabusPlusDBScript.sql to create the Schedules table in your database.
  2. Populate the Schedules table with data from your Syllabus Plus database.
    • Important: Right now this service does not extract data from the Syllabus Plus tables and insert it into the Schedules table. Currently you will need to have separate code (either in SQL or some other format) to pull data from Syllabus Plus and update the Schedules table on a recurring basis.
  3. Install the service using the installation instructions below. Then the service will start sync'ing data from the Schedules table into Panopto.

Installation instructions

  1. Download ScheduleRecordingServiceInstaller.msi
  2. Open a command prompt with administrator privileges.
  3. Run the installer with the following command:
ScheduleRecordingServiceInstaller.msi PANOPTOSERVERNAME=<Panopto Servername> USERNAME=<Panopto Username> PASSWORD=<Panopto Password> SYNCINTERVAL=<Sync Interval in minutes> DEFAULTFOLDER=<Folder ID to use if the folder specified in the DB row is invalid> DBSERVER=<Location of database server> DBNAME=<Name of database>

Note that the account provided for the username and password must have access to the remote recorders. We recommend that you create a separate Panopto administrator account specifically for this service.

To uninstall the service, go to Programs and Features and uninstall Panopto Syllabus Plus Scheduler Service.

Optional additional configuration

You can change configuration after you have installed the service by directly editing the SyllabusPlusService.exe.config file located in \Programs Files (x86)\Panopto\Syllabus Plus Scheduler Service. After making changes to SyllabusPlusService.exe.config, please restart the service.

...
<appSettings>
    <add key="PanoptoSite" value="<Panopto Servername>"/>
    <add key="PanoptoUserName" value="<Panopto Username>"/>
    <add key="PanoptoPassword" value="<Panopto Password>"/>
    <add key="SyncInterval" value="<Sync Interval in minutes>"/><!--In minutes-->
    <add key="PanoptoDefaultFolder" value="<Panopto Folder ID>"/>
</appSettings>
<connectionStrings>
    <add name="SyllabusPlusDBContext" connectionString="Data Source=<Location of database server>;Initial Catalog=<Name of database>;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
...

Schedules table schema

Column Type Description
ID int Primary key. Generated by the database.
sessionName nvarchar(255) The name of the scheduled recording. Technically optional since a scheduled recording will generate a default session name if none is provided.
FolderID uniqueidentifier GUID of the Panopto folder for the scheduled recording
primaryRemoteRecorderID uniqueidentifier GUID of the remote recorder for the scheduled recording
secondaryRemoteRecorderID uniqueidentifier Optional. GUID of a second remote recorder. Only applicable to a room that is equipped with two remote recorders
startTime datetime Start time for the scheduled recording. This must be in UTC.
duration int Length of the scheduled recording in minutes
presenterUsername nvarchar(255) Optional. The presenter's Panopto username. The service will make this user the owner of the scheduled recording. If omitted, the remote recorder service will become the owner of the scheduled recording.
cancelSchedule bit Nullable bit used to cancel a scheduled recording. If null, no action. If 0, cancel is requested. If 1, cancel succeeded.
webcast bit If 1, webcast. If 0, regular recording.
scheduledSessionID uniqueidentifier Null until the service populates the column with the GUID for the scheduled recording during a sync.
lastUpdate datetime The last time the row was updated in the database. This must be in UTC.
lastPanoptoSync datetime The last time the service sync'ed this row. This must be in UTC.
panoptoSyncSuccess bit Null until the service attempts a sync. If the sync fails for the row, this bit is set to 0. If the sync succeeds, this bit is set to 1.
numberOfAttempts int Counter for the number of times the service attempted to sync this row but failed. Once the max number of attempts is reached, the service will no longer attempt to sync this row. Currently the max number of attempts is set to 3.
errorResponse nvarchar(max) If the service fails to schedule the row (say there is a web request failure or a conflicting recording), the error message is stored in this column.

Troubleshooting

Here are a few helpful troubleshooting tips:

  • When first installing this service, it is useful to manually insert some sample data into the Schedules table. That way you can verify that data is being picked up by the service from the database and sync'ing to Panopto correctly.
  • A few quick things to watch out for with your sample data:
    • Make sure you have a valid remote recorder ID and folder ID.
    • Make sure the start times are specified in UTC.
    • Make sure that the credentials used by the service have Creator access to the appropriate folders and remote recorders.
    • You may also want to use a shorter sync interval (2 mins or 5 mins) when testing the initial service configuration.
  • Here is a SQL snippet that you can use to insert some sample data. Be sure to replace the variables (@folderID, @rRid, @date1/2/3) with actual values.
insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 1',@folderID,@rrID,@date1,60,0,GETUTCDATE(),0);

insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 2',@folderID,@rrID,@date2,60,0,GETUTCDATE(),0);

insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 3',@folderID,@rrID,@date3,60,0,GETUTCDATE(),0);
  • If any errors occur or scheduling conflicts are encountered while scheduling recordings, the Schedules table includes an errorMessage column containing XML with the corresponding error message.
  • In addition to the error response being stored in the Schedules table, the service also logs sync data to the event log. This is useful when troubleshooting the service. You can pull this event log up by opening the Windows Event Viewer app and navigating to Windows Logs > Application.

Syllabus Plus Scheduler Service

21 Oct 23:05
Compare
Choose a tag to compare

Panopto-ScheduleRecordingService

The Panopto Syllabus Plus Scheduler service queries a table of scheduled events (meetings, classes, etc.) in a Syllabus Plus database and then schedules recordings in Panopto using the Panopto SOAP API.

How does it work?

  • The service periodically checks the specified database's "Schedules" table to determine if any new or updated entries have been added. The sync interval is a configurable setting.
  • When the service finds a new scheduled event row that needs to be created in Panopto, it calls the Panopto SOAP API to create the scheduled recording with the specified session name, folder, remote recorder, start time, duration and whether the session is a webcast or just a regular recording.
    • Optionally, you can also specify a secondary remote recorder (for rooms equipped with two remote recorders) and the presenter's username. Note that if you omit the presenter's username, the scheduled recording's owner in Panopto will be the remote recorder service.
  • When the service finds an existing scheduled event row that needs to be updated, it calls the API to update the start time and/or duration. Note that currently any changes to rename the session, change the presenter's username, change the folder, or any other information will not be sync'ed after the recording has been scheduled. For now, please make these changes manually through the Panopto web application.
  • When the service finds an existing scheduled event row that needs to be cancelled (based on if the cancel schedule flag is set), the service will cancel the scheduled recording in Panopto.

How do I set this up?

  1. Run DB Script\SyllabusPlusDBScript.sql to create the Schedules table in your database.
  2. Populate the Schedules table with data from your Syllabus Plus database.
    • Important: Right now this service does not extract data from the Syllabus Plus tables and insert it into the Schedules table. Currently you will need to have separate code (either in SQL or some other format) to pull data from Syllabus Plus and update the Schedules table on a recurring basis.
  3. Install the service using the installation instructions below. Then the service will start sync'ing data from the Schedules table into Panopto.

Installation instructions

  1. Download ScheduleRecordingServiceInstaller.msi
  2. Open a command prompt with administrator privileges.
  3. Run the installer with the following command:
ScheduleRecordingServiceInstaller.msi PANOPTOSERVERNAME=<Panopto Servername> USERNAME=<Panopto Username> PASSWORD=<Panopto Password> SYNCINTERVAL=<Sync Interval in minutes> DBSERVER=<Location of database server> DBNAME=<Name of database>

Note that the account provided for the username and password must have access to the remote recorders. We recommend that you create a separate Panopto administrator account specifically for this service.

To uninstall the service, go to Programs and Features and uninstall Panopto Syllabus Plus Scheduler Service.

Optional additional configuration

You can change configuration after you have installed the service by directly editing the SyllabusPlusService.exe.config file located in \Programs Files (x86)\Panopto\Syllabus Plus Scheduler Service. After making changes to SyllabusPlusService.exe.config, please restart the service.

...
<appSettings>
    <add key="PanoptoSite" value="<Panopto Servername>"/>
    <add key="PanoptoUserName" value="<Panopto Username>"/>
    <add key="PanoptoPassword" value="<Panopto Password>"/>
    <add key="SyncInterval" value="<Sync Interval in minutes>"/><!--In minutes-->
</appSettings>
<connectionStrings>
    <add name="SyllabusPlusDBContext" connectionString="Data Source=<Location of database server>;Initial Catalog=<Name of database>;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
...

Schedules table schema

Column Type Description
ID int Primary key. Generated by the database.
sessionName nvarchar(255) The name of the scheduled recording. Technically optional since a scheduled recording will generate a default session name if none is provided.
FolderID uniqueidentifier GUID of the Panopto folder for the scheduled recording
primaryRemoteRecorderID uniqueidentifier GUID of the remote recorder for the scheduled recording
secondaryRemoteRecorderID uniqueidentifier Optional. GUID of a second remote recorder. Only applicable to a room that is equipped with two remote recorders
startTime datetime Start time for the scheduled recording. This must be in UTC.
duration int Length of the scheduled recording in minutes
presenterUsername nvarchar(255) Optional. The presenter's Panopto username. The service will make this user the owner of the scheduled recording. If omitted, the remote recorder service will become the owner of the scheduled recording.
cancelSchedule bit Nullable bit used to cancel a scheduled recording. If null, no action. If 0, cancel is requested. If 1, cancel succeeded.
webcast bit If 1, webcast. If 0, regular recording.
scheduledSessionID uniqueidentifier Null until the service populates the column with the GUID for the scheduled recording during a sync.
lastUpdate datetime The last time the row was updated in the database. This must be in UTC.
lastPanoptoSync datetime The last time the service sync'ed this row. This must be in UTC.
panoptoSyncSuccess bit Null until the service attempts a sync. If the sync fails for the row, this bit is set to 0. If the sync succeeds, this bit is set to 1.
numberOfAttempts int Counter for the number of times the service attempted to sync this row but failed. Once the max number of attempts is reached, the service will no longer attempt to sync this row. Currently the max number of attempts is set to 3.
errorResponse nvarchar(max) If the service fails to schedule the row (say there is a web request failure or a conflicting recording), the error message is stored in this column.

Troubleshooting

Here are a few helpful troubleshooting tips:

  • When first installing this service, it is useful to manually insert some sample data into the Schedules table. That way you can verify that data is being picked up by the service from the database and sync'ing to Panopto correctly.
  • A few quick things to watch out for with your sample data:
    • Make sure you have a valid remote recorder ID and folder ID.
    • Make sure the start times are specified in UTC.
    • Make sure that the credentials used by the service have Creator access to the appropriate folders and remote recorders.
    • You may also want to use a shorter sync interval (2 mins or 5 mins) when testing the initial service configuration.
  • Here is a SQL snippet that you can use to insert some sample data. Be sure to replace the variables (@folderID, @rRid, @date1/2/3) with actual values.
insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 1',@folderID,@rrID,@date1,60,0,GETUTCDATE(),0);

insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 2',@folderID,@rrID,@date2,60,0,GETUTCDATE(),0);

insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 3',@folderID,@rrID,@date3,60,0,GETUTCDATE(),0);
  • If any errors occur or scheduling conflicts are encountered while scheduling recordings, the Schedules table includes an errorMessage column containing XML with the corresponding error message.
  • In addition to the error response being stored in the Schedules table, the service also logs sync data to the event log. This is useful when troubleshooting the service. You can pull this event log up by opening the Windows Event Viewer app and navigating to Windows Logs > Application.

Syllabus Plus Scheduler Service

08 Aug 03:00
Compare
Choose a tag to compare

Panopto-ScheduleRecordingService

The Panopto Syllabus Plus Scheduler service queries a table of scheduled events (meetings, classes, etc.) in a Syllabus Plus database and then schedules recordings in Panopto using the Panopto SOAP API.

How does it work?

  • The service periodically checks the specified database's "Schedules" table to determine if any new or updated entries have been added. The sync interval is a configurable setting.
  • When the service finds a new scheduled event row that needs to be created in Panopto, it calls the Panopto SOAP API to create the scheduled recording with the specified session name, folder, remote recorder, start time, duration and whether the session is a webcast or just a regular recording.
    • Optionally, you can also specify a secondary remote recorder (for rooms equipped with two remote recorders) and the presenter's username. Note that if you omit the presenter's username, the scheduled recording's owner in Panopto will be the remote recorder service.
  • When the service finds an existing scheduled event row that needs to be updated, it calls the API to update the start time and/or duration. Note that currently any changes to rename the session, change the presenter's username, change the folder, or any other information will not be sync'ed after the recording has been scheduled. For now, please make these changes manually through the Panopto web application.
  • When the service finds an existing scheduled event row that needs to be cancelled (based on if the cancel schedule flag is set), the service will cancel the scheduled recording in Panopto.

How do I set this up?

  1. Run DB Script\SyllabusPlusDBScript.sql to create the Schedules table in your database.
  2. Populate the Schedules table with data from your Syllabus Plus database.
    • Important: Right now this service does not extract data from the Syllabus Plus tables and insert it into the Schedules table. Currently you will need to have separate code (either in SQL or some other format) to pull data from Syllabus Plus and update the Schedules table on a recurring basis.
  3. Install the service using the installation instructions below. Then the service will start sync'ing data from the Schedules table into Panopto.

Installation instructions

  1. Download ScheduleRecordingServiceInstaller.msi
  2. Open a command prompt with administrator privileges.
  3. Run the installer with the following command:
ScheduleRecordingServiceInstaller.msi PANOPTOSERVERNAME=<Panopto Servername> USERNAME=<Panopto Username> PASSWORD=<Panopto Password> SYNCINTERVAL=<Sync Interval in minutes> DBSERVER=<Location of database server> DBNAME=<Name of database>

Note that the account provided for the username and password must have access to the remote recorders. We recommend that you create a separate Panopto administrator account specifically for this service.

To uninstall the service, go to Programs and Features and uninstall Panopto Syllabus Plus Scheduler Service.

Optional additional configuration

You can change configuration after you have installed the service by directly editing the SyllabusPlusService.exe.config file located in \Programs Files (x86)\Panopto\Syllabus Plus Scheduler Service. After making changes to SyllabusPlusService.exe.config, please restart the service.

...
<appSettings>
    <add key="PanoptoSite" value="<Panopto Servername>"/>
    <add key="PanoptoUserName" value="<Panopto Username>"/>
    <add key="PanoptoPassword" value="<Panopto Password>"/>
    <add key="SyncInterval" value="<Sync Interval in minutes>"/><!--In minutes-->
</appSettings>
<connectionStrings>
    <add name="SyllabusPlusDBContext" connectionString="Data Source=<Location of database server>;Initial Catalog=<Name of database>;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
...

Schedules table schema

Column Type Description
ID int Primary key. Generated by the database.
sessionName nvarchar(255) The name of the scheduled recording. Technically optional since a scheduled recording will generate a default session name if none is provided.
FolderID uniqueidentifier GUID of the Panopto folder for the scheduled recording
primaryRemoteRecorderID uniqueidentifier GUID of the remote recorder for the scheduled recording
secondaryRemoteRecorderID uniqueidentifier Optional. GUID of a second remote recorder. Only applicable to a room that is equipped with two remote recorders
startTime datetime Start time for the scheduled recording. This must be in UTC.
duration int Length of the scheduled recording in minutes
presenterUsername nvarchar(255) Optional. The presenter's Panopto username. The service will make this user the owner of the scheduled recording. If omitted, the remote recorder service will become the owner of the scheduled recording.
cancelSchedule bit Nullable bit used to cancel a scheduled recording. If null, no action. If 0, cancel is requested. If 1, cancel succeeded.
webcast bit If 1, webcast. If 0, regular recording.
scheduledSessionID uniqueidentifier Null until the service populates the column with the GUID for the scheduled recording during a sync.
lastUpdate datetime The last time the row was updated in the database. This must be in UTC.
lastPanoptoSync datetime The last time the service sync'ed this row. This must be in UTC.
panoptoSyncSuccess bit Null until the service attempts a sync. If the sync fails for the row, this bit is set to 0. If the sync succeeds, this bit is set to 1.
numberOfAttempts int Counter for the number of times the service attempted to sync this row but failed. Once the max number of attempts is reached, the service will no longer attempt to sync this row. Currently the max number of attempts is set to 3.
errorResponse nvarchar(max) If the service fails to schedule the row (say there is a web request failure or a conflicting recording), the error message is stored in this column.

Troubleshooting

Here are a few helpful troubleshooting tips:

  • When first installing this service, it is useful to manually insert some sample data into the Schedules table. That way you can verify that data is being picked up by the service from the database and sync'ing to Panopto correctly.
  • A few quick things to watch out for with your sample data:
    • Make sure you have a valid remote recorder ID and folder ID.
    • Make sure the start times are specified in UTC.
    • Make sure that the credentials used by the service have Creator access to the appropriate folders and remote recorders.
    • You may also want to use a shorter sync interval (2 mins or 5 mins) when testing the initial service configuration.
  • Here is a SQL snippet that you can use to insert some sample data. Be sure to replace the variables (@folderID, @rRid, @date1/2/3) with actual values.
insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 1',@folderID,@rrID,@date1,60,0,GETUTCDATE(),0);

insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 2',@folderID,@rrID,@date2,60,0,GETUTCDATE(),0);

insert into Schedules (sessionName,folderID,primaryRemoteRecorderID,startTime,duration,webcast,lastUpdate,numberOfAttempts) values ('Test session 3',@folderID,@rrID,@date3,60,0,GETUTCDATE(),0);
  • If any errors occur or scheduling conflicts are encountered while scheduling recordings, the Schedules table includes an errorMessage column containing XML with the corresponding error message.
  • In addition to the error response being stored in the Schedules table, the service also logs sync data to the event log. This is useful when troubleshooting the service. You can pull this event log up by opening the Windows Event Viewer app and navigating to Windows Logs > Application.

SyllabusPlus Scheduler Service v1.0.0

27 May 17:43
Compare
Choose a tag to compare

Panopto-ScheduleRecordingService

Panopto Schedule Recording Service

This service is intended to run on a server within a customer's environment with access to the SyllabusPlus database. It uses the Panopto SOAP API to schedule recordings on the Panopto server.

This service will periodically (based on the interval set in the config file) check the SyllabusPlus DB's "Schedules" table to determine if any new or updated entries have been added.
Note: Once a recording is scheduled in Panopto, only changes to the start and duration of the session will take place.
Any changes to renaming the session, updating the presenter's username, or any other information will need to be manually changed through the Panopto web UI.

If the lastUpdate timestamp exceeds lastPanoptoSync timestamp or PanoptoSyncSuccess is null, the service will attempt to schedule or modify a remote recording based on the data provided in that row.

If any errors occur when scheduling a recording, the schedule table includes an errorMessage column containing an XML with the specific error message. This includes cases where there is a conflicting recording already scheduled.

Using the service: There are two options for installing the service. Option 1 is strongly recommended.

Option 1:
    Open command prompt with admin priviledges

    Navigate to ScheduleRecordingServiceInstaller/Bin/Release and run the following command:

    ScheduleRecordingServiceInstaller.msi PANOPTOSERVERNAME=<Panopto Servername> USERNAME=<Panopto Username> PASSWORD=<Panopto Password> SYNCINTERVAL=<Sync Interval in minutes> DBSERVER=<Location of DB server> DBNAME=<Name of DB>

    The service should run and install automatically to ProgramsFolder\Panopto

    To uninstall the service, go to Programs and Features to uninstall the service

    Most options explained above can be found and manually modified in the ScheduleRecordingService.exe.config file.


Option 2:
    Before starting the service, be sure to modify the *.config as necessary:
    - DB Connection String
    - Panopto Username
    - Panopto Password
    - Panopto Servername
    - Sync Interval in minutes

    Use the Developer Command Prompt in Visual Studio Tools to install the service's .exe file; 
        navigate to the folder containing the .exe file for the service and use the command: installutil.exe ScheduleRecordingService.exe

    Run services.msc to view the full list of service. Find "Panopto Schedule Recording Service" and start the service if not starated automatically

    The service can be uninstalled using the command: installutil.exe /u ScheduleRecordingService.exe

SyllabusPlus Scheduler Service

26 May 20:50
Compare
Choose a tag to compare
Pre-release
Task 38545

Updated MSI Installer to take user input