Microsoft Identity Integration Server 2003 Developer Reference

Example: Retrying a Management Agent Run When a Network Connection Drops

You can use this example with call-based management agents such as the Active Directory management agent. The script can be scheduled through the Task Scheduler and provides the logic to restart the management agent in case of a failure.

The following Visual Basic Scripting Edition (VBScript) example shows how to restart a management agent if the connection times out or other network-related issues cause the management agent to stop.

The example makes four attempts to run a management agent. If the script cannot run the management agent after four attempts, the script displays an error message and closes. If the script successfully runs a management agent during one of the attempts, the script displays the status of the management agent run.

Option Explicit

On Error Resume Next

Const PktPrivacy = 6 ' Authentication Level

Dim Service		' Connection
Dim ManagementAgent  ' Management agent
Dim RetVal		 ' String for the Return Value from the execute call
Dim Retry			' Retry count
Dim RetryMax		 ' Maximum retry attempts
Dim RetMsg		 ' Return message string

Set Service = GetObject("winmgmts:{authenticationLevel=PktPrivacy}!root\MicrosoftIdentityIntegrationServer")
Set ManagementAgent = Service.Get("MIIS_ManagementAgent.Name='ADMA Import'")

Retry = 0
RetryMax = 3

Do

	RetVal = ManagementAgent.Execute("Full Import (Stage Only)")
	Retry=Retry + 1

	If RetVal = "no-start-connection" or RetVal = "stopped-connectivity" then
		Wscript.Echo "Unable to contact Connected Directory. Retrying connection in 30 seconds..."
		Wscript.Sleep (30000)
		WScript.Echo "Wake Up"

	End if

Loop until RetVal <> "no-start-connection" or RetVal <> "stopped-connectivity" or Retry = RetryMax
 
Select Case RetVal

   Case "success"
	RetMsg = "Success!!!"

   Case "completed-errors"
	RetMsg =  "Errors"
   
   Case "no-start-connection"
	RetMsg = "MA was unable to contact remote CD after 3 attempts." & vbcrlf

	RetMsg = RetMsg & "Please check remote server and network conditions then" & vbcrlf

	RetMsg = RetMsg & "Attempt to execute the MA again." 

   Case "stopped-connectivity"
	RetMsg = "Network connectivity was lost during the MA run." & vbcrlf

	RetMsg = RetMsg & "Ensure that you have network connectivity before running the MA again."  

   Case Else
		 'Put other code here to handle errors or other important cases.
	RetMsg = "The error " & RetVal & " occurred."

End Select

WScript.echo RetMsg

Sub ErrorHandler (ErrorMessage)
  WScript.Echo ErrorMessage
  WScript.Quit(1)
End Sub

See Also

Enabling Security in Scripts