Quicklinks
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:
This Case Study concentrates on a sending out small notification messages to students and teachers, via SMS and via e-mail.
A working demo of this case study is included with the ActiveXperts SMS Messaging Server installation.
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:
The current notification system must be replaced by a new, better system. Goals of the new system:
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:
Figure 1. shows a screenshot of the application.
![]() |
| 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.
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:
The software departement of the College wrote the application in Visual Basic 6. The application consists of one modal dialog with the following fields:
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