Overview

MOVEit Transfer API is a COM component which allows Windows developers to securely exchange files, secure messages and configure the users, folders and messaging settings on a MOVEit Transfer server. MOVEit Transfer API is typically used in Visual Basic, Microsoft C++, .NET, Active Server Pages or VBScript applications.

MOVEit Transfer API also comes with a scriptable command-line client (source code included) called MIShell which consumes standard FTP commands (e.g., "get", "put") to make it easy to move from FTP clients to a MOVEit Transfer API solution.

Requirements

  • A standard PC. A Pentium-133 or faster processor, and 64 MB or more of memory are recommended.
  • Microsoft Windows 2008 R2 / 2012 / 2012 R2 / 7 / 8 / 8.1 / 10.
  • Internet Explorer 10.0 or later. (MOVEit Transfer API does not use Internet Explorer directly, but it requires some of the libraries installed by Internet Explorer.)
  • A MOVEit Transfer license key which allows API access.

64-bit Windows Considerations

When installing MOVEit Transfer API on 64-bit Windows systems, it's important to remember that the MOVEit API DLL is a 32-bit library. Consequently, the application invoking the MOVEit Transfer API must also be 32-bit, otherwise it will fail to create the API object. On 64-bit Windows systems, a 32-bit version of "cmd.exe" is provided in the "SysWoW64" system folder, as well as other 32-bit system utilities.

Firewall and Proxy Considerations

MOVEit Transfer API uses HTTPS to communicate and exchange files with MOVEit Transfer. HTTPS normally uses TCP port 443.

MOVEit Transfer API can support proxy servers that:

  • Require no authentication
  • Require basic authentication
  • Require NTLM "integrated" authentication

In all three cases MOVEit Transfer API reads its HTTP/HTTPS proxy hostname/IP address and port number from Internet Explorer's proxy configuration. unless MOVEit Transfer API's "ProxyHost" and "ProxyPort" properties are used to override these settings. If none of these items are configured, no proxy server will be used. Additional credentials for the proxy server are either automatically provided from the currently authenticated Windows user (in the case of NTML "integrated" authentication) or are configured as properties of the MOVEit Transfer API class (in the case of basic authentication).


Key Features

MOVEit Transfer API can be used to programmatically transfer files with MOVEit Transfer over a single TCP port which many businesses already have open to the Internet (HTTPS/443). It also provides a way to programmatically add, remove and maintain users and folders which other MOVEit interfaces do not. (MOVEit Transfer's FTP interfaces, specifically as FTP over SSL and FTP over SSH, do not provide user and folder maintenance functions. MOVEit Transfer's online web interface does provide these functions but is not easily scripted.)

Common Applications

Custom Web Applications - MOVEit Transfer API is often used in a custom ASP or ASPNET powered web application to perform tasks such as:

  • Create new MOVEit Transfer users
  • Create new folders
  • Upload files into folders
  • Download files from folders
An example of this type of application is provided with this documentation; this Active Server Page (ASP) example creates a new folder with a name based on the current time and date and uploads a file to the new folder.

Custom Help Desk Applications - MOVEit Transfer API may be used in a custom VB or VB.NET powered desktop application to perform tasks such as:

  • Create/delete MOVEit Transfer users
  • Reset passwords
  • Unlock user accounts
  • Set user folder quotas
An example of this type of application is provided with this documentation; this VB.NET example populates the MOVEit Transfer userbase from an existing ODBC database.

Industry-Specific Applications - MOVEit Transfer API may be integrated into an existing VB, VB.NET or C++ powered desktop application designed for a specific industry (e.g. medical transcription) to use MOVEit Transfer as a file storage, authentication and auditing server. In this case, users are often created manually and the desktop application typically only performs file transfer tasks such as:

  • Upload files
  • Download and delete files

Custom Administrative Applications - Administrators often use MOVEit Transfer API in a VBScript file to perform batch maintenance tasks against MOVEit Transfer such as renaming several folders at once, deleting all the users associated with a particular customer or pulling all files with a certain extension off the server.

Custom Billing Applications - Administrators can use MOVEit Transfer API in a VBScript file or server-based application to build custom usage reports from MOVEit Transfer.


MOVEit Transfer API Installation

Installation Overview

MOVEit Transfer API can be installed on any system that needs to to securely exchange files, secure messages and configure the users, folders and messaging settings on a MOVEit Transfer server. The setup program for MOVEit Transfer API installs both a command-line client and a programmatic interface.

Installation Steps

The setup program for MOVEIt DMZ API is a straight-forward process. Following the welcome, there are two prompts. First is the prompt for the installation path.

MOVEit Transfer API Installation

Next is the prompt for the start menu folder.

MOVEit Transfer API Installation

Silent Installation

An unattended or "silent mode" option to the install program, along with an input parameter file, allows you to install, upgrade, repair or uninstall MOVEit Transfer API without user interaction.

Two files are required to be pre-loaded on the system in order to perform an unattended installation. The files are:

  • DMZAPI_Win_xxxx.exe - The self-extracting MOVEit Transfer API Installation program.
  • Setup.iss - The "Silent Mode" Install control file.

Setup.iss

The Setup.iss file is used by the InstallShield installation program to simulate the responses by a user to the install dialogs in silent mode. You can use this for the Setup.iss file:

[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-DlgOrder]
Dlg0={7522674B-1C7A-487D-9E54-981703CB5BBB}-SdWelcome-0
Count=6
Dlg1={7522674B-1C7A-487D-9E54-981703CB5BBB}-SdAskDestPath-0
Dlg2={7522674B-1C7A-487D-9E54-981703CB5BBB}-SdSelectFolder-0
Dlg3={7522674B-1C7A-487D-9E54-981703CB5BBB}-SdFinish-0
Dlg4={7522674B-1C7A-487D-9E54-981703CB5BBB}-MessageBox-0
Dlg5={7522674B-1C7A-487D-9E54-981703CB5BBB}-SdFinishReboot-0
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-SdWelcome-0]
Result=1
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-SdAskDestPath-0]
szDir=C:\Program Files\MOVEit
Result=1
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-SdSelectFolder-0]
szFolder=MOVEit Transfer
Result=1
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-MessageBox-0]
Result=6
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-SdFinishReboot-0]
Result=1
[Application]
Name=MOVEit Transfer API
Version=5.5.0.0
Company=Ipswitch, Inc.
Lang=0009
[{7522674B-1C7A-487D-9E54-981703CB5BBB}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0

If you would like to choose a destination path or startup foldoer other than the default, you can modify them in the ISS file.

To launch the unattended install, run the installation package EXE from a command prompt or the Start | Run dialog. Substitute the path for the setup.iss file with the location in which you stored that file.

DMZAPI_Win_xxxx.exe /s /f1"c:\setup.iss" /f2"c:\setup.log"

Or:

start /wait DMZAPI_Win_xxxx.exe /s /f1"c:\setup.iss" /f2"c:\setup.log"

The "Start /wait" form of the installation will wait until the MOVEit Transfer API installation is complete before returning to a command prompt. The installation package will run and create the Setup.log file which contains the result code returned by the installation process:

[InstallShield Silent]
Version=v7.00
File=Log File
[ResponseResult]
ResultCode=0
[Application]
Name=MOVEit Transfer API
Version=5.5.0.0
Company=Ipswitch, Inc.
Lang=0009

For a successful installation, the ResultCode will be 0.

MOVEit Transfer API Unattended Upgrade or Repair

The MOVEit Transfer API unattended install will automatically perform an Upgrade or a Repair if it finds an existing MOVEit Transfer API already in place. An Upgrade install and a Repair install work the same.

MOVEit Transfer API Unattended Uninstall

In order to perform an unattended uninstall, run the command this way:

DMZAPI_Win_xxxx /uninst /s /f1"c:\setup.iss" /f2"c:\setup.log"

Like the unattended install, the unattended uninstall will leave a LOG file on disk when it completes.


Code Snippets - Download Files

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, LocalPath, FileMask, oKey, oValue, LastErr as String

Download Matching Files in a Named Folder

This example will sign onto a MOVEit Transfer server, look for files with a certain name in a particular folder and sign off.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LocalPath, FileMask, LastErr

' Set local and MOVEit Transfer paths
MIPath = "Distribution/Software"
LocalPath = "c:\downloads\sware"
FileMask = "*.exe"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiuser", "pass123")then

  ' Look for the files and download them
  set oDict = oMI.FolderListFilesWithMask(MIPath, FileMask)
  if NOT oDict is Nothing then
    for each oDKey in oDict
      if NOT oMI.FileDownload(oDict(oDKey).Path, LocalPath) then
        LastErr = "Could not download '" & oDict(oDKey).Path & "' to '" & LocalPath
        LastErr = LastErr & "', error: " & oMI.StatusCode & ": " & oMI.StatusDescription
      end if
    next
  else
    LastErr = "Could not locate files in '" & MIPath & "'"
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr

Download Matching Files in ANY Available Folder

This example will sign onto a MOVEit Transfer server, look for files with a certain name in ALL folders available to this user and sign off.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LocalPath, FileMask, LastErr

' Set local path and filemask
LocalPath = "c:\downloads\sware"
FileMask = "*.exe"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiuser", "pass123") then

  ' Look for the files and download them
  set oDict = oMI.FolderFindFiles(FileMask)
  if NOT oDict is Nothing then
    for each oDKey in oDict
      if NOT oMI.FileDownload(oDict(oDKey).Path, LocalPath) then
        LastErr = "Could not download '" & oDict(oDKey).Path & "' to '" & LocalPath
        LastErr = LastErr & "', error: " & oMI.StatusCode & ": " & oMI.StatusDescription
      end if
    next
  else
    LastErr = "Could not locate files in '" & MIPath & "'"
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr

Download and Delete All Files in this User's Home Folder

This example will sign onto a MOVEit Transfer server, download and delete all files in this user's home folder and sign off.

' Declare work variables
Dim oMI, oDict, oDKey
Dim LocalPath, LastErr

' Set local path
LocalPath = "c:\downloads\sware"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiuser", "pass123") then

  ' Look for the files, download them and delete them (if download successful)
  set oDict = oMI.FolderListFiles(oMI.HomeFolder)
  if NOT oDict is Nothing then
    for each oDKey in oDict
      if oMI.FileDownload(oDict(oDKey).Path, LocalPath) then
        if NOT oMI.FileDelete(oDict(oDKey).Path)then
          LastErr = "Could not delete '" & oDict(oDKey).Path & "' "
          LastErr = LastErr & ", error: " & oMI.StatusCode & ": " & oMI.StatusDescription
        end if
      else
        LastErr = "Could not download '" & oDict(oDKey).Path & "' to '" & LocalPath
        LastErr = LastErr & "', error: " & oMI.StatusCode & ": " & oMI.StatusDescription
      end if
    next
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr


Code Snippets - Upload Files

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, LocalPath, FileMask, oKey, oValue, LastErr as String

Upload Files into a Specific Folder

This example will sign onto a MOVEit Transfer server and upload files into a specific folder.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LocalPath, FileMask, LastErr

' Set local and MOVEit Transfer paths
MIPath = "Distribution/Support/problem.log"
LocalPath = "c:\logs\problem_121205.log"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiuser", "pass123")then

  ' Upload a file
  if NOT oMI.FileUploadAs(LocalPath, MIPath)>0 then
    LastErr = "Could not upload '" & LocalPath & "' to '" & MIPath
    LastErr = LastErr & "', error: " & oMI.StatusCode & ": " & oMI.StatusDescription
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr

Upload Files in this User's Home Folder

This example will sign onto a MOVEit Transfer server and upload files into this user's home folder.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LocalPath, FileMask, LastErr

' Set local and MOVEit Transfer paths
LocalPath = "c:\logs\problem_121205.log"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiuser", "pass123")then

  MIPath = oMI.HomeFolder & "/problem.log"

  ' Upload a file
  if NOT oMI.FileUploadAs(LocalPath, MIPath)>0 then
    LastErr = "Could not upload '" & LocalPath & "' to '" & MIPath
    LastErr = LastErr & "', error: " & oMI.StatusCode & ": " & oMI.StatusDescription
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr


Code Snippets - Change Passwords

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, NewPass, oKey, oValue, LastErr as String

Change Own Password

This example will sign onto a MOVEit Transfer server as an end user and change that end user's password.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LastErr, NewPass

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiuser", "pass123")then

  ' Ask MOVEit Transfer to generate a strong new password
  ' (or, you could have prompted the user for this password)
  NewPass = oMI.UserMakeRandomPassword(oMI.Username)
  ' Now change the password
  if NOT oMI.UserChangePassword(oMI.Username, NewPass) then
    LastErr = "Could not change own password, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr

Change Someone Else's Password

This example will sign onto a MOVEit Transfer server as an Admin and change an end user's password. (GroupAdmins may also change the password of users in their groups.)

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LastErr, NewPass

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiadmin", "pass123")then

  ' Ask MOVEit Transfer to generate a strong new password
  ' (or, you could have prompted the user for this password)
  NewPass = oMI.UserMakeRandomPassword("apiuser")
  ' Now change the password
  if NOT oMI.UserChangePassword("apiuser", NewPass) then
    LastErr = "Could not change another's password, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr


Code Snippets - Add a User

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, LocalPath, FileMask, oKey, oValue, LastErr as String

Add a New User

This example will sign onto a MOVEit Transfer server, add a brand new user, configure that user's home folder, upload a "welcome" file to that home folder and sign off.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LocalPath, FileMask, LastErr

' Set local path
LocalPath = "c:\newusers\welcomemessage.txt"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiadmin", "pass123")then

  ' Create a new user
  if oMI.UserAdd("newusername", "pswrd123",  _
      "New Name", "newmail@yahoo.com", _
      10, "Added by MOVEit Transfer API") then

    ' Configure new user's quota to 20 MB
    oMI.UserChangeSetting "newusername", "quota", "20971520" ' 20 MB

    ' Configure new user's home folder:
    '  - Turn on immediate delivery receipts
    '  - Turn on automatic cleanups every 45 days
    '  - Keep user from uploading *.exe and *.mp3 files
    MIPath = oMI.FolderGetHome("newusername").Path
    oMI.FolderChangeSetting MIPath, "notedelrcptype", "16"
    oMI.FolderChangeSetting MIPath, "cleantype", "2"
    oMI.FolderChangeSetting MIPath, "cleantime", "45"
    oMI.FolderChangeSetting MIPath, "filemaskrule", "0" ' Allow all except masks
    oMI.FolderChangeSetting MIPath, "filemasks","*.exe,*.mp3"

    ' Upload welcome message to user's home folder
    if NOT oMI.FileUploadAs(LocalPath, MIPath & "/readme.txt")>0 then
      LastErr = "Could not upload welcome file, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
    end if
  else
    LastErr = "Could not create user, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr

Variation on Above Example

Replace the "Upload" section in the code above with the following code to personalize the welcome message for the user.

' Read in the message file
Dim fso, tsin, MsgText
Set fso = CreateObject("Scripting.FileSystemObject")
Set tsin = fso.OpenTextFile(LocalPath,1)
MsgText = tsin.ReadAll
tsin.Close

' Customize the message by replacing "variables" in the original message
MsgText = Replace("[username]", "newusername")
MsgText = Replace("[todaydate]", Now())

' Upload customized welcome message to user's home folder (with a note)
oMI.FileUploadFromBuffer MsgText, MIPath & "/readme.txt", "Welcome Message"


Code Snippets - Add a Group

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, LocalPath, FileMask, oKey, oValue, LastErr as String

Add a Group

This example will sign onto a MOVEit Transfer server, create a group and add a user to it.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LocalPath, FileMask, LastErr

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "moveit.ipswitch.com"
if oMI.SignOn("apiadmin", "pass123")then

  ' Create a group
  if oMI.UserGroupAdd("NewGroup") then
    ' Set member quota to 3 MB
    oMI.UserGroupChangeSetting "NewGroup", "maxmemberquota", CStr(1024*1024*5)
    ' Add a user to the group
    if NOT oMI.UserGroupJoin("apiuser","NewGroup") then
      LastErr = "Could not add user to group, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
    end if
  else
    LastErr = "Could not create new group, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if
' At this point, print, echo or otherwise display the value of LastErr


Code Snippets - Work With Folders

The following hint(s) are provided to help programmers use MOVEit Transfer API work with MOVEit Transfer folders.

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, LocalPath, FileMask, oKey, oValue, LastErr as String

List Permissions on a Specific Folder

The following example shows how to list which users and groups have been explicitly granted permission to a folder.

' Declare work variables
Dim oMI, oDict, oDKey
Dim MIPath, LastErr

' Set MOVEit Transfer path
MIPath = "Home/Test1"

' Sign on
set oMI = CreateObject("MOVEitAPI.clientObj")
oMI.Host = "MyDMZ"
oMI.IgnoreCertProbs = True
if oMI.SignOn("AdminUser", "Password")then

  ' Look for the folder perms and list them on the screen
  set oDict = oMI.FolderAccessList(MIPath)
  if NOT oDict is Nothing then
    for each oDKey in oDict
      WScript.Echo ("User/Group: " & oDKey)
      WScript.Echo ("Perms: " & oDict(oDKey))
    next
  else
    LastErr = "Could not lookup folder perms for '" & MIPath & "'"
  end if

  ' Sign off
  oMI.SignOff
else
  LastErr = "Could not sign on, error: " & oMI.StatusCode & ": " & oMI.StatusDescription
end if


Code Snippets - Ad Hoc Transfer

The following hints are provided to help programmers use MOVEit Transfer API with Ad Hoc Transfer.

The following example(s) are coded using VBScript or Active Server Pages. Compiled environments such as Visual Basic and VB.NET may require you to strongly type your variables. If this is the case, please add the following declarations in place of the VBScript declarations used in each example.

' Declare STRONGLY TYPED work variables
Dim oMI as MOVEitAPI.clientObj
Dim oDict as Scripting.Dictionary
Dim MIPath, LocalPath, FileMask, oKey, oValue, LastErr as String

Send Package to Multiple Recipients

The following code snippet shows how to send a package to four separate recipients, some of which may not exist in the system. Supplying a value of "True" to second argument of MessageSend() allows MOVEit Transfer to automatically handle unregistered recipients, as permitted and defined by the organization's settings. Any passwords that are required will be auto-generated by MOVEit Transfer according to the organization's password strength requirements.

set oAPI = new MOVEitAPI.clientobj()

oAPI.Host = "moveit.ipswitch.com"
oAPI.SignOn("fred","a1s2d3")

set oMsg = new MOVEitAPI.MessageInfo()

oMsg.Subject = "Hello world!"
oMsg.Body = "This is the body!"
oMsg.AttachmentAdd("c:\frog.txt")
oMsg.AttachmentAddBuffer(MyBuffer)

oMsg.RecipientAddUser("fred@ipswitch.com","to")
oMsg.RecipientAddGroup("ipswitch support", "to")
oMsg.RecipientAddUser("joe@ipswitch.com", "cc")
oMsg.RecipientAddUser("mike@ipswitch.com", "bcc")

oAPI.MessageSend(oMsg)

Check Packages and Download Any Attachments

The following code snippet shows a single user signing on and checking their packages. The "OutputMessage" function is not explicitly defined here, but you can probably guess what it does.

set oAPI = new MOVEitAPI.clientobj()
oAPI.Host = "moveit.ipswitch.com"
oAPI.SignOn("fred","a1s2d3")

set oDict = oAPI.MessageBoxListMessagesNew()
if NOT oDict = Nothing then
  for each ID in ODict
    set oMsg = oAPI.MessageRead(ID)
    OutputMessage("From=" & oMsg.From.Realname)
    for each x in oMsg.To
      OutputMessage("To=" & oMsg.To(x))
    next   'x
    OutputMessage("Sent=" & oMsg.SendStamp)
    OutputMessage("Subject=" & oMsg.Subject)
    OutputMessage("Body=" & oMsg.Body)
    for each x in oMsg.Attachments
      OutputMessage("Attachment=" & oMsg.Attachment(x).Name)
      oAPI.DownloadAttachment(oMsg.Attachment(x), "c:\downloads")
    next   'x
    i = i + 1
  next   'oMsg
end if

OutputMessage("Read " & i & " packages.")


Code Snippets - Using Microsoft C#

The following hints are provided to help programmers use MOVEit Transfer API in their Microsoft C# development environment.

  • MOVEit Transfer API makes heavy use of many dictionary collections. An "Interop" project reference to the "Microsoft Scripting DLL" is required to use dictionaries.
  • When defining dictionary variables, define them as "Scripting.Dictionary".
  • Dictionaries support the "foreach" iterator; key values returned are of type "object" (even though they almost always can be interpreted as strings)
  • Dictionary values are also of type "object" and can really be of any type. The code example below demonstrates how to obtain a dictionary value from a dictionary given a key.
  • To strongly type individual dictionary values as MOVEit Transfer API classes (such as "MOVEitAPI.MOVEitMessageInfo"), explicit casts will be needed. (See example below.)

The following code snippet shows how to declare, use and iterate over a MOVEit Transfer API dictionary with C#.

  ' Declare strongly typed work variables
  Scripting.Dictionary ms;
  MOVEitAPI.MOVEitMessageInfo m;
  ...
  ' Get a dictionary containing the contents of an Ad Hoc Transfer inbox
  ms = objAPI.MessageBoxListMessages("/Mailboxes/Inbox");
  if (!(ms == null))
  {
    ' If it is a valid dictionary, iterate over it
    foreach (object mykey in ms)
    {
      object thekey = mykey;
      ' Strongly type dictionary contents (otherwise, they are plain objects)
      m = (MOVEitAPI.MOVEitMessageInfo)(ms.get_Item(ref thekey));
      Console.WriteLine("ID : " + m.ID);
      Console.WriteLine("From: " + m.FromRealname + " (" + m.From + ")");
      Console.WriteLine("Subj: " + m.Subject);
      Console.WriteLine("Attc: " + m.Attachments.Count + "\n");
    }
  } else {
    Console.WriteLine("Unable to list packages: " + objAPI.StatusDescription);
  }


Example Applications - Overview

A selection of example applications are available from Ipswitch. Programmers may view these examples to learn the different ways API can be used. The examples can be found on the Ipswitch MOVEit Transfer server, located at https://moveitsupport.ipswitch.com/moveit. Look in the /Distribution/MOVEit/DMZ/API/Windows/Sample folder.

Below are explanations of the included applications.

MOVEit Transfer API in a Visual Basic Script

MOVEit Transfer API can be invoked from the command line using Visual Basic Script (VBS). The included VBS example is made up of two scripts which interact with secure messaging; one script composes and sends a secure message - the other reads any new secure messages and downloads any associated attachments. The scripts are command-line driven, and accept all the parameters needed to access any MOVEit Transfer server, so no code changes should be required for use.

These examples are ideal for programmers looking to use MOVEit Transfer API to access the secure messaging features of MOVEit Transfer.

MOVEit Transfer API in an Active Server Page

MOVEit Transfer API can be included in ASP pages, allowing users to access DMZ functions from a webserver. The included example ASP pages allow a user to sign on to a MOVEit Transfer server, retrieve a list of files in their home folder, and then download one of those files, or upload a new file. The webexample.asp file is a simple example of how to set up a typical ASP application to do these kinds of operations. The webexample2.asp extends that example a little bit by demonstrating the direct file upload capability of MOVEit Transfer and MOVEit Transfer API starting with version 3.0.5.

Both webexample.asp and webexample2.asp will need to be modified in order to work with a given MOVEit Transfer server. All that is required is changing a few constants at the top of each script. Such constants include THIS_ASP_URL, which should contain the location of the ASP script itself, and DMZ_HOST, which should be set to the hostname of the MOVEit Transfer server the script will be accessing.

These examples are ideal for programmers looking to use MOVEit Transfer API to transfer files to and from a MOVEit Transfer server.

MOVEit Transfer API in a Microsoft .NET Application

MOVEit Transfer API can also be included into .NET applications. The example provided is a .NET-based Windows application which reads a list of users from a given database, then adds selected users from that list to a MOVEit Transfer server. The application has a graphical interface, and prompts for all the parameters needed to access any MOVEit Transfer server, so no code changes should be required for use.

This example is ideal for programmers looking to use MOVEit Transfer API to add and/or manage user accounts on a MOVEit Transfer server.

MOVEit Transfer API in a Microsoft C++ Application

MOVEit Transfer API can be used from high-performance C++ applications. The example provided is a C++ Windows application which signs onto MOVEit, lists the files in a folder, lets the user pick one, and downloads it to a local folder. The application is command-line driven, and accepts all the parameters needed to access any MOVEit Transfer server, so no code changes should be required for use.

MIShell

Please also see the "MOVEit Transfer API Shell" section of this documentation for information about "MIShell", a command-line script that mimics a command-line FTP client but uses MOVEit Transfer API as the back-end transport. This application can be extended to support your own interactive commands as well.


Example Applications - Direct File Transfers

When using MOVEit Transfer API in web portal applications, standard file transfer methods become less effective, since the user must first upload a file to the web portal application, which then uses MOVEit Transfer API to upload the file to MOVEit Transfer. This means that file transfers can take up to twice as long to complete than they normally would. Also, when a web portal application receives a file from a form post, it normally reads the file entirely into memory, or worse, spools it out to disk, before processing it. With large files, this can cause the application to run out of memory and fail and/or expose sensitive data to hackers who can gain access to the web portal box.

A simpler and more effective way to transfer files is to upload files directly to and download files directly from MOVEit Transfer , instead of having them pass through a web portal application first. The two directions of file transfer are handled in similar ways: uploads through a form and downloads through a link,

  • Direct Uploads
  • Direct Downloads

For a full-fledged example application (based on Active Service Pages) that demonstrates direct uploads and downloads, please download and try the "webexample2.asp" example application provided by Ipswitch.

Please also note that direct downloads depend on session transfer. To get session transfers to work correctly, you should set up the IP/hostnames of your web portal machines as Trusted Hosts in MOVEit Transfer. (Sign on as a SysAdmin, go to "Settings | Security | Remote Access Policy: Default Permissions | Trusted Hosts".) If your sessions are not being transferred properly, your end users will see a MOVEit Transfer signon screen instead of their expected file when they attempt to initiate direct downloads.

Handling Direct Uploads

Uploads are handled by constructing a special form in the web portal application which points to the MOVEit Transfer server's MOVEitISAPI module (which handles all HTTP-based file transfers for DMZ). A "redirect" parameter is passed to this module to send the user back to the web portal application after the transfer is complete. This direct uploading method is supported starting in MOVEit Transfer version 3.0.5.

The form must be populated with specific variables in order for the ISAPI module to recognize the file upload and handle it correctly. Some variables are also necessary for ISAPI to know where to direct the user to after the file transfer is complete. Some of these variables can be populated using various API property values. Others can be populated in the form by the user. The relevant section from an example ASP form is shown below.

NOTE: This example is designed to show the developer how a form should be constructed to do direct uploads to a MOVEit Transfer server. The user will be redirected to "formURL" and the success/failure of the transfer will be passed to the destination URL/application in the "Opt10" and "Opt11" variables. (The destination URL/application must usually be altered to parrot and/or react to this information.)

<%
' Begin ASP UPLOAD Form Snippet
Dim objAPI
Dim formAction,formURL,formCookie,homeFolderID

Set objAPI = CreateObject("MOVEitAPI.clientObj")
objAPI.Host = "moveitdmz.com"
objAPI.SignOn "apiuser","pass123"

formAction = objAPI.Host & "/moveitisapi/moveitisapi.dll?action=upload_nowiz"
If (objAPI.Secure) Then
    formAction = "https://" & formAction
Else
    formAction = "http://" & formAction
End If
formURL = "http://www.ipswitchft.com/moveitdmz"
formCookie = objAPI.SessionCookie
homeFolderID = objAPI.FolderGetDetails(objAPI.HomeFolder).ID

%>
    <b>Upload to <% Response.Write objAPI.HomeFolder %></b><br/><br/>
    <form name="upload" action="<% Response.Write formAction %>" enctype="multipart/form-data" method="post">
        <input type="hidden" name="transaction" value="fileupload"/>
        <input type="hidden" name="server" value="<% Response.Write objAPI.Host %>"/>
        <input type="hidden" name="url" value="<% Response.Write formURL %>"/>
        <input type="hidden" name="cookie" value="<% Response.Write formCookie %>"/>
        <input type="hidden" name="csrftoken" value="<% Response.Write objAPI.CsrfToken %>"/>
        <input type="hidden" name="Arg01" value="<% Response.Write homeFolderID %>"/>
        File: <input type="file" name="Arg02"/><br/>
        Notes: <input type="text" name="Arg03"/><br/>
        <input type="submit" value="Upload File"/>
    </form>
<%
' End ASP Form Snippet
%>

The snippet above includes all the necessary form information to do a direct file upload to a MOVEit Transfer server. The form action should be constructed exactly as shown above with the formAction variable. Some of the form variables must be included the same way as shown above, while others can be included differently. Here is what each variable means:

VarName | Meaning
transaction | A special variable which tells MOVEit Transfer that you are performing a file upload. Must be the string "fileupload".
server | The MOVEit Transfer host you are uploading to.
url | The URL that MOVEitISAPI should redirect the user to after the file upload is complete
cookie | The session cookie that the current API session is using to maintain its state with the MOVEit Transfer server.
csrftoken | The value of the CsrfToken property, which is populated by DMZ after SignOn and must be posted back to DMZ in order for the upload to succeed.
Arg01 | The ID of the MOVEit Transfer folder that the file should be uploaded to. This can be a fixed, hidden variable, as in the example above, or it can be selected by the user through a SELECT field, assuming the user is allowed to upload files to more than one folder.
Arg02 | The file to be uploaded.
Arg03 | Any notes that should be uploaded with the file. Again, this can be a fixed, hidden variable, or a field that the user can enter their own notes into.

Once the file upload is complete, the MOVEitISAPI module will redirect the user to the location specified in the "url" form field. It will also add the information submitted with the form to the query string, so that the ASP that processes the response knows what was submitted. Added to that information will be the special field "Opt10", which will contain the ID of the newly created file, or 0 if the file upload was unsuccessful, in which case the error description can be found in the special field "Opt11". ASP applications which do direct uploads to the MOVEitISAPI module should make sure to look for these fields when processing the redirected response.

Handling Direct Downloads

Downloads are handled by contructing links on web portal application pages which point to "human.aspx", which itself sends the user to a download from MOVEitISAPI with the correct parameters. No "redirect" parameter is required in this case because, from the user's perspective, they never leave the web portal.

This example will sign onto MOVEit Transfer, list files in a specific folder, and set up links so that each link will download directly from MOVEit Transfer.

<%
' Begin ASP DOWNLOAD Links Snippet
Dim objAPI
Dim formAction,formURL,formCookie,homeFolderID
Dim dictFiles,objFile,directURL,signOnAs,fullFilePath

Set objAPI = CreateObject("MOVEitAPI.clientObj")
objAPI.Host = "moveit.stdnet.com"
signOnAs = "apiuser"
if objAPI.SignOn(signOnAs,"pass123") then

formAction = objAPI.Host & "/apilink.aspx?sessionid=" & objAPI.SessionID & "&"
If (objAPI.Secure) Then
    formAction = "https://" & formAction
Else
    formAction = "http://" & formAction
End If
formCookie = objAPI.SessionCookie
homeFolderID = objAPI.FolderGetDetails(objAPI.HomeFolder).ID

Set dictFiles = objAPI.FolderListFiles(homeFolderID)

%>
    <b>Listing files in <% Response.Write objAPI.HomeFolder %></b><p/>
    <ul>
<%

for each fullFilePath in dictFiles
  set objFile = dictFiles(fullFilePath)
  ' Sample of the URL apilink really calls for us (yes, there are multiple redirects):
  ' https://dotnet/human.aspx?Username=penguin&arg01=9102186&arg05=0/dwn.gif&arg12=downloaddirect&transaction=signon&quiet=true
  directURL = formAction & "Username=" & signOnAs & "&arg01=" & objFile.ID & "&arg05=0/" & objFile.Name & "&arg12=downloaddirect&transaction=signon&quiet=true"
  Response.Write "<li/><a href='" & directURL & "'>" & objFile.Name & "</a> <i>(" & objFile.FileSize & " bytes)</i>"
next 'objFile

%>
    </ul>
<%
else
  Response.Write "COULD NOT SIGN ON!"
end if
' End ASP DOWNLOAD Links Snippet
%>


Example Applications - Secure Messaging

Two command-line scripts called "readmsg.vbs" and "sendmsg.vbs" show how to read and send secure messages using MOVEit API.

readmsg.vbs

"readmsg.vbs" will list new messages available for a particular user from a MOVEit Transfer server. If the "-read" argument is provided, the script will also read these messages from the server and save off any attachments. Remember, once messages are "read", they are no longer new.

Supported command-line options are listed below.

D:\>cscript //NoLogo readmsg.vbs

Usage: readmsg.vbs -h= -u= -p= [other parms]
Parameters:
 -h=<host>         Hostname of remote host
 -hp=<hostpath>    Path of DMZ application on remote host
 -p=<password>     Password of FROM user
 -read             Also read and display body of message
 -u=<username>     User FROM which to send message

The following output is from actual use. Notice that the message in the following example was listed as new until the "-read" argument was provided. After this message was read, the list of new messages is replaced by a "no new messages" phrase instead.

D:\>cscript //NoLogo readmsg.vbs -h=moveit.ipswitch.com -u=frog@ipswitch.com -p=a1s2d3

* * * * * * * * * * * * * * * * * * * * * * * * *
From:jonboy
Sent:2/9/2007 12:52:06 PM
MOVEitDMZMsgID:301763077
Subject:This is a new temporary user
* * * * * * * * * * * * * * * * * * * * * * * * *

D:\>cscript //NoLogo readmsg.vbs -h=moveit.ipswitch.com -u=frog@ipswitch.com -p=a1s2d3

* * * * * * * * * * * * * * * * * * * * * * * * *
From:jonboy
Sent:2/9/2007 12:52:06 PM
MOVEitDMZMsgID:301763077
Subject:This is a new temporary user
* * * * * * * * * * * * * * * * * * * * * * * * *

D:\>cscript //NoLogo readmsg.vbs -h=moveit.ipswitch.com -u=frog@ipswitch.com -p=a1s2d3 -read

* * * * * * * * * * * * * * * * * * * * * * * * *
From:jonboy
Sent:2/9/2007 12:52:06 PM
MOVEitDMZMsgID:301763077
Subject:This is a new temporary user
TO:frog@ipswitch.com
---
This is line 1.<br> <br> This is line 3.<br> This is line 4.<br>
* * * * * * * * * * * * * * * * * * * * * * * * *

D:\>cscript //NoLogo readmsg.vbs -h=moveit.ipswitch.com -u=frog@ipswitch.com -p=a1s2d3

No new messages!

sendmsg.vbs

"sendmsg.vbs" will send messages from one user to one or more users or groups.

Supported command-line options are listed below.

D:\>cscript //NoLogo sendmsg.vbs

Usage: sendmsg.vbs -h=<host> -u=<user> -p=<pass> -rto=<recipient> -s=<subject> -
b=<file> [other parms]
Parameters:
 -a=<filepath>     Path to file containing an attachment
 -b=<filepath>     Path to file containing message body
 -h=<host>         Hostname of remote host
 -hp=<hostpath>    Path of DMZ application on remote host
 -p=<password>     Password of FROM user
 -rcc=<recipient>  Username/email/groupname of CC recipient
 -rbcc=<recipient> Username/email/groupname of BCC recipient
 -rto=<recipient>  Username/email/groupname of TO recipient
 -s=<subject>      Subject (use double quotes)
 -u=<username>     User FROM which to send message

The following example shows two messages being sent and then read by the other user.

D:\>cscript //NoLogo sendmsg.vbs -b=d:\hello.txt -h=moveitdmz.com -p=a1s2d3
-rto=frog@ipswitch.com -s=TestSubject -u=dog@ipswitch.com
Subject is TestSubject
Body is Hello dog, this is frog!

Recipient:TO:frog@ipswitch.com
Sent message ok.
Codes:  (0) :

D:\>cscript //NoLogo sendmsg.vbs -b=d:\hello2.txt -a=d:\thinker.gif
-h=moveitsupport.ipswitch.com -hp=moveit -p=a1s2d3 -rto=frog@ipswitch.com
-s="My Self Portrait" -u=dog@ipswitch.com
Full path is: d:\thinker.gif
Subject is My Self Portrait
Body is Dog, I hope you like my enclosed self-portrait.

Recipient:TO:frog@ipswitch.com
Sent message ok.
Codes:  (0) :

D:\>cscript //NoLogo readmsg.vbs -h=moveit.ipswitch.com -u=frog@ipswitch.com -p=a1s2d3 -read
* * * * * * * * * * * * * * * * * * * * * * * * *
From:dog@ipswitch.com
Sent:2/9/2007 1:39:20 PM
MOVEitDMZMsgID:301841729
Subject:My Self Portrait
TO:frog@ipswitch.com
---
Dog, I hope you like my enclosed self-portrait. <br/>
thinker.gif (50587 bytes)
* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * *
From:dog@ipswitch.com
Sent:2/9/2007 1:35:07 PM
MOVEitDMZMsgID:301859133
Subject:TestSubject
TO:frog@ipswitch.com
---
Hello dog, this is frog! <br/>
* * * * * * * * * * * * * * * * * * * * * * * * *


Example Applications - Using MOVEit Transfer API with DTS

Overview

Microsoft's Data Transformation Services (DTS) can be used to create a set of tasks, called a "package", which will download a text file from a MOVEit Transfer server, save it to disk, process that text file, and import the data contained within into a Microsoft SQL Server database. This package consists of an ActiveX Script Task to download a file from a MOVEit Transfer server, a Text File Source connection to read in the temporary text file that was downloaded, an ActiveX Data Transformation task to map data from the text file to the SQL database table while encrypting certain fields, an SQL Database Destination connection to allow insertion of the fields from the temporary text file into the corresponding fields in an SQL database table, and a final ActiveX Script Task to securely delete the temporary text file.

The DTS Package in the Graphical Building Tool

Get From DMZ

The "Get From DMZ" ActiveX Script Task is the first element in the package to run. This task uses the MOVEit Transfer API Windows COM object to connect to a MOVEit Transfer server, query a specific folder for a new file, and if it finds one, download the file to the local filesystem. The script is composed of the following VBScript code.

' Begin "Get From DMZ" ActiveX Script Task
Function Main()
    Dim apiObj
    Dim FolderPath
    Dim Files
    Dim fObj
    Dim FilePath

    ' Filetype constant
    Const SIL_FILETYPE_UPLOADANY = 31

    ' Return failure status by default
    Main = DTSTaskExecResult_Failure

    ' Create the MOVEit Transfer API object, and set the properties
    Set apiObj = CreateObject("MOVEitAPI.clientObj")
    apiObj.Host = "moveit.mycompany.com"
    apiObj.Secure = True
    apiObj.ScriptPath = "/"

    ' Signon to the MOVEit Transfer server
    If Not apiObj.SignOn("username","password") Then
        ' Error signing on
        Exit Function
    End If

    ' Set the Folder to look for files in
    FolderPath = "/Distribution/CollectionFolder"

    ' Get a list of new files from the folder
    Set Files = apiObj.FolderFindNewFiles("*",FolderPath)

    If Not Files.Count > 0 Then
        ' No files found
        Exit Function
    End If

    ' Grab the first file in the list
    FilePath = Files.Items(0).Path

    ' Download the file to a local filesystem location
    apiObj.FileDownloadAs FilePath, "C:\TEMP\dmz_file.txt"

    ' Signoff the MOVEit Transfer server
    apiObj.SignOff

    Set apiObj = Nothing

    ' Return success if we get this far
    Main = DTSTaskExecResult_Success
End Function
' End ActiveX Script Task

Text File Source Connection

The Text File Source connection is the second element of the DTS package to run, and should only run if the ActiveX Script Task completed successfully. This element reads in the temporary text file created by the ActiveX Script Task and parses it based on whatever parsing methods are selected.

Configuring the Text File Source element is a three-step process. The first step is entering the location that the file from the MOVEit Transfer server will be located.
Note: You need to have an example copy of this file present at the correct location with the correct name in order for the element to be configured properly.

Step 1 for configuring a text file source

Step 2 involves telling the element how the text file is structured. This step allows you to select the style of column delineation, whether by a specific delimiter character, or by fixed column widths. You are also able to select a row delimiter (usually {CR}{LF}, or carriage-return/linefeed), a text qualifier (single-quotes, double-quotes, or none), and you can choose how many lines of the text file to skip, if there is header information that should not be parsed.

Step 2 for configuring a text file source

Step 3 is dependant on the column delineation settings from the previous step. If the text file's columns are delimited by a specific character, Step 3 lets you select that character and view a preview of the results of delineating based on that character. If the text file's columns are based on fixed widths, Step 3 allows you to set up the widths that the Text File Source connection should parse based on.

Configuring a delimiting character

Configuring column widths

SQL Server Destination Connection

The SQL Server Destination connection step is where the data which was parsed in the Text File Source element is inserted into a given database on a given SQL server.

Configuring the SQL Server Destination element requires only one step. In this step, you select the data source (in this case, the Microsoft OLE DB provider for SQL Server), the SQL server, the authentication method, and the database name.

Configuring an SQL server destination

ActiveX Data Transformation Task

The data transformation step of the DTS package is represented by the brown arrow between the source and destination connections. In this step, we want to create and configure an ActiveX Data Transformation Task to map columns read in from the text file to columns in the SQL database table. We use an ActiveX Task because we would like to encrypt the information in some of these columns before inserting them into the SQL table. To do the encryption, you need a copy of the SNIEncryption COM object, or a suitable string encryption method. An example of the script that performs this task is below.
Note: You will need to modify this code in your task to account for the number and names of your data columns, as well as the encryption key you plan to use, and which columns to encrypt the data of.

' Begin ActiveX Data Transformation task
Function Main()
    ' Default return value is error
    Main = DTSTransformStat_Error

    Dim fieldDict
    Dim sourceField, destField
    Dim encObj, encKey

    ' Set the encryption object and key. You should set your
    ' own encryption key and keep a record of it.
    Set encObj = CreateObject("SNIEncryption.SNIEncryptionAPI")
    encKey = "42p4a1593u"

    ' ###########################
    ' Begin encrypting columns - your columns will
    ' probably be different than these. In this example,
    ' there are five columns: Date, Name, Transaction,
    ' Status, and Amount. We are encrypting the data
    ' from the Transaction and Amount columns.

    ' Column 1
    DTSDestination("Date") = DTSSource("Col001")

    ' Column 2
    DTSDestination("Name") = DTSSource("Col002")

    ' Column 3 Encrypted
    DTSDestination("Transaction") = encObj.EncryptString(DTSSource("Col003"), encKey)

    ' Column 4
    DTSDestination("Status") = DTSSource("Col004")

    ' Column 5 Encrypted
    DTSDestination("Amount") = encObj.EncryptString(DTSSource("Col005"), encKey)

    ' End encrypting columns
    ' ###########################

    ' Return OK if we get this far
    Main = DTSTransformStat_OK
End Function
' End ActiveX Data Transformation task

To create the data transformation step between the source element and the destination element, select them both, then right-click on the destination element. Select "Transform Data Task". This will create a brown arrow between the two elements. Double-click on this arrow to bring up the data transformation properties. The Destination tab allows you to configure which table in the SQL database the information will go into, and the Transformations tab allows you to configure which Data Transformation Task to use for mapping columns of source data to columns of destination data.

Selecting a database table

By default, there should already be a number of Data Transformation Tasks defined. These simply copy the data from one column of the text file into a corresponding column in the SQL table. You can safely delete these, as the ActiveX transformation task we will be creating will take the place of all of them. Next, click the "New" button to define a new transformation task, and select the ActiveX Script option. This will bring up the Transformation Options window. In the General tab, enter a name for this transformation task, such as "EncryptSourceData." Also, input the VBScript code into the script task by clicking on the Properties button. In the Source Columns tab, make sure all source columns that you want to insert into the SQL table are selected. In the Destination Columns tab, make sure all SQL table columns that will receive data are selected. When you are finished hit the OK button. The Transformations tab of the Transform Data Task Properties window should appear like below.

Completed Transform Data Task Properties window, Transformations tab.

Delete Tempfile

The final step in the package is the Delete Tempfile ActiveX Script task. This task securely deletes the temporary copy of the file downloaded from DMZ by overwriting it with zeros, and then deleting it. The script is composed of the following VBScript code.

' Begin Delete Tempfile ActiveX Script Task
Function Main()
    ' Default return value of failure
    Main = DTSTaskExecResult_Failure

    Const ForWriting = 2
    Dim tempFile
    Dim fso, file, fileSize, ts

    ' Set the tempFile location and the file system object
    tempFile = "C:\TEMP\flatfile.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' If the file exists, write over the file with zeros, then
    ' delete the file
    If fso.FileExists(tempFile) Then
        Set file = fso.GetFile(tempFile)
        fileSize = file.Size
        Set ts = file.OpenAsTextStream(ForWriting)
        ts.Write String(fileSize, "0")
        ts.Close
        file.Delete(True)
    End If

    ' Return success if we get this far
    Main = DTSTaskExecResult_Success
End Function
' End ActiveX Script Task

Workflow and Data Transformation Directions

Before this DTS package can be run, we have to tell it what order it will be working in. In this case, we want the "Get From DMZ" ActiveX Script task to run first. Then, if the script task was successful, we want the Text File Source element to run, and we want the data to be transformed into the SQL Server destination element. Finally, we want the temp file to be deleted whether the SQL Server destination step worked correctly or not. DTS delineates these workflow directions using arrows of differing colors.

To create the workflow direction between the "Get From DMZ" task and the source element, select them both, then right-click on the source element. Select "Workflow" -> "On Success". This will create a green-striped arrow between the two elements.

To create the workflow direction between the SQL Server destination and the "Delete Tempfile" task, select them both, then right-click on the task. Select "Workflow" -> "On Completion". This will create a blue-striped arrow between the two elements.

Finished!

The DTS package should now be ready to perform. You can test the package by clicking on the green "Execute" arrow in the top bar of the graphical package creator.


Example Applications - Using MOVEit Transfer API with DTS

Example Applications - Transferring Sessions

Overview

When MOVEit Transfer API is used in a web application, it is generally to provide MOVEit Transfer services outside the confines of the MOVEit Transfer server itself. This requires the application's API object to sign on to the MOVEit Transfer server with provided user authentication information. Once this signon is complete, a session now exists between API and DMZ, identified by a session cookie which API stores, and provides back to DMZ on subsequent transactions.

Normally, the session remains unique to the specific instance of MOVEit Transfer API, and only MOVEit Transfer API can use it. However, sometimes the application using API will want to transfer the user to MOVEit Transfer instead of providing services through API. If a session has already been established with API, this can be done without forcing the user to sign on again when they get to MOVEit Transfer, using a session transfer.

To perform the session transfer, the application needs to provide a specific link to MOVEit Transfer, containing specific information about the session:

https://moveit.yourcompany.com/apilink.aspx?sessionid=<sessionid>&username=<username>

Starting with the "apilink.aspx", the information shown must be provided in order for the transfer to work correctly. Both the session ID and username can be found in API properties (see the clientObj Properties page for more details). The session ID is the unique ID of the current API session, which will be transferred to the user. The username is used as verification of the recipient of the transfer.

Once a user clicks on the link generated by the application, the session will be verified and transferred, and the user will be directed to the MOVEit Transfer application itself. Provided the API session that was transferred was still valid, the user will not have had to re-authenticate, and would be able to begin using DMZ immediately.


clientObj Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

ActAsIP - (String, Read-Only) - Returns the IP address specified by the SignOnAsIP function. If no such IP was specified, returns a blank string.

AsAgent - (String) - Tells MOVEit Transfer what to record as the agent name of this application. The value set using this property will be entered in the MOVEit Transfer audit log for all transactions issued by the application.

ClientCertCommonName - (String) - The Common Name attribute of the SSL client certificate to use when communicating with MOVEit Transfer. Normally this is blank, meaning client certificates will not be used.

ClientCertStore - (String) - The name of the Windows certificate store to use when searching for an SSL client certificate. Ignored if ClientCertCommonName is blank. This defaults to "My", meaning the current user's personal certificate store, and there is rarely a need to set it to any other value.

CsrfToken - (String, Read-Only) - A string that is randomly generated upon sign on. To maintain security, this must be supplied as a form value named 'csrftoken' when an API web application generates a form for a "direct upload" against DMZ version 8.0.1.0 or higher.

FormatCSV - (String, Read-Only) - A constant string used as the Format parameter when downloading a Webpost as a CSV file.

FormatXML - (String, Read-Only) - A constant string used as the Format parameter when downloading a Webpost as an XML file.

HomeFolder - (String) - The full path of this user's default folder. (Unless explicitly specified, a user's default folder will normally be their Home folder.) This value will be blank for users who have not yet or failed to sign on. This value will also be blank for users who do not have a home or default folder, such as temporary users.

Host - (String) - The hostname or IP address of the remote MOVEit Transfer server. Examples: "192.168.3.48" or "moveit.stdnet.com". Please note that if an IP address is used, you will probably have to set the "IgnoreCertProbs" property to false. (This is often required because SSL certificates are linked to hostnames, not IP addresses.) There is no default value for the "Host" property; you must always set it explicitly.

IgnoreCertProbs - (Boolean) - Tells MOVEit Transfer API to ignore certificate problems such as those caused by "test certificates" (bad CA) and connections by IP address rather than by host (name mismatch). However, this value does not apply to expired certificates, which will always cause MOVEit Transfer API to halt its connection process. By default, this value is set to FALSE.

OrgID - (Short, Read-Only) - The Organization ID of the current user. This value will be 0 for SysAdmins, -1 for users who have not yet or failed to sign on, and a positive 4-digit integer for all other users.

OrgName - (String, Read-Only) - The Organization Name of the current user. This value will be blank for users who have not yet or failed to sign on.

Payload - (String, Read-Only) - The raw XML payload returned by the MOVEit Transfer server for the last transaction.

Port - (Short) - The port used by the HTTP or HTTPS service on the remote MOVEit Transfer server. Examples: 80 and 443. By default, this value is set to 80 when the "Secure" property is FALSE and is set to 443 when the "Secure" property is TRUE.

ProxyHost - (String) - Used only when API is used through a proxy and regular IE proxy settings are not available (e.g. ASP code or automated SYSTEM processes), this property specifies the host API should use as a proxy server. When set to a blank string, API will use the proxy settings in the current user's IE profile.

ProxyPassword - (String) - Used only when API is used through a proxy that requires authentication, this property should be set to the password of an authorized proxy user.

ProxyPort - (Integer) - Used only when API is used through a proxy and regular IE proxy settings are not available (e.g. ASP code or automated SYSTEM processes), this property specifies the port API should use as the proxy port. When set to a blank string, API will use the proxy settings in the current user's IE profile.

ProxyUsername - (String) - Used only when API is used through a proxy that requires authentication, this property should be set to the username of an authorized proxy user.

ReadTimeout - (Integer) - The timeout in seconds for waiting for a response from the MOVEit Transfer server after submitting a request (default is 60 seconds).

ScriptPath - (String) - Used only when MOVEit Transfer has been installed into a subdirectory of an existing webserver, this property indicates what that subdirectory is. For example, if MOVEit Transfer has been installed on "www.stdnet.com" in the "midmz" folder (full URL: "https://www.stdnet.com/midmz"), then the value of this property must be set to "midmz".

Secure - (Boolean) - Indicates whether to use unencrypted HTTP (if FALSE) or encrypted HTTPS (if TRUE) for all communications to MOVEit Transfer. Default value is TRUE.

SessionCookie - (String, Read-Only) - Returns the cookie that API uses to maintain a session with the MOVEit Transfer server.
NOTE: This property will not return just the session ID string (see the SessionID property for this). Instead, it returns the entire cookie which is posted to DMZ to maintain the session. The format of the cookie is:

ASP.NET_SessionId=<sessionID string>; path=/

SessionID - (String, Read-Only) - Returns the session ID string used to maintain a session with the MOVEit Transfer server. SessionID will be blank unless the current instance of API is signed on.

StatusCode - (Short, Read-Only) - Returns the status code of the last action performed. A code of 0 indicates no error; other codes an error has occured. (See the full list of Status Codes in this reference for more information.)

StatusDescription - (String, Read-Only) - Returns a description of the last action performed. A description of "" usually indicates no error, but not always. Use the "StatusCode" property to programmatically respond to MOVEit Transfer API error codes; use the "StatusDescription" property to display information to a user or into your own log files.

UserID - (String, Read-Only) - Returns the ID (e.g. "jsmithr8my61b5oj") of the currently signed on user. This property will be blank prior to a successful signon.

UserListCount - (Integer, Read-Only) - Returns the total number of users available via the most recent UserList or UserListAdvanced function call. If no call has been made, returns 0.

Username - (String, Read-Only) - Returns the Username (e.g. "jsmith") of the currently signed on user. This property will be blank prior to a successful signon.

UserRealname - (String, Read-Only) - Returns the Realname (e.g. "John Smith")of the currently signed on user. This property will be blank prior to a successful signon.

Version - (String, Read-Only) - Returns the version of the MOVEit Transfer API library in use.


clientObj Reference - Signon/Signoff Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

SignOff() - (Boolean) - Signs off the current user. Another use of the SignOn method is required before any other commands are given. Returns TRUE if successful; FALSE otherwise.

SignOn( Username, Password ) - (Boolean) - Given a username and password, returns TRUE if signon is successful, FALSE otherwise. This method also sets the StatusCode property to "No error" (0) if successful.

SignOnAsIP( Username, Password, ActAsIP ) - (Boolean) - Same as above, except allows the specifying of an IP address that this instance of MOVEit Transfer API will act as. The "ActAsIP" address will be logged and displayed by MOVEit Transfer for this session, but only if the real IP address of the machine which initiated the API session has been configured as a Trusted host on MOVEit Transfer. (Sign on as a SysAdmin, go to "Settings | Security | Remote Access Policy: Default Permissions | Trusted Hosts".) This method's most frequent application is in a web portal application which wants to ensure that MOVEit Transfer is logging the IP address of the remote user's browser instead of the IP address of the web portal application. (See also the "ActAsIP" and "AsAgent" clientObj properties.)

SAMLSignOn( SAMLAssertion ) - (Boolean) - Given a SAML Assertion element as an IXMLDOMElement, received from a SAML Identity Provider supported by the MOVEit Transfer server, returns TRUE if signon using the assertion is successful, FALSE otherwise. (See the OrgGetSAMLInfo() method for listing SAML settings and Identity Providers for the MOVEit Transfer organization.)

OrgGetSAMLInfo( [OrgID] ) - (MOVEitSAMLInfo) - Gets the SAML Service Provider settings for the MOVEit Transfer organization specified by the OrgID field, as well as any SAML Identity Providers configured in the org. These can be used by an application to request a SAML Assertion from one of the Identity Providers, which can be used to authenticate to MOVEit Transfer. If no OrgID value is provided, the default organization will be used. (See the SAMLSignOn() method for signing on to MOVEit Transfer using a SAML Assertion.)
NOTE: This method may be called before signing on to MOVEit Transfer.

SignOn Failures

There are several reasons why the SignOn transaction may fail. The following errors describe the most common errors observed during SignOn failures and how to correct them. (The syntax below is clientObj.StatusCode : clientObj.StatusDescription.)

2025 : Failed to sign on with username and password

This usually indicates that the username and password combination provided were not correct. This error will also be displayed if the user has been locked out (suspended) or if this user is not allowed to sign onto from this IP address. (However, a "2025" error always indicates that MOVEit Transfer API connected OK to MOVEit Transfer. The following "3201" errors indicate some kind of connection problem.)

3201 : 404 Not Found

This usually indicates that the clientObj.Host and clientObj.Port values are correct, but that the clientObj.ScriptPath is not. (Alternatively, this could indicate that MOVEit Transfer is not installed on the target host!)

3201 : The address is not valid

This usually indicates that the clientObj.Host value is a hostname which could not be resolved.

3201 : Failed to verify the certificate trust

This almost always indicates that the clientObj.IgnoreCertProbs needs to be set to True. (This message is common when connecting to a remote MOVEit Transfer server by IP address, as SSL certificates are issued by hostname, not IP address.)

3201 : The connection timed-out

This message indicates that the clientObj.Host, clientObj.Port or clientObj.Secure values are incorrect, or that the IIS web server is not listening on the MOVEit Transfer box. It could also indicate a port closed by a firewall or "choke" router.

Password Aging or Required Changing

Users who sign on through the API interface are not subject to some of the password changing requirements that web interface users are. In particular, users set to require a password change on the next login will be allowed to sign on. Also, the user is not prompted to change their password if password aging is in effect and the user's password is getting old.

Information about these instances is provided after a signon, however, in the Payload property of the API object, which contains the XML response from the MOVEit Transfer server. If such a message exists, it will be located in the "PasswordWarning" node. The message can be extracted and presented by the application, or it can simply be tested for in order to force a password change. Example Visual Basic code for testing for the presence of the PasswordWarning node is presented below.

Function TimeToChangePassword(RawInput as String) as Boolean
    TimeToChangePassword = False
    If InStr(RawInput,"") > 0 Then
        TimeToChangePassword = True
    End If
End Function

Detecting Group Admin Permissions

Unlike "User" or "Admin", "GroupAdmin" is not a discrete user permission class. Instead, GroupAdmins are Users with limited administrative permissions to one or more groups. In those situations where detecting GroupAdmin permission is important, the following function can be used to return a simple True or False response to the question "Am I GroupAdmin?"

Function AmIGroupAdmin(oMIAPI as MOVEitAPI.clientObj) as Boolean
    Dim objUser as MOVEitAPI.MOVEitUserInfo
    Dim dictUsers as Scripting.Dictionary
    Dim ReturnBool as Boolean
    ReturnBool = False
    Set objUser = oMIAPI.UserGetDetails(oMIAPI.Username)
    if objUser.Permission = 10 then
      Set dictUsers = oMIAPI.UserList()
      if NOT dictUsers IS Nothing then
        ReturnBool = True
      end if
    end if
    AmIGroupAdmin = ReturnBool
End Function


clientObj Reference - File Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

Argument and Return Value Conventions:

  • LocalFolder - A local path without a filename. (e.g. "c:\temp")
  • LocalPath - A fully qualified local path including a filename. (e.g. "c:\temp\notes.txt")
  • MOVEitFolder - A MOVEit Transfer path without a filename. (e.g. "/Distribution/Releases") In place of a MOVEitFolder string, you may alternatively provide a FolderID. (e.g. "123456")
  • MOVEitFormat - A string which gives the desired format. The value must be one of the following two constant properties of this object: FormatXML or FormatCSV. (e.g. "objAPI.FileDownload(filepath, localpath, objAPI.FormatXML)")
  • MOVEitPath - A fully qualified MOVEit Transfer path including a filename. (e.g. "/Distribution/Releases/notes.txt") In place of a MOVEitPath string, you may alternatively provide a FileID. (e.g. "1234567")

FileCopy( MOVEitPathFrom, MOVEitFolderTo ) - (Integer) - Copies a file from the specified path to the specified folder. Returns the File ID of the new file if successful, 0 otherwise.

FileCopyAndConvert( MOVEitPathFrom, MOVEitFolderTo, MOVEitFormat ) - (Integer) - Copies a webpost converted into either a CSV file or an XML file from the specified path to the specified folder. Returns the File ID of the new file if successful, 0 otherwise.

FileDelete( MOVEitPath ) - (Boolean) - Deletes the file with the provided path from MOVEit Transfer. Returns TRUE if successful; FALSE otherwise.

FileDownload( MOVEitPath, LocalFolder ) - (Boolean) - Downloads the selected file from the MOVEit Transfer system into the specified local folder. If a file of the same name already exists in the local folder, it will be overwritten. (Use this function if you want to download files from MOVEit Transfer without renaming them.) Returns TRUE if successful; FALSE otherwise.

NOTE: During the file download process, the file data is stored to a temporary file (the file name with .tmp appended). When the download is complete, the temporary file is renamed to the correct filename. If the download is interrupted, the temporary file will remain. If this function finds a temporary copy of the downloaded file, it will automatically resume the download, copying only the data needed to complete the transfer from the MOVEit Transfer server. This keeps API from having to start large dowloads again from the beginning if a download is interrupted.

NOTE: Webpost files do not have names, so if this method is used to download a webpost (by using the webpost file ID as the MOVEitPath argument), the file will be downloaded with the constructed name "webpost_[TrackingID]".

FileDownloadAs( MOVEitPath, LocalPath, [MOVEitFormat] ) - (Boolean) - Downloads the selected file from the MOVEit Transfer system into a file with the specified full path. If a file with the same local path already exists, it will be overwritten. (Use this function if you want to download files from MOVEit Transfer and rename them.) The "MOVEitFormat" argument should not be specified unless a Webpost file is being downloaded and needs to be converted to an XML or CSV file. Note that webpost files are accessed using the filename "Webpost_[FileID]", where "[FileID]" is the tracking ID of the webpost file. Returns TRUE if successful; FALSE otherwise.

NOTE: During the file download process, the file data is stored to a temporary file (the file name with .tmp appended). When the download is complete, the temporary file is renamed to the correct filename. If the download is interrupted, the temporary file will remain. If this function finds a temporary copy of the downloaded file, it will automatically resume the download, copying only the data needed to complete the transfer from the MOVEit Transfer server. This keeps API from having to start large dowloads again from the beginning if a download is interrupted.

FileDownloadToBuffer( MOVEitPath, [MOVEitFormat] ) - (String) - Downloads the selected file from the MOVEit Transfer system and returns the file contents in the form of a binary string. The "MOVEitFormat" argument should not be specified unless a Webpost file is being downloaded and needs to be converted to an XML or CSV file. Returns the binary contents of the downloaded file.

FileDownloadToBufferAsText( MOVEitPath, [MOVEitFormat] ) - (String) - Downloads the selected file from the MOVEit Transfer system and returns the file contents in clear text as a string. The "MOVEitFormat" argument should not be specified unless a Webpost file is being downloaded and needs to be converted to an XML or CSV file. Returns the clear text contents of the downloaded file.

FileExists( MOVEitPath ) - (Boolean) - Returns TRUE if the specified file exists and the currently authorized user may access it; FALSE otherwise.

FileGetDetails( MOVEitPath ) - (MOVEitFileInfo) - Returns a MOVEitFileInfo object containing information about the specified file. If the file does not exist or the currently authorized user is not permitted to access it, then Nothing is returned instead.

FileMove( MOVEitPathFrom, MOVEitFolderTo ) - (Boolean) - Moves a file from the specified path to the specified folder. Returns TRUE if successful; FALSE otherwise.

FileMoveAndConvert( MOVEitPathFrom, MOVEitFolderTo, MOVEitFormat ) - (Boolean) - Moves a webpost converted into either a CSV file or an XML file from the specified path to the specified folder. Returns TRUE if successful; FALSE otherwise.

FileRename( MOVEitPath, NewName ) - (Boolean) - Renames an existing MOVEit Transfer file with the given path. Returns TRUE if successful; FALSE otherwise.

FileUpload( LocalPath, MOVEitFolder, [Notes] ) - (Integer) - Uploads the selected file into the specified MOVEit Transfer folder. If a file of the same name already exists in the MOVEit Transfer folder, it may not be overwritten; the exact behavior of this function depends on the name of the "Allow Overwrite" flag set on that particular folder. (Use this function if you want to upload files to MOVEit Transfer without renaming them.) Returns the FileID of the new file if successful; 0 otherwise.

If a Partial file of the same name exists in the MOVEit Transfer folder, this function will automatically execute a resumed upload, copying only the file data required to complete the upload. This keeps API from having to start large uploads again from the beginning if an upload is interrupted.

FileUploadAs( LocalPath, MOVEitPath, [Notes] ) - (Integer) - Uploads the selected file into the specified MOVEit Transfer folder. If a file of the same name already exists in the MOVEit Transfer folder, it may not be overwritten; the exact behavior of this function depends on the name of the "Allow Overwrite" flag set on that particular folder. (Use this function if you want to upload files to MOVEit Transfer and rename them.) Returns the FileID of the new file if successful; 0 otherwise.

If a Partial file of the same name exists in the MOVEit Transfer folder, this function will automatically execute a resumed upload, copying only the file data required to complete the upload. This keeps API from having to start large uploads again from the beginning if an upload is interrupted.

FileUploadFromBuffer( Buffer, MOVEitPath, [Notes] ) - (Integer) - Uploads the selected file to MOVEit Transfer from the specified buffer. Returns the FileID of the new file if successful; 0 otherwise.


clientObj Reference - Folder Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

Argument and Return Value Conventions:

  • MOVEitFolder - A MOVEit Transfer path without a filename. (e.g. "/Distribution/Releases") In place of a MOVEitFolder string, you may alternatively provide a FolderID. (e.g. "123456")
  • PermissionString - A "PermissionString" represents the permissions a user or group enjoys on a particular folder and must contain one or more of the following letters: "AEDLNRW". (A=Admin, E=Subfolders, D=Delete, L=List, N=Notify, R=Read, W=Write.)
  • Mask - A file or folder name that may include two wildcards: "*" (match any number of any characters) or "?" (match exactly one character of any value). For example, given a group of files that contained "cat.txt, frog.txt and dog.txt", a mask of "*og.txt" would match two files and a mask of "?og.txt" would match one file.

Note: The FolderListXXX methods return objects that may not be fully populated. For instance, while the ID property is populated, the FileMaskRule property has a meaningless value of -1. To get full details on a folder or file, use the FolderGetDetails method.

FolderAccessAddGroup( MOVEitFolder, GroupName/GroupID, PermissionString ) - (Boolean) - Grants the specified group access to this folder. Returns TRUE if successful, otherwise returns FALSE.

FolderAccessAddUser( MOVEitFolder, Username/UserID, PermissionString ) - (Boolean) - Grants the specified user access to this folder. Returns TRUE if successful, otherwise returns FALSE.

FolderAccessDeleteGroup( MOVEitFolder, GroupName/GroupID ) - (Boolean) - Denies the specified group access to this folder. Returns TRUE if successful, otherwise returns FALSE.

FolderAccessDeleteUser( MOVEitFolder, Username/UserID ) - (Boolean) - Denies the specified user access to this folder. Returns TRUE if successful, otherwise returns FALSE.

FolderAccessList( MOVEitFolder ) - (Dictionary of String) - Returns a dictionary object containing string pairs of users and groups with access to this folder. The KEY will be either a username or a group name (group names will be prefaced by "GROUP:"). The VALUE will be a PermissionString describing the permissions this user or group currently enjoys on this folder. Returns an empty Dictionary if no access items are found or Nothing if the currently authorized user is not permitted to get this information.

FolderAccessForUser( MOVEitFolder ) - (String) - Returns a PermissionString describing the permissions the current connected user - including the explicit and implicit permissions based on the user and his or her groups. Returns an empty string if no access items are found, if the folder does not exist or if the currently authorized user is not permitted to get this information. If attempting to get information on permissions for Admin users (including FileAdmins), specifically whether or not the Admin has Notify permission on a particular folder, the FolderAccessList() method should be used instead. This is because of a limitation in MOVEit Transfer that is necessary for performance reasons.

FolderAdd( MOVEitFolder, [InheritPerms] ) - (Integer) - Makes a new MOVEit Transfer folder with the given path and assigns initial permissions based on the given method. The InheritPerms argument defines how permissions should initially be assigned on the new folder. The possible values are:

  • 0 = Do not inherit permissions from parent, and do not copy current permissions from parent.
  • 1 = Do not inherit permissions from parent, but copy current permissions from parent.
  • 2 = Inherit permissions from parent. (Default)
Returns the FolderID of the new folder if successful; 0 otherwise.

FolderAddVirtual( MOVEitFolder, TargetMOVEitFolder, [InheritPerms] ) - (Integer) - Makes a new MOVEit Transfer virtual folder with the given path targeting the given folder and assigns initial permissions based on the given method. The InheritPerms argument defines how permissions should initially be assigned on the new folder. The possible values are:

  • 0 = Do not inherit permissions from parent, and do not copy current permissions from parent.
  • 1 = Do not inherit permissions from parent, but copy current permissions from parent.
  • 2 = Inherit permissions from parent. (Default)
Returns the FolderID of the new virtual folder if successful; 0 otherwise.

FolderChangeSetting( MOVEitFolder, SettingName, NewValue ) - (Boolean) - Attempts to change a setting on the specified folder. Possible values for SettingName are listed below. Returns TRUE if successful; FALSE otherwise.
SettingName | Allowed NewValue
"allowoverwrite" | 0 = no 1 = yes
"cleantype" | 0 = never 2 = every [cleantime] days
"cleantime" | 0-16000 (days)
"enforceuniquefilenames" | 0 = no 1 = yes
"filemaskrule" | 0 = allow all files except masks 1 = deny all files except masks
"filemasks" | comma-delimited list of filemasks (eg, *.txt,frog.*,sni???.ach)
"newtime" | 0-16000(days)
"notedelrcptype" | 0 = none 16 = immediate
"notenewfiletype" | 0 = none 3 = in a batch every [notenewfiletime] minutes 16 = immediate
"notenewfiletime" | 0-16000(minutes)
"notenodownloadtype" | 0 = none 1 = after [notenodownloadtime] hours 2 = after [notenodownloadtime] days 3 = after [notenodownloadtime] minutes
"notenodownloadtime" | 0-16000
"noteupconfirmtype" | 0 = none 3 = in a batch every [noteupconfirmtime] minutes 16 = immediate
"noteupconfirmtime" | 0-16000(minutes)
"parentinheritrights" | 0 = No 1 = Yes
"quota" | 0 = none 1-9,223,372,036,854,775,807 = quota size (in bytes)*
"subfoldercleantime" | 0-16000 (days)
"targetfolder" | MOVEitFolder (only used by virtual folders)

* Values equal to or larger than 1,000,000,000,000,000 may need to be placed in quotes when using VBScript to avoid automatic conversion to an exponential number.

NOTE: Several of the above settings cannot be changed on a virtual folder. If attempted, an error will be returned. Instead, such settings should be changed on the virtual folder's target folder.

FolderDelete( MOVEitFolder ) - (Boolean) - Deletes an existing MOVEit Transfer folder with the given path. Returns TRUE if successful; FALSE otherwise.

FolderFindFiles( Mask, [MOVEitFolder] ) - (Dictionary of MOVEitFileInfo) - Returns a Dictionary object made up of MOVEitFileInfo objects which contain information about files in any available folder whose names match the specified mask. If a "MOVEitFolder" argument is specified, the list will only contain files in folders whose MOVEitFolder path is or begins with the provided MOVEitFolder. (This method can be used to search a tree of directories for files of a certain name.) (The KEYS will contain full file paths.) Returns an empty Dictionary if no files are found or Nothing if the currently authorized user is not permitted to get this information.

FolderFindNewFiles( Mask, [MOVEitFolder] ) - (Dictionary of MOVEitFileInfo) - Returns a Dictionary object made up of MOVEitFileInfo objects which contain information about NEW files in any available folder whose names match the specified mask. (New files listed here would be the same new files normally listed on a user's home page.) If a "MOVEitFolder" argument is specified, the list will only contain files in folders whose MOVEitFolder path is or begins with the provided MOVEitFolder. (This method can be used to search a tree of directories for files of a certain name.) (The KEYS will contain full file paths.) Returns an empty Dictionary if no files are found or Nothing if the currently authorized user is not permitted to get this information.

FolderGetDetails( MOVEitFolder ) - (MOVEitFolderInfo) - Returns a MOVEitFolderInfo object containing information about the specified folder. If the folder does not exist or the currently authorized user is not permitted to access it, then Nothing is returned instead.
NOTE: When executing this method against a virtual folder, the effective value will be returned for several of the MOVEitFolderInfo properties, rather than the actual value. The effective value is that of the virtual folder's target folder rather than the virtual folder itself, and applies to properties like AllowOverwrite and UseUniqueNames, which have no meaning for virtual folders.

FolderGetHome( Username/UserID ) - (MOVEitFolderInfo) - Returns a MOVEitFolderInfo object which corresponds to the named user's home folder. If the user does not exist, does not have a home folder, or the currently authorized user is not an administrator, then Nothing is returned instead. Note that only the user's actual home folder is returned. If you need to determine a user's default folder (which may or may not be the same as the user's home folder), use the UserGetDetails method and examine the DefaultFolderPath property of the resulting MOVEitUserInfo object.

FolderGetTarget( MOVEitFolder ) - (MOVEitFolderInfo) - Returns a MOVEitFolderInfo object which corresponds to the target folder of the specified virtual folder. If the specified folder is not a virtual folder, or the currently authorized user does not have permissions to see the virtual folder's target folder, then Nothing is returned instead.

FolderListFiles( MOVEitFolder ) - (Dictionary of MOVEitFileInfo) - Returns a Dictionary object made up of MOVEitFileInfo objects which contain information about files in the specified folder. (The KEYS will contain full file paths.) Returns an empty Dictionary if no files are found or Nothing if the currently authorized user is not permitted to get this information.

FolderListFilesWithMask( MOVEitFolder, Mask ) - (Dictionary of MOVEitFileInfo) - Returns a Dictionary object made up of MOVEitFileInfo objects which contain information about files in the specified folder whose names match the specified mask. (The KEYS will contain full file paths.) Returns an empty Dictionary if no files are found or Nothing if the currently authorized user is not permitted to get this information.

FolderListFolders( MOVEitFolder ) - (Dictionary of MOVEitFolderInfo) - Returns a Dictionary object made up of MOVEitFolderInfo objects which contain information about subfolders of the specified folder. (The KEYS will contain full folder paths.) Returns an empty Dictionary if no subfolders are found or Nothing if the currently authorized user is not permitted to get this information.

FolderListFoldersAll( [OrgID] ) - (Dictionary of MOVEitFolderInfo) - The "OrgID" argument only applies if the currently authorized user is a SysAdmin; by default this value is the same as the currently authorized user's OrgID. Returns a Dictionary object made up of MOVEitFolderInfo objects which contain information about all folders the currently authorized user can access. (The KEYS will contain full folder paths.) Returns an empty Dictionary if no folders are found or Nothing if the currently authorized user is not permitted to get this information.

FolderRename( MOVEitFolder, NewName ) - (Boolean) - Renames an existing MOVEit Transfer folder with the given path.


clientObj Reference - Ad Hoc Transfer Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

Argument and Return Value Conventions:

  • MOVEitMailbox - A MOVEit Transfer mailbox path. (e.g. "/Mailboxes/Inbox") In place of a MOVEitMailbox string, you may alternatively provide a MailboxID. (e.g. "123456")

MessageBoxAdd( MOVEitMailbox ) - (Integer) - Makes a new MOVEit Transfer mailbox with the given path. Returns the MailboxID of the new folder if successful; 0 otherwise.

MessageBoxDelete( MOVEitMailbox ) - (Boolean) - Deletes an existing MOVEit Transfer mailbox with the given path. Returns TRUE if successful; FALSE otherwise.

MessageBoxListMessageBoxesAll() - (Dictionary of MOVEitFolderInfo) - Returns a Dictionary object made up of MOVEitFolderInfo objects which contain information about all mailboxes the currently authorized user owns. (The KEYS will contain full mailbox paths.) Returns an empty Dictionary if no mailboxes are found or Nothing if the currently authorized user is not permitted to get this information.

MessageBoxListMessages( MOVEitMailbox ) - (Dictionary of MOVEitMessageInfo) - Returns a Dictionary whose KEYS contain a list of Package IDs of all the packages available to the current user in the provided MOVEit Transfer mailbox and whose VALUES contain MOVEitMessageInfo objects describing those packages. Returns an empty Dictionary if no packages are found or Nothing if the currently authorized user is not permitted to get this information.

NOTE: The MOVEitMessageInfo objects returned by this method will NOT contain complete information about the given package. Only "header" information about the package will be included (ID, sendStamp, from, fromRealname, subject, parentID). To get the body and attachment list of a package, use the MessageRead method.

MessageBoxListMessagesNew() - (Dictionary of MOVEitMessageInfo) - Returns a Dictionary whose KEYS contain a list of Package IDs of all new (unread) packages available to the current user and whose VALUES contain MOVEitMessageInfo objects describing those packages. Returns an empty Dictionary if no packages are found or Nothing if the currently authorized user is not permitted to get this information.

NOTE: The MOVEitMessageInfo objects returned by this method will NOT contain complete information about the given package. Only "header" information about the package will be included (ID, sendStamp, from, fromRealname, subject, parentID). To get the body and attachment list of a package, use the MessageRead method.

MessageBoxRename( MOVEitMailbox, NewName ) - (Boolean) - Renames an existing MOVEit Transfer mailbox with the given path. Returns TRUE if successful, FALSE otherwise.

MessageCheckRecipients( oMsg ) - (Dictionary of String) - Given a MOVEitMessageInfo object defining a package to send, checks whether the assigned recipients are valid for the currently authorized user. Returns a dictionary whose KEYS contain a list of invalid recipients (group recipients are prefaced by "GROUP:"). For recipients that are invalid because MOVEit Transfer matched more than one user or group, the dictionary VALUES contain strings that are comma-delimited lists of all matching user or group IDs. For recipients that are invalid for other reasons, the dictionary VALUES contain empty strings. Returns an empty dictionary if all recipients checked OK. Returns Nothing if an error occurred.

MessageComposeNew( [Recipient], [Subject], [Body] ) - (MOVEitMessageInfo) - Returns a new MOVEitMessageInfo object with a state of "Pending". This object can be used to define a new package to be sent through the MOVEit Transfer system. The optional arguments are pre-filled into their associated properties in the new MOVEitMessageInfo object.

When composing a new package, the Body argument can accept HTML. The package content should not be a complete HTML document (containing html, head, and body tags), but should instead simply contain any HTML formatting the package requires (for example: bold tags, span tags with style attributes, list tags, etc). Certain tags will be stripped from the package for security reasons, once received by MOVEit Transfer. These include script tags and embed tags. Also, any instances of the text "Javascript:" will be removed, to prevent inclusion of javascript operations in the package content.

MessageDelete( ID ) - (Boolean) - Deletes package from all of the currently authorized user's mailbox. Returns TRUE if successful, FALSE otherwise.

MessageMove( ID, MOVEitMailbox ) - (Boolean) - Moves package to the provided MOVEit Transfer mailbox. Returns TRUE if successful, FALSE otherwise.

MessageRead( ID ) - (MOVEitMessageInfo) - Returns a MOVEitMessageInfo object describing the package identified by given ID.

MessageSend( oMsg ) - (Boolean) - Sends a package to MOVEit Transfer. The oMsg parameter is the MOVEitMessageInfo object defining the package to send. MessageSend() will return TRUE if successful, FALSE otherwise. This method also sets oMsg to reflect the new package now stored on MOVEit Transfer. (i.e. local paths are replaced with MOVEit Transfer paths, etc.)


clientObj Reference - Report Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

ReportRun( ReportName, LocalPath ) - (Boolean) - Runs the report specified by ReportName and saves it to the path specified by LocalPath. Returns TRUE if successful; FALSE otherwise.

ReportRunCustom( fields, tables, criteria, groupings, order, limit, OutputFormat, LocalPath ) - (Boolean) - Runs a custom report with the specified custom options and output format and saves it to the path specified by LocalPath. Returns TRUE if successful, FALSE if not.
These are the valid output format values:
Value | Description
CSV | Comma-seperated values
XML | XML
HTMLNAKED | Basic, unstyled HTML
HTMLSTYLED | Styled HTML


clientObj Reference - User Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

UserAdd( Username, Password, RealName, Email, Permission, [Notes], [ForcePassChange], [OrgID] ) - (Boolean) - Adds a new user with the provided attributes. The "Permission" argument may be any of the permission values specified in the "UserChangeSetting" function description. The "ForcePassChange" argument is set to FALSE by default; if set to TRUE this argument will force this user to change his or her password the first time the user signs on. The OrgID field is only used if the currently authenticated user is a SysAdmin. Returns TRUE if successful; FALSE otherwise.

UserAddTemporary( Email, Password, RealName, [ForcePassChange] ) - (Boolean) - Adds a new temporary user with the provided attributes. *NOTE* Typically the MOVEit Transfer server will handle creating Temp Users based on its Ad Hoc Transfer settings, making this function obsolete. However, MOVEit Transfer does still support manually adding Temp Users, if desired. The "ForcePassChange" argument is set to FALSE by default; if set to TRUE this argument will force this user to change his or her password the first time the user signs on. Returns TRUE if successful; FALSE otherwise.

UserAddressBookAddGroup( OwnerUsername/OwnerUserID, GroupName/GroupID, [AllowExpansion] ) - (Boolean) - Adds a group to the specified owner's address book. AllowExpansion, when set to "1", makes it so that all members of the added group will appear in the specified owner's recipient list, along with the group itself. Returns TRUE/FALSE.

UserAddressBookAddUser( OwnerUsername/OwnerUserID, Username/UserID ) - (Boolean) - Adds a user to the specified owner's address book. Returns TRUE/FALSE.

UserAddressBookDeleteGroup( OwnerUsername/OwnerUserID, GroupName/GroupID ) - (Boolean) - Deletes a group from the specified owner's address book. Returns TRUE/FALSE.

UserAddressBookDeleteUser( OwnerUsername/OwnerUserID, Username/UserID ) - (Boolean) - Deletes a user from the specified owner's address book. Returns TRUE/FALSE.

UserAddressBookList( Username/UserID ) - (Dictionary of String) - Returns a dictionary object containing the contents of the listed user's address book. Usernames and group names (prefaced by "GROUP:") will appear in the KEYS. User real names OR group IDs will appear in the VALUES.

UserAddressBookLookup( SearchString, "User|Group" ) - (Dictionary of String) - Given a piece of identifying information, determines whether any users or groups matching the search string are members of the currently authorized user's address book. MOVEit Transfer will attempt to match the search string against the Username, RealName, EmailAddress, and UserID fields for a "user" lookup, or the GroupName and GroupID fields for a "group" lookup. The search string can contain "*" and "?" wild cards for enhanced searching. Returns a Dictionary whose KEYS contain one or more usernames or group names if there were matching entities found in the currently authorized user's address book (the dictionary VALUES will contain real names or group IDs, respectively). If no matches were found in the address book, also returns information indicating whether any matching entities can be added to the address book (i.e. are valid package recipients for the currently authorized user). Returns Nothing if there were no matching entities, or if none of the matching entities can be added to the currently authorized user's address book. Returns an empty Dictionary if one or more matching entities can be added to the address book, or if the search string is an email address that doesn't exist on MOVEit Transfer and the currently authorized user is allowed to send to unregistered recipients.

UserCertImportFromBuffer( Username/UserID, Buffer ) - (Boolean) - Imports an SSL public certificate to a user's certificate store. The contents of the certificate should be placed in the Buffer argument, and must be a Base-64 encoded public-only certificate. Do not use DER or other encodings.

UserCertImportFromFile( Username/UserID, Filepath ) - (Boolean) - Imports an SSL public certificate to a user's certificate store from a file. The certificate file must contain a Base-64 encoded public-only certificate. Do not use DER or other encodings.

UserCertKeyAdd( Username/UserID, DataType, Data ) - (Boolean) - Adds an SSL certificate or SSH key to a user's store using provided data. The DataType argument is the data type value of the cert/key data being passed in the Data argument. See the DataType property on the MOVEitCertKeyInfo page for valid data types.

UserCertKeyList( Username/UserID ) - (Dictionary of MOVEitCertKeyInfo) - Lists the SSL certificates and SSH keys in a user's store. Returns a Dictionary containing cert/key IDs as KEYS, and MOVEitCertKeyInfo objects as VALUES. Returns an empty Dictionary if no certs or keys are found, or Nothing if an error occurs.

UserCertKeyRemove( Username/UserID, CertKeyID ) - (Boolean) - Removes an SSL certificate or SSH key from a user's store. The CertKeyID argument is the ID of the cert/key that should be removed.

UserChangePassword( Username/UserID, NewPassword ) - (Boolean) - Changes the password of existing user Username to NewPassword. Returns TRUE if successful, FALSE if not.

UserChangeSetting( Username/UserID, SettingName, NewValue ) - (Boolean) - Attempts to change a setting on the specified user. Possible values for SettingName are listed below. Returns TRUE if successful, FALSE if not.

For more details about these settings, see the MOVEitUserInfo documentation.

SettingName | Allowed NewValue
"adhocquotasize" | 0 = None 1-999,999,999,999,999 = Quota Size in Bytes (*)
"adhocquotatime" | 1-2147483647 = Number of Days
"allowattachments" | 0 = Not Allowed 2 = Use Org Setting
"allowftps" | 0 = Not Allowed 1 = Allowed
"allowhttpsclient" | 0 = Not Allowed 1 = Allowed
"allowhttpsweb" | 0 = Not Allowed 1 = Allowed
"allowinsecureftp" | 0 = Not Allowed 1 = Allowed
"allowssh" | 0 = Not Allowed 1 = Allowed
"authmethod" | 20 = MOVEit Only 10 = External Only 0 = Both
"chrootdefaultfolder" | 0 = Disabled 1 = Enabled
"defaultcustomattachdownloadlimit" | 0 = Use Org Setting 1-2147483647 = Number of Downloads
"defaultcustompackageexpiration" | 1-2147483647 = Number of Hours
"defaultfolder" | Any Valid MOVEit Transfer Folder Path or "0" to reset to user's home folder.
"email" | Any String
"emailformat" | 1 = HTML 2 = Text
"expirationpolicyname" | A string containing the name of an expiration policy to apply, or a blank string to set no policy.
"folderquota" | 0 = None 1-999,999,999,999,999 = Quota Size in Bytes (*)
"forcepasswordchange" | 0 = No 1 = Yes
"homefolder" | Any Valid MOVEit Transfer Folder Path or "0" to assign no home folder.
"language" | Any of the various standard (ISO 639-1) language codes. For example, "en" (English) and "fr" (French). See your current MOVEit Transfer documentation for a complete list of valid codes.
"maxcustomattachdownloadlimit" | 0 = Use Org Setting 1-2147483647 = Number of Downloads
"maxcustompackageexpiration" | 0 = Use Org Setting 1-2147483647 = Number of Hours
"notes" | Any String
"notification" | 0 = No 1 = Yes 2 = Yes+Admin
"permission" | 40 = SysAdmin (not allowed programmatically) 30 = Admin 20 = FileAdmin 10 = User 6 = TempUser
"perpackagequota" | 0 = None 1-999,999,999,999,999 = Quota Size in Bytes (*)
"promptforwizard" | 0 = No 1 = Yes
"realname" | Any String
"requireftpscert" | 0 = Not Required 1 = Required
"requireftpscertpassword" | 0 = Not Required 1 = Required
"requirehttpscert" | 0 = Not Required 1 = Required
"requirehttpscertpassword" | 0 = Not Required 1 = Required
"requiresshkey" | 0 = Not Required 1 = Required
"requiresshkeypassword" | 0 = Not Required 1 = Required
"sendtounregisteredrecip" | 0 = Not Allowed 2 = Use Org Setting
"sharedaccount" | 0 = No 1 = Yes
"username" | Any String

* Values equal to or larger than 1,000,000,000,000,000 may be automatically converted to an exponential format by MySQL, whereby MOVEit Transfer will be unable to read the value.

UserChangeStatus( Username/UserID, NewStatus, [NewStatusNotes] ) - (Boolean) - Changes the status of existing user Username to NewStatus. (The value of NewStatus must be either "active", "suspended", or "template".) The "NewStatusNotes" argument allows the user to provide a reason why the user was locked or unlocked. Returns TRUE if successful, FALSE if not.

UserClone( OrigUsername/OrigUserID, NewUsername, Password, RealName, Email, [Notes], [ForcePassChange] ) - (Boolean) - Adds a new user with the provided attributes by cloning the user with the username provided in "OrigUsername". Returns TRUE if successful; FALSE otherwise.

UserDelete( Username/UserID ) - (Boolean) - Deletes the user specified by Username. Returns TRUE if successful, FALSE if not.

UserGetDetails( Username/UserID ) - (MOVEitUserInfo) - Returns a MOVEitUserInfo object containing information about the specified user. If the user does not exist or the currently authorized user is not permitted to access it, then Nothing is returned instead.

UserKeyImportFromBuffer( Username/UserID, Buffer ) - (Boolean) - Imports an SSH public key to a user's certificate store. The contents of the key should be placed in the Buffer argument and must contain only the public portion of the key.

UserKeyImportFromFile( Username/UserID, Filepath ) - (Boolean) - Imports an SSH public key to a user's certificate store from a file. The certificate file must contain only the public portion of the key.

UserList( [OrgID] ) - (Dictionary of MOVEitUserInfo) - Returns a dictionary object containing a list of users in this organization. (The KEYS will contain usernames, the VALUES will contain MOVEitUserInfo objects.) Returns an empty Dictionary if no users are found or Nothing if the currently authorized user is not permitted to get this information. The "OrgID" argument only applies if the currently authorized user is a SysAdmin; by default this value is the same as the currently authorized user's OrgID.

NOTE: MOVEit Transfer enforces a 1000 entry limit on the number of users that can be returned from a single listing, for performance reasons. If you need to list more than 1000 users, please use the UserListAdvanced function.

To determine if there are more than 1000 users on the system, check the UserListCount value after this function returns. It will contain the total number of users available to the current user.

UserListAdvanced( Page, EntriesPerPage, [PermissionFilter], [StatusFilter], [GroupFilter], [SearchFilter], [SearchString], [OrgID] ) - (Dictionary of MOVEitUserInfo) - Returns a dictionary object containing a list of users in this organization. (The KEYS will contain usernames, the VALUES will contain MOVEitUserInfo objects.) Returns an empty Dictionary if no users are found or Nothing if the currently authorized user is not permitted to get this information. The "OrgID" argument only applies if the currently authorized user is a SysAdmin; by default, this value is the same as the currently authorized user's OrgID.

This function allows more customization in which users are returned then the UserList function. Most importantly, this function supports "paging", which allows programs to separate user lists into more manageable "pages", which contain only some of the results of the list. This is necessary when trying to list a large number of users, as MOVEit Transfer enforces a 1000 entry limit on the number of users that can be returned from a single listing, for performance reasons. The Page argument specifies the page number to return (starting with 1). The EntriesPerPage argument determines the number of entries that will be returned in each page (minimum 5, maximum 1000). Once the first page of the list has returned, the class-level UserListCount property will contain the total number of users available via the provided filters. The number of pages of users that can be retrieved can then be calculated using that value and the EntriesPerPage argument via the following algorithm:

if ((objAPI.UserListCount mod EntriesPerPage) > 0) {
    number_of_pages = (objAPI.UserListCount div EntriesPerPage) + 1
} else {
    number_of_pages = objAPI.UserListCount div EntriesPerPage
}

If the page argument is set to a value higher than the total number of pages available, the first page of results will be returned.

Other capabilities of this function beyond listUsers include the ability to specify various filters and search strings to narrow down the list of returned users. (Use a blank-string argument to skip a filter.) These options are described below:

PermissionFilter - causes only users that match the specified permission filter to be returned.
Values:
Filter Code | Meaning
Blank String | All Users
1 | End Users
2 | Administrators
3 | FileAdmins
4 | GroupAdmins
5 | Temporary Users
6 | SysAdmins

StatusFilter - causes only users that match the specified status filter to be returned.
Values:
Filter Code | Meaning
Blank String | All Users
1 | Active Users
2 | Inactive Users
3 | Users who have never signed on

GroupFilter - causes only users who are members of the specified group to be returned.
Values: any MOVEit Transfer group name, or blank string to skip filter

SearchFilter - used with the SearchString argument; causes only users whose property specified by the search filter code matches the search string value to be returned.
Values:
Filter Code | Meaning
Blank String | All Users
1 | Username
2 | Real Name
4 | Email Address

SearchString - used with the SearchFilter argument; search string to match the user property specified by the search filter code against.
Values: any search string, or blank string to skip filter - multiple character matching can be done with the "*" wildcard character; single character matching can be done with the "?" wildcard character

UserMakeRandomPassword( Username/UserID ) - (String) - Returns a randomly generated password that is acceptable by the password length and strength standards of the currently signed on user's organization. The new password will be tested against the provided username to make sure the two do not match. Use this method to generate an acceptable password when creating a new user.


clientObj Reference - UserGroup Methods

The first method called must be SignOn. Subsequent method calls will be performed in the security context of the signed-on user. Depending upon the type of user signed on, some methods may not be available. For instance, the "UserAdd()" function will return an error if attempted by a User who is not an Administrator.

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

Argument and Return Value Conventions:

  • PermissionString - A "PermissionString" represents the permissions a user or group enjoys on a particular folder and must contain one or more of the following letters: "AEDLNRW". (A=Admin, E=Subfolders, D=Delete, L=List, N=Notify, R=Read, W=Write.)

UserGroupAdd( GroupName ) - (Boolean) - Adds a new user group with the provided name. Returns TRUE if successful; FALSE otherwise.

UserGroupAddressBookAddGroup( OwnerGroupName/OwnerGroupID, GroupName/GroupID, [AllowExpansion] ) - (Boolean) - Adds a group to the specified owner group's address book. AllowExpansion, when set to "1", makes it so that all members of the added group will appear in the owner group members' recipient lists, along with the group itself. Returns TRUE/FALSE.

UserGroupAddressBookAddUser( OwnerGroupName/OwnerGroupID, Username/UserID ) - (Boolean) - Adds a user to the specified owner group's address book. Returns TRUE/FALSE.

UserGroupAddressBookDeleteGroup( OwnerGroupName/OwnerGroupID, GroupName/GroupID ) - (Boolean) - Deletes a group from the specified owner group's address book. Returns TRUE/FALSE.

UserGroupAddressBookDeleteUser( OwnerGroupName/OwnerGroupID, Username/UserID ) - (Boolean) - Deletes a user from the specified owner group's address book. Returns TRUE/FALSE.

UserGroupChangeSetting( GroupName/GroupID, SettingName, NewValue ) - (Boolean) - Attempts to change a setting on the specified group. Possible values for SettingName are listed below. Returns TRUE if successful, FALSE if not.

SettingName | Allowed NewValue
"adminfolderaccess" | 0 = Disabled 1 = Enabled
"adminfolderrelationship" | Permission String - Must contain one or more of the following letters: "AEDLNRW" (A=Admin, E=Subfolders, D=Delete, L=List, N=Notify, R=Read, W=Write)
"admintempuseraccess" | 0 = Disabled 1 = Enabled
"allowattachments" | 0 = Not Allowed 1 = Allowed
"allowsendpackages" | 0 = Not Allowed 1 = Allowed
"description" | Any String
"displayprofile" | Name of a valid display profile to apply, or a blank string to apply none.
"maxmemberadhocquota" | 0 = None 1-999,999,999,999,999 = Quota Size in Bytes (*)
"maxmemberfolderquota" | 0 = None 1-999,999,999,999,999 = Quota Size in Bytes (*)
"maxmemberperpackagequota" | 0 = None 1-999,999,999,999,999 = Quota Size in Bytes (*)
"sendtoregusersnotinaddrbook" | 0 = Disabled 1 = Enabled
"sendtounregrecipients" | 0 = Disabled 1 = Enabled
"tempusersinaddrbookexpansion" | 0 = Disabled 1 = Enabled

* Values equal to or larger than 1,000,000,000,000,000 may be automatically converted to an exponential format by MySQL, whereby MOVEit Transfer will be unable to read the value.

UserGroupChangeMembership( GroupName/GroupID, MemberUsername/MemberUserID, Relationship ) - (Boolean) - Changes the group membership relationship for the given user member in the given group. Possible values for the Relationship argument are listed below. Returns TRUE if successful; FALSE otherwise.

Value | Description
1 | Regular Member
2 | Group Admin

UserGroupDelete( GroupName/GroupID ) - (Boolean) - Deletes the group specified by GroupName. Returns TRUE if successful, FALSE if not.

UserGroupGetDetails( GroupName/GroupID ) - (MOVEitUserGroupInfo) - Returns a MOVEitUserGroupInfo object containing information about the specified group. If the group does not exist or the currently authorized user is not permitted to access it, then Nothing is returned instead.

UserGroupJoin( Username/UserID, GroupName/GroupID ) - (Boolean) - Adds the specified user to the specified group. Returns TRUE if successful, FALSE if not.

UserGroupLeave( Username/UserID, GroupName/GroupID ) - (Boolean) - Removes the specified user from the specified group. Returns TRUE if successful, FALSE if not.

UserGroupList( Username/UserID ) - (Dictionary of MOVEitUserGroupInfo) - Returns a Dictionary object made up of MOVEitUserGroupInfo objects which contain information about the groups to which this user belongs. (The KEYS will contain group names.) Returns an empty Dictionary if no groups are found or Nothing if the currently authorized user is not permitted to get this information.

UserGroupListAll( [OrgID] ) - (Dictionary of MOVEitUserGroupInfo) - Returns a Dictionary object made up of MOVEitUserGroupInfo objects which contain information about all groups in this organization. (The KEYS will contain group names.) The "OrgID" argument only applies if the currently authorized user is a SysAdmin; by default this value is the same as the currently authorized user's OrgID. Returns an empty Dictionary if no groups are found or Nothing if the currently authorized user is not permitted to get this information.

UserGroupListNot( Username/UserID ) - (Dictionary of MOVEitUserGroupInfo) - Returns a Dictionary object made up of MOVEitUserGroupInfo objects which contain information about the groups to which this user DOES NOT belong. (The KEYS will contain group names.) Returns an empty Dictionary if no groups are found or Nothing if the currently authorized user is not permitted to get this information.

UserGroupMemberList( GroupName/GroupID ) - (Dictionary of MOVEitUserInfo) - Returns a Dictionary object made up of MOVEitUserInfo objects which contain information about the users who are members of this group. (The KEYS will contain usernames.) Returns an empty Dictionary if no group members are found, or Nothing if the currently authorized user is not permitted to get this information.


clientObj Reference - Deprecated

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

Deprecated Properties

The following properties may not be supported in future versions of MOVEit Transfer API and are only provided for backwards compatibility with previous versions of MOVEit Transfer API

DotNET - (Boolean) - Indicates whether the remote version of MOVEit Transfer uses .NET syntax. Since version 2.2 of MOVEit Transfer (released May 23, 2002) this option has been TRUE by default. New MOVEit Transfer API applications should not use or reference this option at all.

FormatAny - (String, Read-Only) - A string used as the Format parameter when downloading an ordinary (non-Webpost) file. No longer necessary, as MOVEit Transfer API assumes all downloaded files are not Webposts unless specifically told otherwise.

InstitutionID - (Integer, Read-Only) - Organizations were referred to as "institutions" early in MOVEit Transfer's development, reflecting its initial roots as a product built out of the demands of the financial services market. Use "OrgID" instead of "InstitutionID"

Deprecated Methods

The following methods may not be supported in future versions of MOVEit Transfer API and are only provided for backwards compatibility with previous versions of MOVEit Transfer API

More specifically, many of the following functions rely heavily on the concepts of FileID and FolderID; the actually IDs the MOVEit Transfer system uses to track files and folders in the MOVEit Transfer system. These functions have now been replaced with similar functions which rely more heavily on the concepts of FileName and FolderPath, similar to what users of FTP and FileSystem APIs are used to working with.

AddFolder(NewName, NewFolderType, NewDescription, NewOwner, NewParentID) - Adds a new folder with the given values. Returns the ID of the new folder if successful, 0 if not.
- NewName: The name of the new folder.
- NewFolderType: The numeric foldertype code of the new folder.
- NewDescription: An optional description for the new folder. Use blank string for none.
- NewOwner: An optional username to be owner of the new folder. Use blank string for none.
- NewParentID: An optional folderID of which the new folder will be a child. Use blank or "0" for none.

AddUser(NewUsername, NewPass, NewPassAgain, NewInstID, NewRealName, NewEmail, NewPermission, Notes, [MustChangePassword]) - Adds a new user with the given values. Returns TRUE if successful, FALSE if not.
- NewUsername: The username of the new user.
- NewPass: The password of the new user.
- NewPassAgain: Repeat of the password for verification purposes.
- NewInstID: The numeric code of the organization the new user will belong to.
- NewRealName: The display name of the new user.
- NewEmail: The email address of the new user.
- NewPermission: The numeric permission code of the new user.
- Notes: Any notes to be added with the user.
- MustChangePassword: Optional Boolean (default: FALSE) which will force this user to reset his or her password the next time this user signs on if set to TRUE.

NewPermission Value | User Type
10 | User
20 | FileAdmin
30 | Admin
40 | SysAdmin (Org #0 only!)

ChangeFolderMaintenanceSettings(FolderID,cleanType,cleanTime,newTime, responsePath,quota,quotaLevel) - Changes the maintenance settings of the given folder with the specified values. Set cleanType to "0" for no automated cleaning, or "2" to clean old files after X days. (X specified by cleanTime) Set quotaLevel to "MB" for megabytes, or "KB" for kilobytes. Set quota to "0" for no quota. Returns TRUE if successful, FALSE if not.

ChangeFolderNotificationSettings(FolderID,sendType,sendTime,recType,recTime, postUpNoteType) - Changes the notification settings of the given folder with the specified values. Notification types should adhere to the values below. Returns TRUE if successful, FALSE if not.

Notification Types | Description
0 | No notifications
3 | Send batch notification message after X minutes (not available for post upload notifications)
16 | Send notification message immediately

ChangePassword(Username, NewPass) - Changes the password of the user specified by Username to NewPass. Returns TRUE if successful, FALSE if not.

ChangeUserDetails(Username,newRealName,newEmail,newPermission,newNotes) - Changes the details of the given user account with the specified values. (see AddUser method for valid Permission codes) Returns TRUE if successful, FALSE if not.

ChangeUserStatus(Username,newStatus,newStatNotes) - Changes the status of the given user account. newStatus should be set to either "active" to allow the user to signon, or "suspended" to prevent the user from signing on. Any notes you may wish to include should be put in newStatNotes. Returns TRUE if successful, FALSE if not.

CopyFile(FileID, NewFolderID[, ExportType]) - Copies the given file to the given folder. Returns the ID of the newly generated file if successful, 0 if not. If the given file is a webpost, ExportType defines how the webpost will be exported to the given folder. Possible values are:
- 3: Export webpost as a CSV file
- 4: Export webpost as an XML file

DeleteFile(FileID) - Marks this file as deleted within MOVEit Transfer. Returns TRUE if successful, FALSE if not.

DeleteFolder(FolderID) - Deletes the folder specified by FolderID. Returns TRUE if successful, FALSE if not.

DeleteUser(Username) - Deletes the user specified by Username. Returns TRUE if successful, FALSE if not.

GetFileDetails(FileID) - Returns a MOVEitFileInfo object containing details about a file--but not the file's contents.

GetFolderDetails(FolderID) - Returns a MOVEitFolderInfo object containing details about a particular folder, including statistics such as new/old files.

GetFolderIDFromParentTypeName(ParentID, FolderType, FolderName) - Returns the ID of a folder specified by the three arguments.
- ParentID is the numeric ID of the folder's parent.
- FolderType is the numeric folder type code of the folder.
- FolderName is the name of the folder.

GetFile(FileID, Format) - Given a unique seven-digit file identifier and format information, this method retrieves a file and returns it as a byte array.

GetFileToDisk(FileID, Format, PathSpec) - Given a unique seven-digit file identifier, format information and a string describing a PathSpec (see below), this method retrieves a file and saves it locally to a specific location. Returns TRUE if successful, FALSE if not.

GetUserDetails(FolderID) - Returns a MOVEitUserInfo object containing details about a particular user.

ListFolders() - Returns a Dictionary containing a list of MOVEitFolderInfo objects describing all folders the user is permitted to see, and statistics such as new/old files.

ListFiles(FolderID, bNewOnly) - Returns a Dictionary containing a MOVEitFileInfo object for each file in the folder. If bNewOnly is True, the list is further restricted to files that have never been downloaded. If FolderID is 0, all folders for which the user has permission are searched.

LocalFileExists(FileID, Format, PathSpec) - Convenience function to check whether or not the result of a "SaveFileAs" function already exists or was created successfully. Returns TRUE if file already exists - FALSE if it does not.

LocalFilePath(FileID, Format, PathSpec) - Convenience function to get the path a "SaveFileAs" function called with the same arguments would use. Returns a "static path" if the PathSpec is valid, otherwise returns a blank string.

MoveFile(FileID, NewFolderID[, ExportType]) - Moves the given file to the given folder. Returns TRUE if successful, FALSE if not. If the given file is a webpost, ExportType defines how the webpost will be exported to the given folder. Possible values are:
- 3: Export webpost as a CSV file
- 4: Export webpost as an XML file

PutFile(FolderID, UploadAsFilename, Comment, Buffer) - Uploads data to a folder on a MOVEit Transfer server. Buffer is a byte array. Returns the new file ID of the MOVEit DMZ file, or "0" if the save was not successful.

PutFileByVal(FolderID, UploadAsFilename, Comment, Buffer, bBinary) - Uploads data to a folder on a MOVEit Transfer server. Buffer is a string containing either text or binary data. bBinary should be 1 if Buffer contains binary data, or 0 if it contains text data. Returns the new file ID of the MOVEit Transfer file, or "0" if the save was not successful.
NOTE: Those using MOVEit Transfer API inside a VBScript application should use this function rather than PutFile. PutFile takes its buffer by reference, which VBScript sometimes has difficulty doing. PutFileByVal takes its buffer by value, which VBScript is generally more comfortable with.

PutFileFromDisk(FolderID, Format, Comment, Path) - Given the full path of a local file, the name of a folder and a destination format, this method uploads the file into the MOVEit Transfer server. Returns the new file ID of the MOVEit Transfer file, or "0" if the save was not successful.

PutFileFromDiskAs(FolderID, Format, Comment, Path, UploadAsName) - Given the full path of a local file, the name of a folder and a destination format, this method uploads the file into the MOVEit Transfer server. This method uses UploadAsName as the name which the file is saved on DMZ as, instead of the actual name of the file on disk. Returns the new file ID of the MOVEit Transfer file, or "0" if the save was not successful.

RenameFile(FileID, FolderID, newName) - Renames the given file in the given folder with the given name. Returns TRUE if successful, FALSE if not.

RenameFolder(FolderID, newName) - Renames the given folder with the given name. Returns TRUE if successful, FALSE if not.


clientObj Reference - Status Codes

The following is a list of possible status codes that MOVEit Transfer API can receive during its transactions with a MOVEit Transfer server.

SIL_ERROR_NONE = 0
SIL_ERROR_INTERNAL = 100
SIL_ERROR_OTHER = 200
SIL_ERROR_INVALID_USERNAME = 2010
SIL_ERROR_NOPERM = 2020
SIL_ERROR_INVALID_CREDENTIALS = 2025
SIL_ERROR_DATABASE_UPDATE = 2040
SIL_ERROR_DATABASE_OPEN = 2042
SIL_ERROR_INVALIDUSER = 2050
SIL_ERROR_INVALID_FOLDERID = 2056
SIL_ERROR_INVALID_FILEID = 2058
SIL_ERROR_INVALID_FILETYPE = 2060
SIL_ERROR_INVALID_PARENTID = 2068
SIL_ERROR_INVALID_PARENTINHERITRIGHTS = 2069
SIL_ERROR_INVALID_FOLDERTYPE = 2070
SIL_ERROR_INVALID_FOLDERNOTETYPE = 2071
SIL_ERROR_INVALID_INSTID = 2072
SIL_ERROR_INVALID_USERPERM = 2074
SIL_ERROR_INVALID_FOLDERNOTETIME = 2075
SIL_ERROR_INVALID_EMAILADDRESS = 2076
SIL_ERROR_INVALID_FOLDERSYSTEMTYPE = 2080
SIL_ERROR_INVALID_FOLDERCLEANTIME = 2085
SIL_ERROR_INVALID_FOLDERCLEANTYPE = 2086
SIL_ERROR_INVALID_FOLDERNEWTIME = 2088
SIL_ERROR_DUPLICATE_FOLDERNAME = 2090
SIL_ERROR_DUPLICATE_FILENAME = 2092
SIL_ERROR_INVALID_FOLDERNAME = 2100
SIL_ERROR_INVALID_FILENAME = 2102
SIL_ERROR_FILESYSTEM_FOLDERCREATE = 2210
SIL_ERROR_FILESYSTEM_FOLDERDELETE = 2220
SIL_ERROR_FILESYSTEM_FILECREATE = 2230
SIL_ERROR_FILESYSTEM_FILECOPY = 2234
SIL_ERROR_FILESYSTEM_FILEMOVE = 2236
SIL_ERROR_FILESYSTEM_FILEDELETE = 2240
SIL_ERROR_FILESYSTEM_FILEOPEN = 2244
SIL_ERROR_FILESYSTEM_IN_USE = 2250
SIL_ERROR_FILESYSTEM_NOT_FOUND = 2251
SIL_ERROR_INVALID_XMLREQUEST = 2310
SIL_ERROR_INVALID_TRANSACTION = 2320
SIL_ERROR_INVALID_PASSWORD = 2410
SIL_ERROR_INVALID_USERREALNAME = 2412
SIL_ERROR_INVALID_CLIENT_CERT = 2414
SIL_ERROR_NO_CLIENT_CERT = 2415
SIL_ERROR_INVALID_SSHKEY = 2420
SIL_ERROR_UPLOAD_INVALIDPARMS = 2430
SIL_ERROR_INVALID_INSTFORMRESP = 2500
SIL_ERROR_INVALID_INSTHISTTIME = 2510
SIL_ERROR_INVALID_HOSTPERMIT = 2520
SIL_ERROR_INVALID_HPPRIORITY = 2522
SIL_ERROR_INVALID_HPPERMITID = 2524
SIL_ERROR_INVALID_HPHOST = 2526
SIL_ERROR_INVALID_HPRULE = 2528
SIL_ERROR_INVALID_COMMENT = 2670
SIL_ERROR_DUPLICATE_FOLDERUSER = 2674
SIL_ERROR_INVALID_FOLDERUSER = 2678
SIL_ERROR_INVALID_PASSPHRASE = 2680
SIL_ERROR_DUPLICATE_INSTNAME = 2684
SIL_ERROR_REGISTRY_KEYCREATE = 2688
SIL_ERROR_INVALID_INSTNAME = 2692
SIL_ERROR_REGISTRY_KEYDESTROY = 2696
SIL_ERROR_REGISTRY_KEYCHANGE = 2698
SIL_ERROR_UPLOAD_FILECREATE = 2700
SIL_ERROR_UPLOAD_MISC = 2710
SIL_ERROR_CANT_ACCESS_SERVER = 2800
SIL_ERROR_SERVER_APP = 2801
SIL_ERROR_INVALID_PARAMETER = 2850
SIL_ERROR_ILLEGAL_TRANSLATION = 2904
SIL_ERROR_FAILED_TRANSLATION = 2908
SIL_ERROR_BROWSER_FILEPUSH = 2954
SIL_ERROR_INVALID_FILEBUNDLETYPE = 2958
SIL_ERROR_BUNDLE_EMPTYFILES = 2964
SIL_ERROR_INVALID_DEBUGLEVEL = 2968
SIL_ERROR_INVALID_URL = 2972
SIL_ERROR_ILLEGAL_USERATHOST = 2976
SIL_ERROR_UNAUTHORIZED_USER = 2978
SIL_ERROR_UPLOAD_EMPTYFILE = 2980
SIL_ERROR_QUOTA_EXCEEDED = 2982
SIL_ERROR_INVALID_FOLDERACCESS = 2984
SIL_ERROR_INVALID_NOTE = 2988
SIL_ERROR_INVALID_GROUPNAME = 3108
SIL_ERROR_DUPLICATE_GROUPNAME = 3112
SIL_ERROR_INVALID_GROUPID = 3116
SIL_ERROR_EXPIRED_SESSION = 3200
SIL_ERROR_FAILED_WEB_REQUEST = 3201
SIL_ERROR_PROXY_NOT_AUTHORIZED = 3202
SIL_ERROR_ENCRYPTION = 3300
SIL_ERROR_LICENSING = 3400
SIL_ERROR_EMAIL = 3500
SIL_ERROR_DOWNLOAD = 3600
SIL_ERROR_HASH_CHECK_FAILED = 3601
SIL_ERROR_DELETE_FILE = 3610
SIL_ERROR_SCRIPT = 3700
SIL_ERROR_UPLOAD = 3800
SIL_ERROR_LICENSE = 3900
SIL_ERROR_ALREADY_RUNNING = 4000
SIL_ERROR_ALREADY_CHECKED_OUT = 4010
SIL_ERROR_NOT_CHECKED_OUT = 4011
SIL_ERROR_CANNOT_CHECK_IN = 4015
SIL_ERROR_DOES_NOT_EXIST = 4020
SIL_ERROR_STOPPED_BY_USER = 4030
SIL_ERROR_SSL_WEAK = 4100
SIL_ERROR_NO_THUMBNAIL = 4200
SIL_ERROR_INVALID_AUTHMETHOD = 4300
SIL_ERROR_INVALID_RADIUS_SETTINGS = 4301
SIL_ERROR_CREATE_RADIUS_USER_FAIL = 4302
SIL_ERROR_AUTHED_OFF_BACKUP_RADIUS = 4303
SIL_ERROR_INVALID_LDAP_SETTINGS = 4311
SIL_ERROR_CREATE_LDAP_USER_FAIL = 4312
SIL_ERROR_AUTHED_OFF_BACKUP_LDAP = 4313
SIL_ERROR_BAD_MESSAGE = 4400


MOVEitCertKeyInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

Data - (String, Read-Only) - The cert/key data.

DataType - (Short, Read-Only) - The data type of this cert/key. Possible types are:

  • 1 = SSL thumbprint
  • 2 = SSL CN
  • 4 = SSH fingerprint

ID - (Integer, Read-Only) - ID of this cert/key.

OrgID - (Integer, Read-Only) - ID of the organization this cert/key exists in.

OwnerRealname - (String, Read-Only) - The real name of the person or automated account (e.g. "John Smith") with which this cert/key is associated.

OwnerUserID - (String, Read-Only) - The user ID of the person or automated account (e.g. "jsmithr8my61b5oj") with which this cert/key is associated.

OwnerUsername - (String, Read-Only) - The username of the person or automated account (e.g. "jsmith") with which this cert/key is associated.

Timestamp - (String, Read-Only) - The date and time this cert/key was added.


MOVEitFileInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

DownloadCount - (Integer, Read-Only) - Number of times this file has been downloaded.

FileSize - (Double, Read-Only) - Size in bytes of this file.

FolderID - (Integer, Read-Only) - ID of the folder this file is currently in.

ID - (Integer, Read-Only) - The unique ID of this file. Also known as the tracking number.

Name - (String, Read-Only) - The name of this file. Example: "readme.txt". In folders where "enforce unique filenames" is turned off, this will generally be a combination of the original file name and the file ID. Example: "readme_1234567.txt".

OriginalFilename - (String, Read-Only) - The original name of this file. Example: "readme.txt". In folders where "enforce unique filenames" is turned off, there may be several files with the same originalfilename.

Path - (String, Read-Only) - The full path of this file. Example: "/Distribution/Software 2003/readme.txt". In folders where "enforce unique filenames" is turned off, this will generally be a combination of the original file name and the file ID. Example: "/Distribution/Software 2003/readme_1234567.txt".

OrgID - (Integer, Read-Only) - ID of the organization this event occured in.

UploadAgentBrand - (String, Read-Only) - Brand of the agent used to upload this file. Example: "Netscape".

UploadAgentVersion - (String, Read-Only) - Version of the agent used to upload this file. Example: "6.02b".

UploadComment - (String, Read-Only) - Contains any optional comments used to describe this upload.

UploadIntegrity - (Short, Read-Only) - 1 if file was uploaded with integrity checking, 0 if file was not. Integrity checks are automatically conducted between MOVEit clients and MOVEit Transfer. For example, all uploads and downloads performed by MOVEit Transfer API are conducted with integrity checks. Integrity checks are useful because they prove that a file transferred through the MOVEit system is identical to the original when it arrives at its destination. (When used with authentication, integrity checks provide non-repudiation.)

UploadIP - (String, Read-Only) - The IP Address, if any, from which this file was uploaded.

UploadRealname - (String, Read-Only) - The real name of the person or automated account (e.g. "John Smith") which uploaded this file.

UploadStamp - (String, Read-Only) - The date and time this file was uploaded.

UploadUsername - (String, Read-Only) - The username of the person or automated account (e.g. "jsmith") which uploaded this file.

Deprecated Properties

CurrentFileType - (String, Read-Only) - Describes the type of file viewed. Possible values: 3 = Webpost in CSV format, 4 = Webpost in XML format, 6 = Audit Log Archive in XML format, 31 = Raw file (no conversion)

InstID - (Integer, Read-Only) - ID of the organization this event occured in. Use "OrgID" instead.

OriginalFileType - (String, Read-Only) - Describes what type of file this file was originally. Possible values: 3 = Webpost in CSV format, 4 = Webpost in XML format, 6 = Audit Log Archive in XML format, 31 = Raw file (no conversion)


MOVEitFolderInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

AllowOverwrite - (Short, Read-Only) - Indicates whether files of the same name will silently overwrite existing files of the same name. An overwrite operation actually deletes the old file and then creates a new ID for the new file. This setting only applies if the UseUniqueNames property is Yes. (0 = No, 1 = Yes)

CleanType - (Short, Read-Only) - Describes what kind of automated clean up is regularly performed on this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

CleanTime - (Short, Read-Only) - Describes what kind of automated clean up is regularly performed on this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

Description - (String, Read-Only) - Description of this folder.

FileMaskRule - (Short, Read-Only) - Indicates whether files uploaded to the folder that match the configured filemasks will be allowed or denied. (0 = allow all except masks, 1 = deny all except masks)

FileMasks - (String, Read-Only) - Comma-delimited list of filemasks which all files uploaded to the folder will be matched against. Matched files will be allowed or denied based on the FileMaskRule setting. Filemasks may contain the multi-wildcard "*" and single-wildcard "?" characters. (eg, *.txt,frog.*,sni???.ach)

ID - (Integer, Read-Only) - The unique ID of this folder. Usually a six-digit number.

Name - (String, Read-Only) - The (short) name of this folder. Example: "Survey Results".

NewTime - (Short, Read-Only) - The maximum amount of time, in days, that files in this folder are considered "new".

NoteDelRcpType - (Short, Read-Only) - Describes what kind of delivery recipient notifications are used in this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

NoteNewFileType - (Short, Read-Only) - Describes what kind of new file notifications are used in this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

NoteNewFileTime - (Short, Read-Only) - Describes how often new file batch notifications are sent, if used. (See clientObj.FolderChangeSetting() setting table for description of values.)

NoteNoDownloadType - (Short, Read-Only) - Describes what kind of "no download" notifications are used in this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

NoteNoDownloadTime - (Short, Read-Only) - Describes how often "no download" batch notifications are sent, if used. (See clientObj.FolderChangeSetting() setting table for description of values.)

NoteUpConfirmType - (Short, Read-Only) - Describes what kind of upload confirmation notifications are used in this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

NoteUpConfirmTime - (Short, Read-Only) - Describes how often upload confirmation batch notifications are sent, if used. (See clientObj.FolderChangeSetting() setting table for description of values.)

OrgID - (Integer, Read-Only) - The ID of the organization this folder resides in.

Owner - (String, Read-Only) - The username of this folder's owner. (Home folders always have an owner.)

ParentID - (Integer, Read-Only) - Folder ID of this folder's parent.

ParentInheritRights - (Short, Read-Only) - Indicates whether this folder inherits access permissions from its parent folder. (0 = No, 1 = Yes)

Path - (String, Read-Only) - The (long) name of this folder. Example: "/Distribution/January 2002/Survey Results".

Permission - (String, Read-Only) - A MOVEit Permission String describing the currently authorized user's permissions on this folder. (A Permission String represents the permissions a user or group enjoys on a particular folder and must contain one or more of the following letters: "AEDLNRW". (A=Admin, E=Subfolders, D=Delete, L=List, N=Notify, R=Read, W=Write.))

Quota - (Double, Read-Only) - The folder quota, if any, in bytes. (Unlimited quotas are represented with a value of 0.)

SubfolderCleanTime - (Short, Read-Only) - Describes what kind of automated subfolder clean up is regularly performed on this folder. (See clientObj.FolderChangeSetting() setting table for description of values.)

SystemType - (Short, Read-Only) - Indicates if this folder is under the control of users or the MOVEit Transfer system. (System folders are automatically created when an organization is added and deleted when an organization is deleted.) A value of 0 indicates a user folder; a value of 1 indicates a system folder.

UseUniqueNames - (Short, Read-Only) - Indicates whether files in this folder must have unique names. If this setting is set to No, then FTP, SSH and API users will see files in this folder listed as "[OnlyName]_[FileID].[OnlyExt]". For example, given two copies of "readme.txt" with fileID's of "111111" and "222222", a directory listing would display "readme_111111.txt" and "readme_222222.txt" if this option was set to No. (0 = No, 1 = Yes)

Deprecated Properties

FolderType - (Short, Read-Only) - Indicated what kind of folder this is. Possible value: 4=Distribution, 7=Home, 10=Archive, 19=WebPost

InstID - (Integer, Read-Only) - ID of the organization this event occured in. Use "OrgID" instead.


MOVEitMessageInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

MessageInfo objects represent Ad Hoc Transfer packages and any associated attachments.

Attachments - (Dictionary, Read-Only) - Returns a dictionary containing attachment elements. When SendState is "Pending" the KEYS are strings with local file paths or filenames. When SendState is "Sent" the KEYS are strings with file IDs. When SendState is "Pending" the VALUES are strings with local file paths or actual buffers of any type. When SendState is "Sent" the VALUES are MOVEitFileInfo objects.

Body - (String) - The body of the package. MOVEit Transfer stores packages as HTML, allowing HTML formatting of package text to be fully maintained. This property will contain the complete HTML source of the package body.

When composing a new package, this property can also accept HTML. The package content should not be a complete HTML document (containing html, head, and body tags), but should instead simply contain any HTML formatting the package requires (for example: bold tags, span tags with style attributes, list tags, etc). Certain tags will be stripped from the package for security reasons, once received by MOVEit Transfer. These include script tags and embed tags. Also, any instances of the text "Javascript:" will be removed, to prevent inclusion of javascript operations in the package content.

CustomExpiration - (Short) - If allowed to set custom expiration values on packages by the Organization, then this value is the number of hours it will take for the package to expire after being sent. A value of "0" indicates that no custom expiration should be used for the package. The default value is "-1". If the Organization is configured with a global package expiration, then "-1" will mean to use the user's default custom expiration value. Otherwise, if no global package expiration is set for the Organization, then "-1" will be interpreted as no custom expiration.

DeliveryReceipts - (Short) - When set to "1", the sender of the package will be notified when a recipient reads a package for the first time. The sender will also be notified if the package is deleted (either by the user or the system) before a recipient has viewed it. Default is "0".

From - (String, ReadOnly) - Returns the username of the currently authorized user (if SendState is "Pending") or the user from which this package was sent (if SendState is "Sent").

FromID - (String, ReadOnly) - Returns the user ID from which this package was sent (if SendState is "Sent").

FromRealname - (String, ReadOnly) - Returns the user's real name from which this package was sent (if SendState is "Sent").

ID - (Integer, Read-Only) - If SendState is "Sent", returns the unique ID of the package.

MaxAttachDownloads - (Short) - If allowed to set attachment download limits by the Organization, then this value is the number of times each attachment may be downloaded. A value of "0" indicates that there is no limit on the number of times an attachment may be downloaded. The default value is "-1". If the Organization is configured with global max download limit value, then "-1" will mean to use the user's default attachment download limit value. Otherwise, if no global max download limit is set for the Organization, then "-1" will be interpreted as no limit on attachment downloads.

NoReplyAll - (Short) - When set to "1", recipients of the package will not be able to use the Reply All feature to reply to the package. This feature is meant to keep recipients of "broadcast" packages from replying back to entire list of recipients. Default is "0".

ParentID - (Integer, Read-Only) - If SendState is "Sent", returns the unique ID of the parent package to the package.

Recipients - (Dictionary, ReadOnly) - Returns a dictionary containing TO, CC and BCC elements. The KEYS are strings which represent either usernames (e.g. "jsmith"), email addresses or group names. All KEYS are prefixed with either "CC:", "BCC:" or "TO:". Group names MUST be prefixed with "Group:". (e.g. "CC:Group:West Coast") When "SendState" is "Pending" the VALUES will not be filled in. When "SendState" is "Sent" the VALUES will be either a username or a group ID.

RecipientsString - (String, ReadOnly) - Returns a comma-delimited list of major recipients of the package. Should only be used for display purposes when listing packages.

SendStamp - (String, ReadOnly) - Returns the time this package was sent if SendState is "Sent". Returns a blank string if SendState is "Pending".

State - (String, ReadOnly) - Either "Sent" or "Pending"

Subject - (String) - The subject of the package.


MOVEitMessageInfo Reference - Methods

The syntax used to describe the methods below is as follows:

Name(Required Argument, [Optional Argument]) - (Type of Return Value) - Description of method

Attachment and Recipient MessageInfo functions are only allowed when SendState is "Pending"

AttachmentAdd(Path) - (Boolean) - Adds the specified entry to the list of attachments to be sent along with the package. Returns TRUE/FALSE.

AttachmentAddBuffer(Buffer, Filename) - (Boolean) - Adds the specified entry to the list of attachments to be sent along with the package. Returns TRUE/FALSE.

RecipientAddGroup(GroupName/GroupID, ["To|CC|BCC"]) - (Boolean) - Adds the specified entry to the list of recipients. Returns TRUE/FALSE.

RecipientAddUser(Username/RealName/EmailAddress/UserID, ["To|CC|BCC"]) -(Boolean) - Adds the specified entry to the list of of recipients. Returns TRUE/FALSE.


MOVEitSAMLInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

IdentityProviders - (Collection, Read-Only) - A collection of SAML Identity Providers configured in the organization (see the SAMLIdentityProvider section).

SPAssertionConsumerServices - (Collection, Read-Only) - A collection of SAML Assertion Consumer Service endpoints made available by the organization (see the SAMLServiceEndpoint section).

SPEntityID - (String, Read-Only) - The Service Provider Entity ID of the MOVEit Transfer organization. This value is used to identify the server as a SAML Service Provider to Identity Providers.

SPSingleLogoutServices - (Collection, Read-Only) - A collection of SAML Single Logout Service endpoints made available by the organization (see the SAMLServiceEndpoint section).

SAMLIdentityProvider Reference

This object describes a SAML Identity Provider configured in the MOVEit Transfer organization.

ArtifactResolutionServices - (Collection, Read-Only) - A collection of SAML Artifact Resolution Service endpoints made available by the Identity Provider (see the SAMLServiceEndpoint section).

DisplayName - (String, Read-Only) - The display name of the Identity Provider entry in MOVEit Transfer.

EntityID - (String, Read-Only) - The Entity ID of the Identity Provider. This value is used to identify the server to SAML Service Providers, and other Identity Providers.

SingleLogoutServices - (Collection, Read-Only) - A collection of SAML Single Logout Service endpoints made available by the Identity Provider (see the SAMLServiceEndpoint section).

SingleSignonServices - (Collection, Read-Only) - A collection of SAML Single Signon Service endpoints made available by the Identity Provider (see the SAMLServiceEndpoint section).

SAMLServiceEndpoint Reference

This object describes a SAML service endpoint.

Binding - (SAMLServiceBinding, Read-Only) - The binding type of the service endpoint. Binding types are:

  • 1 - HTTP-Post
  • 2 - HTTP-Redirect
  • 3 - HTTP-Artifact
  • 4 - SOAP

Uri - (String, Read-Only) - The location of the service endpoint.


MOVEitUserInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

AdHocQuotaSize - (Double, Read-Only) - The user's Ad Hoc Transfer quota size, if any, in bytes. (Unlimited quotas are represented with a value of 0.)

AdHocQuotaTime - (Integer, Read-Only) - The user's Ad Hoc Transfer quota timespan value. Determines how many days worth of packages will count against the user's Ad Hoc Transfer quota.

AllowAttachments - (Short, Read-Only) - Whether the user prohibited from adding attachments to packages. 0 if prohibited; 2 if use organization setting.

AllowFTPS - (Short, Read-Only) - Whether the user is allowed to access the MOVEit Transfer FTPS (FTP-over-SSL) interface. 1 if allowed; otherwise, 0.

AllowHTTPSClient - (Short, Read-Only) - Whether the user is allowed to access the MOVEit Transfer HTTPS interface using clients other than a web browser. 1 if allowed; otherwise, 0.

AllowHTTPSWeb - (Short, Read-Only) - Whether the user is allowed to access the MOVEit Transfer HTTPS interface using a web browser. 1 if allowed; otherwise, 0.

AllowInsecureFTP - (Short, Read-Only) - Whether the user is allowed to access the MOVEit Transfer insecure FTP interface. NOTE: Insecure FTP access also requires that insecure FTP be enabled and the user's IP address be allowed to access it. This is done through the MOVEit Transfer Config utility on the server itself. 1 if allowed; otherwise, 0.

AllowSSH - (Short, Read-Only) - Whether the user is allowed to access the MOVEit Transfer SFTP (FTP-over-SSH) interface. 1 if allowed; otherwise, 0.

AuthMethod - (Short, Read-Only) - When the user's organization is using a "mixed" authentication mode (RADIUS then MOVEit or LDAP then MOVEit), this setting determines how the user will be authenticated. See the value table in the clientObj.UserChangeSetting() method description for a complete list of values.

ChrootDefaultFolder - (Short, Read-Only) - When set to 1, the user's default folder will appear to be the root of the folder tree when a user signs on to MOVEit Transfer via the FTP or SSH interfaces. This prevents the user from seeing any other folders but those that are underneath their default folder. 1 if enabled; otherwise, 0.

DefaultCustomAttachDownloadLimit - (Integer, Read-Only) - The default value for setting custom attachment download limits on packages. This setting determines the default value for how many times each attachment file on a package can be downloaded for packages sent by the user. This setting will only take effect if custom download limits are enabled by the user's organization. A value of 0 indicates to use the organization's default custom attachment download limit.

DefaultCustomPackageExpiration - (Integer, Read-Only) - The default value for setting custom expiration times on packages. This setting determines the default value for configuring the number of days a package will be valid for. This setting will only take effect if custom expirations are enabled by the user's organization.

DefaultFolderPath - (String, Read-Only) - The full path of this user's default folder. (Unless explicitly specified, a user's default folder will normally be their Home folder.) This value will be blank for users who do not have a home or default folder, such as temporary users.

Email - (String, Read-Only) - This user's email address. May be blank.

EmailFormat - (Short, Read-Only) - This user's preferred notification email format. (1=HTML, 2=Text)

ExpirationPolicyName - (String, Read-Only) - The name of the expiration policy currently assigned to this user. Returns a blank string if no policy is assigned.

FolderQuota - (Double, Read-Only) - The user's folder quota, if any, in bytes. (Unlimited quotas are represented with a value of 0.)

ForcePasswordChange - (Short, Read-Only) - Indicates if this user will be forced to change his or her password the next time they sign onto the system. (0=no, 1=yes)

HomeFolderPath - (String, Read-Only) - The full path of this user's home folder. This value will be blank for users who do not have a home folder, such as temporary users.

ID - (String, Read-Only) - The ID of this user. Used to identify the user internally and link the account to other elements on the system, such as folders and files. Example: "gjonesr8my61b5oj".

Language - (String, Read-Only) - Standard (ISO 639-1) language code of user's current language. For example, "en" (English) and "fr" (French). See your current MOVEit Transfer documentation for a complete list of valid codes.

LastLoginStamp - (String, Read-Only) - Last time this user signed on.

MaxCustomAttachDownloadLimit - (Integer, Read-Only) - The maximum allowed value for setting custom attachment download limits on packages. This setting determines the max value for how many times each attachment file on a package can be downloaded for packages sent by the user. This setting will only take effect if custom download limits are enabled by the user's organization. A value of 0 indicates to use the organization's max value for setting custom attachment download limits on packages.

MaxCustomPackageExpiration - (Integer, Read-Only) - The maximum allowed value for setting custom expiration times on packages. This setting determines the max value for configuring the number of days a package will be valid for. This setting will only take effect if custom expirations are enabled by the user's organization. A value of 0 indicates to use the organization's max value for setting custom expirations on packages.

Notes - (String, Read-Only) - Optional user description.

Notification - (Short, Read-Only) - Indicates if this user receives email notifications. (0=no, 1=yes, 2=yes+admin) See the value table in the clientObj.UserChangeSettings() method description for a complete list of values.

OrgID - (Integer, Read-Only) - The ID of the organization this user belongs to.

PasswordChangeStamp - (String, Read-Only) - Last time this user's password was changed.

Permission - (Integer, Read-Only) - Indicates what class of user this is:
6 = TempUser, 10 = (End) User, 20 = FileAdmin, 30 = Admin, 40 = SysAdmin

PerPackageQuota - (Double, Read-Only) - The user's Per-Package quota, if any, in bytes. (Unlimited quotas are represented with a value of 0.)

PromptForWizard - (Short, Read-Only) - Whether the user will be prompted to install the File Transfer Wizard if they do not already have it installed. 1 if enabled; otherwise, 0.

Realname - (String, Read-Only) - The "real" name of this user. Example: "George Jones" Depending on this organization's folder naming conventions, this name may or may not the name of this user's home folder as well.

RequireFTPSCert - (Short, Read-Only) - Whether the user is required to submit an SSL client certificate when accessing the MOVEit Transfer FTPS interface. 1 if required; otherwise, 0.

RequireFTPSCertPassword - (Short, Read-Only) - Whether the user is required to submit a password as well when submitting an SSL client certificate to the MOVEit Transfer FTPS interface. 1 if required; otherwise, 0.

RequireHTTPSCert - (Short, Read-Only) - Whether the user is required to submit an SSL client certificate when accessing the MOVEit Transfer HTTPS interface. 1 if required; otherwise, 0.

RequireHTTPSCertPassword - (Short, Read-Only) - Whether the user is required to submit a password as well when submitting an SSL client certificate to the MOVEit Transfer HTTPS interface. 1 if required; otherwise, 0.

RequireSSHKey - (Short, Read-Only) - Whether the user is required to submit an SSH client key when accessing the MOVEit Transfer SFTP interface. 1 if required; otherwise, 0.

RequireSSHKeyPassword - (Short, Read-Only) - Whether the user is required to submit a password as well when submitting an SSH client key to the MOVEit Transfer SFTP interface. 1 if required; otherwise, 0.

SendToUnregisteredRecip - (Short, Read-Only) - Whether the user is allowed to send packages to recipients who are not currently registered users. If allowed, the user will be able to send packages to email addresses that don't match any currently registered users, whereby MOVEit Transfer, depending on its configuration, will either create Temporary Users for those email addresses, or allow guest access to the package using Package Password. 0 if prohibited; 2 if use organization setting.

SharedAccount - (Short, Read-Only) - Whether the user is a shared account. 1 if the account is shared; otherwise, 0.

Status - (String, Read-Only) - Either "active", "suspended", or "template".

StatusNote - (String, Read-Only) - Often indicates why this user was suspended or reactivated.

Username - (String, Read-Only) - The username of this user. Often used in conjunction with a password to authenticate this user. Example: "georgej" Depending on this organization's folder naming conventions, this name may or may not the name of this user's home folder as well.

Deprecated Properties

InstID - (Integer, Read-Only) - ID of the organization this event occured in. Use "OrgID" instead.

Quota - (Double, Read-Only) - The user's quota, if any, in bytes. (Unlimited quotas are represented with a value of 0.)


MOVEitUserGroupInfo Reference - Properties

The syntax used to describe the properties below is as follows:

Name - (Attributes) - Description of property

AdminFolderAccess - (Short, Read-Only) - If set to 1, GroupAdmins of this group will have administrative access to the home folders of the group member users.

AdminFolderRelationship - (String, Read-Only) - Describes the specific permissions that GroupAdmins will have on group member's home folders, if AdminFolderAccess is set to 1. The Permission string will consist of one or more of the following letters: "AEDLNRW". (A=Admin, E=Subfolders, D=Delete, L=List, N=Notify, R=Read, W=Write)

AdminTempUserAccess - (Short, Read-Only) - If set to 1, GroupAdmins of this group will have administrative access to the temp users created by the group member users. These temp users are called Limited Members.

AllowAttachments - (Short, Read-Only) - If set to 1, and the organization is configured to allow attachments by group only, then members of this group will be allowed to add attachments to their packages.

AllowSendPackages - (Short, Read-Only) - If set to 1, and the organization is configured to allow sending packages by group only, then members of this group will be allowed to send packages.

Description - (String, Read-Only) - Description of this group.

DisplayProfile - (String, Read-Only) - Name of the Display Profile applied to this group, if any.
NOTE: Will only be initialized when returned from the UserGroupGetDetails method.

ID - (String, Read-Only) - ID of this group.

MaxMemberAdHocQuota - (Double, Read-Only) - Determines the maximum Ad Hoc Transfer quota restriction that GroupAdmins of this group may assign to member users. A value of 0 indicates no restriction.

MaxMemberFolderQuota - (Double, Read-Only) - Determines the maximum folder quota restriction that GroupAdmins of this group may assign to member users. A value of 0 indicates no restriction.

MaxMemberPerPackageQuota - (Double, Read-Only) - Determines the maximum package size restriction (including attachments) that GroupAdmins of this group may assign to member users. A value of 0 indicates no restriction.

Name - (String, Read-Only) - Name of this group.

OrgID - (Integer, Read-Only) - The ID of the organization this user belongs to.

SendToRegisteredUsersNotInAddrBook (Short, Read-Only) - If set to 1, and the organization is configured to allow sending packages to registered user not in the sender's address book by group only, then members of this group will be allowed to send packages to registered users who don't exist in their address book.

SendToUnregisteredRecip (Short, Read-Only) - If set to 1, and the organization is configured to allow sending packages to unregistered recipients by group only, then members of this group will be allowed to send packages to recipients that do not currently exist in the system.

TempUsersInAddrBookExpansion - (Short, Read-Only) - If set to 1, temp users who are members of this group (Limited Members) will be included in address book expansion member lists of this group.

Deprecated Properties

CanCreateTempUsers - (Short, Read-Only) - If set to 1, and the organization is configured to allow creation of temp users by group only, then members of this group will be allowed to create temp users.

InstID - (Integer, Read-Only) - ID of the organization this event occured in. Use "OrgID" instead.

MaxMaxAttchSize - (Double, Read-Only) - Determines the maximum attachment size restriction that GroupAdmins of this group may assign to member users. A value of 0 indicates no restriction.

MaxMemberQuota - (Double, Read-Only) - Determines the maximum quota restriction that GroupAdmins of this group may assign to member users. A value of 0 indicates no restriction.


MOVEit Transfer API Shell - Overview

The MOVEit Transfer API Shell (mishell) is a VBScript application which uses the secure file transfer capabilities of the MOVEit Transfer API Windows development kit. Designed to mimic the interface of a standard command-line FTP client, this utility securely transfers files between a MOVEit Transfer and a Windows system capable of running the API.

Because mishell is based on MOVEit Transfer API, it automatically takes advantage of:

  • On-the-fly data transmission compression to conserve bandwidth and speed transfers
  • Cryptographic-quality file integrity checks to guard against truncation or corruption during transit
  • Microsoft's SSL/TLS encryption libraries during transport
  • MOVEit Crypto's FIPS-140-2 validated AES encryption during storage on a MOVEit Transfer server
  • Proxy server support

When MOVEit Transfer API gets installed, MIShell is also automatically installed. In addition, the path to MOVEit Transfer API's installation location (e.g., "C:\Program Files\MOVEit") will automatically be added to the system path, so MIShell can be invoked via command line from any directory.

Like any other well-behaved command-line utility, mishell can be driven by an automated script such as a Windows batch file. In turn, these scripts can be scheduled by Windows Scheduled Tasks to allow users to build their own secure, automated solution on top of mishell. Finally, the source to the mishell utility is available as part of the MOVEit Transfer API Windows package, allowing for unlimited per-site customization. (Note: there are some licensing considerations to be aware of if you are considering distributing or reselling a package based on MOVEit Transfer API Windows and/or mishell - please contact Ipswitch with any questions.)

If you simply want to distribute a FREE, command-line MOVEit client that accepts FTP syntax, please also take a look at MOVEit Xfer. This prepackaged client is similar to mishell, but does not require a MOVEit Transfer API license. On the other hand mishell can be customized to strip out or offer additional command-line options. For example, you could modify mishell to accept command-line "user add" parameters.


MOVEit Transfer API Shell - Requirements, Installation, and Execution

The mishell program is a Visual Basic script, meaning it requires the Microsoft Scripting runtime environment in order to operate. This package is automatically installed along with modern versions of Internet Explorer.

The mishell program is contained entirely in a "mishell.vbs" script file and a "mishell.bat" batch file, which is included with MOVEit Transfer API Windows. Once MOVEit Transfer API is installed, mishell will be ready to go, and can be found in the same directory that MOVEit Transfer API was installed to.

To invoke mishell, simply run "mishell" from "C:\Program Files\MOVEit". To see its options, use the following syntax.

C:\Program Files\MOVEit\mishell -?
MIShell Win 5.5.0.0 - Secure HTTPS Client.
Copyright (C) 2004-2008 by Ipswitch, Inc. - http://www.ipswitch.com/

Usage: [cscript //NoLogo] mishell.vbs [args] [host[/path]]
where args is zero or more of:
-?           to display this help screen and exit
-d           to enable debug mode
-s:filename  to run in batch mode with commands from 'filename'
-user:x      to use 'x' as the username when signing on
-password:x  to use 'x' as the password when signing on
-proxyuser:x to use 'x' as the proxy server username
-proxypass:x to use 'x' as the proxy server password
-quiterror   to quit and set an error code if an error is encountered
-z           to ignore problems with certificates

Command-Line Parameters

Use the following command syntax to run mishell:

cscript //nologo C:\path\to\mishell.vbs [args] [hostname]

...where "args" consists of any (or none) of the following options:

  • -? Prints a list of command-line parameters available in mishell.
  • -d Enables debug mode, which will output extra information to the console.
  • -s:filename Runs mishell in batch mode, using filename as a command file. The command file should contain the list of commands to be issued to mishell, each command on its own line. Blank lines and lines starting with the # character will be ignored.
  • -user:username Identifies the username that mishell should use when connecting to the MOVEit Transfer server.
  • -password:password Identifies the password that mishell should use when connecting to the MOVEit Transfer server.
  • -proxyuser:username Identifies the username that mishell should use to authenticate to a proxy server.
  • -proxypass:password Identifies the password that mishell should use to authenticate to a proxy server.
  • -quiterror Causes mishell to exit with error code 3 if an error occurs with any DMZ operation.
  • -z Causes mishell to ignore any certificate issues with the MOVEit Transfer server.

(For proxy services, MIShell uses the hostname and port of any proxy server configured in local Internet Explorer settings.)

hostname is the domain name or numeric IP address of the MOVEit Transfer server.

If no hostname is given on the command line, mishell starts without a configured host. In this case, you must issue an open command to connect to a MOVEit Transfer server.

Return Codes

The following integer values are returned by mishell based on how it exits.

  • 0 : no error
  • 1 : command line parameter syntax error
  • 2 : command file does not exist
  • 3 : error occurred during a MOVEit Transfer function and -quiterror is specified. This is the error code returned if a file transfer fails while the -quiterror option is enabled

Advanced Specifications

Since mishell is a command-line-only program, it needs to be run by the CScript script loader, not the WScript loader. Since WScript is usually the default script loader for the Windows system, double-clicking on the mishell.vbs file will generally not correctly run the program. Instead, it is best to run it from the command-line, either directly, or using a batch file. For example, to run mishell directly on the command-line, open a command prompt window and enter the following command:

cscript //nologo C:\path\to\mishell.vbs

Make sure to use the correct path to mishell.vbs or a renamed copy so that CScript knows where to find it.


MOVEit Transfer API Shell - Commands

Once mishell is started, it prompts for and reads single-line commands. The commands are read from the console, or from the script filename supplied by using the -s parameter.

If a command that has required parameters is entered without the parameters, mishell will prompt for the parameters.

For many commands, to enter a parameter containing spaces, you must enclose the parameter in double quotes. For instance, to retrieve a file named My Document.txt, you should say get "My Document.txt".

Legal commands are listed below. Optional parameters are enclosed in brackets ([]).

about
Displays program information about mishell, the current version, and information about the system it is running under.

cd directory
Changes the working directory on the server.

close
Closes the connection to the server without exiting the program.

debug
Toggles debug mode, which prints extra information to the console.

delete filename
Deletes a filename on the MOVEit Transfer server.

dir [filemask]
Gets a directory listing from the MOVEit Transfer server.

exit
Closes any open connection and exits the program.

get remotefilename [localfilename]
Retrieves a file. If localfilename is not specified, the file will be saved to the local system as remotefilename. You may put " around the filenames in order to include spaces in the names.

help
Displays the list of commands accepted by mishell.

lcd directory
Changes the local directory.

ldir [filemask]
Gets a directory listing from the local system.

ls [filemask]
Gets a short-form directory listing from the MOVEit Transfer server (names only).

lls [filemask]
Gets a short-form directory listing from the local system (names only).

mdelete remotefilemask
Deletes multiple files from the remote system. If not in batch mode, mishell prompts for whether to actually delete the file. The response should be "y" to delete the file, "n" to not delete the file, or "a" to delete the file and all others without asking again.

mget remotefilemask
Retrieves multiple files from the remote system. If not in batch mode, mishell prompts for whether to actually download the file. The response should be "y" to download the file, "n" to not download the file, or "a" to download the file and all others without asking again.

mkdir remotedirectory
Makes a directory on the remote system.

mput localfilemask [comments]
Sends multiple files to the remote system. If not in batch mode, mishell prompts for whether to actually upload the file. The response should be "y" to upload the file, "n" to not upload the file, or "a" to upload the file and all others without asking again. Any arguments after the remote filename will be joined together with spaces and uploaded with the file as comments.

open [http:// | https://]hostname[:port][scriptpath]
Sets the MOVEit Transfer host to connect to. If the protocol prefix is not included, a secure connection will be assumed. Otherwise, mishell will use a secure connection for "https://" prefixes, and a non-secure connection for "http://" prefixes. The default secure connection port is 443, and the default non-secure connection port is 80. Either may be overridden by designating the port to use. The scriptpath must be included if the target DMZ application does not reside in the root of the host webserver.

Example open commands:

  • open moveit.stdnet.com - Set the host to moveit.stdnet.com. A secure connection will be attempted using port 443 to the root directory of the webserver.
  • open http://moveit.stdnet.com:8080 - Set the host to moveit.stdnet.com. A non-secure connection will be attempted using port 8080 to the root directory of the webserver.
  • open https://www.stdnet.com/moveit/ - Set the host to www.stdnet.com. A secure connection will be attempted using port 443 to the /moveit/ directory of the webserver.

pass password
Sets the password to be used when connecting to the MOVEit Transfer host. This command should only be used in batch mode command files.

put localfilename [remotefilename [comments]]
Sends a file to a remote DMZ server. If remotefilename is not specified, the name of the file on the remote system will be the same as localfilename. You may put " around the filenames in order to include spaces in the names. Any arguments after the remote filename will be joined together with spaces and uploaded with the file as comments.

pwd
Displays the current directory on the remote DMZ system if connected, as well as the current directory on the local system.

rename oldfilename newfilename
Renames a file on the remote system.

user [username [password]]
Sets the username and password to be used when connecting to the MOVEit Transfer host. If no password is provided and the program is not in batch mode, mishell will prompt for a password. If neither the username or the password are provided and the program is not in batch mode, mishell will prompt for both the username and the password.


MOVEit Transfer API Shell - Examples

Simple Script Example

The following script and command line retrieve all files named *.rpt from the Incoming directory of a MOVEit Transfer server. The command line is:

cscript //nologo C:\path\to\mishell.vbs -s:GetRpt.in moveit.bigcorp.com

The contents of GetRpt.in are:

jsmith
secret123
cd Incoming
mget *.rpt
quit

Note that the lines in the script are simply the lines of text that would be entered by the user if the transfer were done interactively rather than via a script. Also note that the script did NOT need to include the "Y" or "N" responses a user would normally see if typing in an "mget" or "mput" command manually; during batch mode, mishell assumes the answer to these questions would be "Y."

Simple Batch File to Upload a Single File

The following batch file lets a user upload a single file using a single command. If you save the following snippet as "uploadit.bat", usage would be: "uploadit (hostname) (username) (password) (file_to_transfer)"

echo put %4 > temp.txt
echo quit >> temp.txt
cscript //nologo C:\path\to\mishell.vbs -user:%2 -password:%3 -s:temp.txt %1
del temp.txt


MOVEit Transfer API Shell - Distribution

In order to distribute mishell, several files will need to be copied to the client computer and installed correctly. Also, it is normally a good idea to provide a batch file interface to mishell, to keep the user from having to deal with calling cscript with the correct path to mishell.vbs. Thus, the files that should be in an mishell distribution are:

  • mishell.vbs - The mishell VBScript code file (Required)
  • MOVEit Transfer API library files - see below (Required)
  • mishell batch file wrapper (Recommended)
  • Any documentation you wish to provide (Optional)
  • Any custom batch scripts or command files you wish to provide (Optional)

Note that mishell does not have its own configuration files, so any default actions you wish the program to perform on your client computers must be done using your own batch scripts and command files. You are free to distribute such custom files in your mishell package.

MOVEit Transfer API Library Files

The necessary library files for MOVEit Transfer API functionality are:

  • MOVEitAPI.dll
  • MOVEitLargeXferCOM.dll
  • SNICOMUtil.dll

In a default MOVEit Transfer API installation, these files can be found in the C:\Program Files\MOVEit directory.

When distributing mishell, these library files should be copied to a local directory on the client machine, and then registered by calling "regsvr32" along with the path to the library, like so:

regsvr32 C:\path\to\MOVEitAPI.dll

For upgrades, the existing versions of the libraries should be unregistered using the "/u" option to regsvr32. The new files should then be copied in, and registered.

Note: you will need administrator access on the client machine in order to register the MOVEit Transfer API library files.

Batch File Interface

Once mishell is copied to a directory on the client machine, a batch file should be provided to allow the end user to call mishell with a minimum of hastle. This batch file should be placed in a directory which resides in the Windows PATH environment variable, so the user can call it from any location. Any values that should be hardcoded for the user, such as host and port of the MOVEit Transfer server, may also be put in this batch file. A simple example batch file is provided here:

@echo off
set basepath=C:\Program Files\MOVEit\
cscript //nologo %basepath%mishell.vbs %1 %2 %3 %4 %5 %6 %7 %8 %9


Legal Information - Export Restrictions

MOVEit Transfer makes use of MOVEit Crypto for its cryptographic services. MOVEit Transfer API relies on MOVEit Transfer to perform all of its functions. Therefore, MOVEit Transfer API is subject to the same export restrictions as MOVEit Crypto; these are described below.

MOVEit Crypto has undergone extensive review by an independent testing laboratory accredited under the Cryptographic Module Validation (CMV) Program run by NIST and the Communications Security Establishment (CSE) of the Canadian Government. As a result, MOVEit Crypto has received the following certifications.

  • FIPS 140-2 "Security Requirements for Cryptographic Modules" validation (Certificate 310).
  • FIPS 197 "Advanced Encryption Standard (AES) Algorithm" validation (Certificate 30).

MOVEit Crypto (and therefore, MOVEit Transfer API) is subject to U.S. Department of Commerce export controls, which prohibit it from being downloaded or otherwise exported or re-exported to Cuba, Iran, Iraq, Libya, North Korea, Sudan, Syria, or to a national or resident of any of these countries.


Ipswitch - Contact...

To contact Ipswitch Support, go to:

Support: http://www.ipswitchft.com/support