You are here:

ActiveXperts.com > SMS Messaging Server > Case Studies > St. Joseph College

ActiveXperts SMS Messaging ServerSend, receive and automate SMS messages

Quicklinks


Case Study - SMS student notification system (St. Joseph College)

1. Background

St. Joseph College is an educational secundary school for boys and girls. The age of the students range from 12-19. St. Joseph College has 1500 students, divided over 3 different locations.

All students, teachers, computers etc. are part of one single Active Directory domain: STJOSEPH.DOM. The Active Directory is not accessible from the Internet.

Each student has a Mobile Number defined in Active Directory, as well as an external e-mail address.

St. Joseph College has a system to notify student via e-mail for special things, for instance:

  • When a teacher has become sick and lessons are cancelled;
  • When a lesson is set to a different time;
  • When a lesson is teached on a different location;
  • Special event information.

This Case Study concentrates on a sending out small notification messages to students and teachers, via SMS and via e-mail.

St.Joseph A working demo of this case study is included with the ActiveXperts SMS Messaging Server installation.

2. Problem Statement

St. Joseph College has an old-fashioned way of notifying students via e-mail. It is done by an MS Excel macro. E-mail addresses all listed in an Excel document. There's a macro that actually sends out the e-mail notifications. E-mail addresses are manually synchronized with Active Directory. E-mail is the only way to notify the students.

This manual system has some drawbacks:

  • It is not possible to get the students immediate attention. SMS would make this possible;
  • It is not possible to schedule notification messages;
  • There's no logging, so it is not possible to see whether a message was delivered successfully to a student or not;
  • Manual synchronization with Active Directory often results in missing or duplicate e-mail entries in the Excel worksheet;

3. Goals of the new System

The current notification system must be replaced by a new, better system. Goals of the new system:

  • SMS must become the primary notification message type. It must still be possible to notify students with an e-mail message;
  • SMS and e-mail addresses must be retrieved from Active Directory;
  • No more Excel macro's for the notification system;
  • It must be possible to schedule message broadcast hours and days in advance;
  • It may not take more than 5 minutes to send out SMS messages to a hundred students;
  • All notifications must be logged

4. ActiveXperts SMS Messaging Server Solution

The software departement of the College has written an application to replace the old notification system. The application is written in Visual Basic 6. Its task is to retrieve student contact information and store messages in the ActiveXperts SMS Messaging Server database. ActiveXperts SMS Messaging Server is responsible for the delivery of the messages.

Their VB6 based application uses the following components and techniques:

  • It uses LDAP to query the Active Directory users. Actually, Organizational Units are selected through LDAP, and students are fetched one by one from the Organizational Unit object;
  • The Active Directory User properties Mobile and Mail are used to determine the students SMS and e-mail information;
  • New outgoing SMS and e-mail messages are stored in the Message Database of ActiveXperts SMS Messaging Server. ActiveXperts SMS Messaging Server is responsible for delivering these messages to the students;
  • The program uses the ActiveXperts AxMmServer.Messages object to access the Message Database of the SMS Messaging Server;

Figure 1. shows a screenshot of the application.

St.Joseph
Figure 1: St. Joseph College Student Notification application

The ActiveXperts SMS Messaging Server service will notice any new messages in the Message Database and will send them out immediately.

ActiveXperts SMS Messaging Server

The St. Joseph College runs ActiveXperts SMS Messaging Server on a Windows 2003 Server. This server is member of the STJOSEPH.DOM domain.

One of the requirements is throughput: it may not take more than 5 minutes to send out an SMS message to hundred students. This throughput cannot be achieved with a GSM Modem (a GSM can send out only 1 message per 5 seconds maximum). Therefore, St. Joseph College subscribed with an SMPP provider (Clickatell). It's throughput is around 10 messages/second.

ActiveXperts SMS Messaging Server is configured to use SMPP service of Clickatell. This was done in the following way:

  • In the 'Configuration', all channels were disabled;
  • A new SMPP channel was created, and the appropriate Clickatell account information was entered.

VB6 source code

The software departement of the College wrote the application in Visual Basic 6. The application consists of one modal dialog with the following fields:

  • LDAP String text field - This indicates the LDAP path to the OU where the students (or class of students) are organized in Active Directory;
  • Count Students and Show Students buttons - Use these buttons to test the LDAP String;
  • Message Body and Message Subject text fields - Actual body of the SMS- or e-mail message. The 'Message Subject' is only used for e-mail messages;
  • SMS and E-mail check boxes - Indicate what type of notification to send: SMS, e-mail or both;
  • Schedule Time text field - Indicates when the ActiveXperts SMS Messaging Server should deliver the messages;
  • Submit button - Send out the SMS/e-mail message(s).

Complete source code of the St. Joseph College Student Notification program

Option Explicit

Dim g_Constants, g_MessageDB

Private Sub BTN_COUNTSTUDENTS_Click()
On Error Resume Next
    Dim objOU, numCount, objStudent
    MousePointer = vbHourglass
    Set objOU = GetObject(TXT_LDAPSTRING)
    If (objOU Is Nothing) Then
        MsgBox "Unable to access the OU on the specified Domain Controller.", vbCritical, "St. Joseph"
    Else
        numCount = 0
        For Each objStudent In objOU
            numCount = numCount + 1
        Next
        MsgBox "Number of students in selected OU: " & numCount, vbOKOnly, "St. Joseph"
        Set objOU = Nothing
    End If
    MousePointer = vbDefault
End Sub


Private Sub BTN_SHOWSTUDENTS_Click()
On Error Resume Next
    Dim objOU, strStudents, objStudent
    MousePointer = vbHourglass
    Set objOU = GetObject(TXT_LDAPSTRING)
    If (objOU Is Nothing) Then
        MsgBox "Unable to access the OU on the specified Domain Controller.", vbCritical, "St. Joseph"
    Else
        strStudents = ""
        For Each objStudent In objOU
            strStudents = strStudents & objStudent.Name & " (" & _
            "Mobile:" & objStudent.Mobile & "; " & _
            "E-mail:" & objStudent.Mail & ")" & vbCrLf
        Next
        MsgBox "Students in selected OU: " & vbCrLf & _
		       "============================" & vbCrLf & vbCrLf & _
		       strStudents, vbOKOnly, "St. Joseph"
        Set objOU = Nothing
    End If
    MousePointer = vbDefault
End Sub


Private Sub BTN_SUBMIT_Click()
On Error Resume Next
    Dim objOU, objStudent, objMessageOut, numSmsMessages, numEmailMessages
    
    numSmsMessages = 0
    numEmailMessages = 0
    
    MousePointer = vbHourglass
    
    Set objOU = GetObject(TXT_LDAPSTRING)
    MousePointer = vbDefault
    If (objOU Is Nothing) Then
        MsgBox "Unable to access the OU on the specified Domain Controller.", vbCritical, "St. Joseph"
    Else
        For Each objStudent In objOU
            If (RB_SENDSMS.Value <> 0 And objStudent.Mobile <> "") Then
                Set objMessageOut = g_MessageDB.Create
                If (g_MessageDB.LastError = 0) Then
                  objMessageOut.Direction = g_Constants.MESSAGEDIRECTION_OUT
                  objMessageOut.Type = g_Constants.MESSAGETYPE_SMS
                  objMessageOut.Status = g_Constants.MESSAGESTATUS_OUT_SCHEDULED
                  objMessageOut.To = objStudent.Mobile
                  objMessageOut.ChannelID = 0 ' First available SMS channel
                  objMessageOut.Body = TXT_MESSAGEBODY
                  objMessageOut.ScheduleTime = TXT_SCHEDULE
                  objMessageOut.Save
                End If
                numSmsMessages = numSmsMessages + 1
            End If
            
            If (RB_SENDEMAIL.Value <> 0 And objStudent.Mail <> "") Then
                Set objMessageOut = g_MessageDB.Create
                If (g_MessageDB.LastError = 0) Then
                  objMessageOut.Direction = g_Constants.MESSAGEDIRECTION_OUT
                  objMessageOut.Type = g_Constants.MESSAGETYPE_EMAIL
                  objMessageOut.Status = g_Constants.MESSAGESTATUS_OUT_SCHEDULED
                  objMessageOut.To = objStudent.Mail
                  objMessageOut.ChannelID = 0 ' First available SMS channel
                  objMessageOut.Body = TXT_MESSAGEBODY
                  objMessageOut.ScheduleTime = TXT_SCHEDULE
                  objMessageOut.Save
                End If
                numEmailMessages = numEmailMessages + 1
            End If
        Next
        Set objOU = Nothing
    End If
    MousePointer = vbDefault
    MsgBox "#SMS Messages created: " & numSmsMessages & vbCrLf & _
    "#E-mail messages created: " & numEmailMessages, vbInformation, "St. Joseph"
End Sub


Private Sub Form_Load()
    TXT_LDAPSTRING = "LDAP://dell04/ou=students,dc=activexperts,dc=dom"
    
    Set g_Constants = CreateObject("AxMmServer.Constants")
    Set g_MessageDB = CreateObject("AxMmServer.Messages")
    
    RB_SENDSMS.Value = 1
    RB_SENDEMAIL.Value = 0
    
    TXT_MESSAGEBODY = "All lessons from teacher Mr. Jones are cancelled on " & Date
    TXT_MESSAGESUBJECT = "Notification from St. Joseph College"
    TXT_MESSAGESUBJECT.Enabled = False
    TXT_SCHEDULE = "+0d0h5m"  
End Sub


Private Sub RB_SENDEMAIL_Click()
    If (RB_SENDEMAIL.Value <> 0) Then
        TXT_MESSAGESUBJECT.Enabled = True
    Else
        TXT_MESSAGESUBJECT.Enabled = False
    End If
End Sub