1463 lines
133 KiB
Markdown
1463 lines
133 KiB
Markdown
**US Customs and Border Protection**
|
||
|
||
|
||
**Active Directory System Interfaces for Directory Updates**
|
||
|
||
|
||
|
||
|
||
|
||
|
||
**Restrictions on Disclosure and Use of Data**
|
||
This document includes data that shall not be disclosed by the Government and shall not be duplicated, used, or disclosed – in whole or in part --- for any purpose other than to support the deployment of Microsoft Exchange at Customs and Border Protection.
|
||
|
||
|
||
|
||
|
||
|
||
**REVISION HISTORY**
|
||
|
||
|
||
| | | | |
|
||
|---|---|---|---|
|
||
|Date|Ver|Description|Author|
|
||
|8/15/2007|.9|Initial Draft|Rob Craig|
|
||
|2/22/2008|1.0|First Release|Rob Craig|
|
||
|4/16/2008|1.1|Updated to reflect new DHS Update Script|Rob Craig|
|
||
|
||
|
||
|
||
|
||
**TABLE OF CONTENTS**
|
||
|
||
**1.** **Overview**
|
||
[1.1. Global Address List Directory Information](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
[1.2. DHS Directory Synchronization](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
**2.** **GLobal address list directory information**
|
||
[2.1. Components](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
_2.1.1._ _WebTELE_
|
||
_2.1.2._ _Data Reporter_
|
||
_2.1.3._ _Integration Scripts_
|
||
_2.1.4._ _Active Directory_
|
||
[2.2. Data Flow](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
**3.** **DHS Directory synchronization**
|
||
[3.1. Components](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
[3.2. Process Flow](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
[3.3. Troubleshooting Individual Email Address Assignment](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
[3.4. Resetting a User's DHS Address](file:///C:\Webtele\WebTele%20AD%20Integration.docx)
|
||
**4.** **WEBTELE INTEGRATION script Version 1.X**
|
||
**5.** **OSC Directory integration script Version 2.X**
|
||
|
||
|
||
|
||
**1.** **Overview**
|
||
Active Directory has replaced other network directory and authentication systems and is currently the enterprise system of record for access to common network and application resources within the Bureau of Customs and Border Protection. In order to keep this information as current and accurate as possible, Active Directory has multiple interfaces for updating and providing information to and from other systems internal and external to CBP. The following interfaces are addressed in this document:
|
||
|
||
**1.1.** **Global Address List Directory Information**
|
||
Based on CBP Policy, the mainframe personnel system of record within CBP is TELE and WebTELE (where WebTELE is the web interface application integrated with TELE). Information contained in TELE includes individual's contact information, title, and organization code. In order to provide this information to Outlook users, an integration process has been developed to populate Active Directory with this information. This process is described in this document
|
||
|
||
**1.2.** **DHS Directory Synchronization**
|
||
CBP shares a common Global Address List (GAL) with other DHS components. This process is maintained by the US Coast Guard. Nightly, CBP provides a complete directory "push" to USCG OSC for the following processes to run:
|
||
|
||
|
||
- Assignment of "DHS E-mail Addresses" to CBP personnel (e.g., [joe.a.anyuser@dhs.gov](mailto:joe.a.anyuser@dhs.gov)), and
|
||
- Propagation of CBP contact information out to the other components to populate their respective GAL
|
||
|
||
**2.** **GLobal address list directory information**
|
||
In order for users of Outlook to view contact properties about users in the GAL, a synchronization process runs to populate data from TELE to Active Directory. This is run approximately daily and is described in more detail in this section.
|
||
|
||
**2.1.** **Components**
|
||
There are several components of the integration between WebTELE and Active Directory. These include:
|
||
|
||
|
||
- WebTELE, which reflects the mainframe dataset on each CBP government employee, and _many_, if not most, contractor personnel.
|
||
- Data Reporter, which is the tool used to extract the "TELE.txt" file from WebTELE;
|
||
- The ADTELEUpdate.VBS script, which is a custom-developed ADSI (Active Directory Systems Integration) script used to compare the contents of the TELE.txt file with the information in Active Directory, and, as needed, update Active Directory.
|
||
- Active Directory, which is the enterprise network directory system containing user information on all CBP users authorized to access network resources.
|
||
|
||
|
||
Each of these elements is discussed in more detail below.
|
||
**2.1.1.** **WebTELE**
|
||
WebTELE is the web-enabled interface to an instance of TELE. It is accessible from CBPNet, and it is built on a WebSphere platform against a DB2 backend. It is the primary method for users to access and update their contact data.
|
||
**2.1.2.** **Data Reporter**
|
||
Data Reporter is a light-weight application that interfaces with various database types in order to extract and produce data reports in a variety of user-defined formats. The instance of Data Reporter used for this integration runs against production databases on the TSOE mainframe. It runs under Production Management's control (as job name KAITELEX) every 24 hours at approximately 10 pm EST. The output file is FTP'ed down to NWG-EXVS-A-001 to the D:\FTP Data directory as "TELE.TXT" file overwriting the file from the previous output. The job supplies FTP credentials to NWG-EXVS-A-001 which are contained in the job.
|
||
|
||
Currently the job is configured to pull only those users with an organization two-letter alpha of "CU" (for Customs). As of the date on this documentation, approximately 52,000 records are pulled for each job. This should represent all government employees at CBP with at least a Limited BI, but this does not necessarily include all or most contract staff.
|
||
**2.1.3.** **Integration Scripts**
|
||
|
||
|
||
- LaunchTELE.cmd. This is a task run from the NT Scheduler (currently scheduled to run at 2:00 am Mon – Fri). It launches the following two tasks (in this order):
|
||
- FileSCRUB.vbs. This Visual Basic script has one purpose: to open the TELE.TXT file (the output from Data Reporter) using Windows Notepad and save and close the file. This has the effect of removing some unwanted characters that exist in some of the WebTELE records. Specifically, the characters are 00 "low-value" mainframe characters which appear as extended ASCII character 255 in the text file. These characters disrupt the data mapping process in those records which contain these characters (roughly 5-10% of all records in WebTELE). Opening and saving the file in Notepad replaces those characters with a simple space which is all that is needed for the process to continue correctly.
|
||
- ADUpdatev1_0.vbs. After the file has been scrubbed, the main update script runs. This is a VB ADSI script which runs within the default domain (ad.cbp.dhs.gov). It is described in more detail below.
|
||
|
||
|
||
The basic logic of ADUpdate1_0.vbs is as follows: It loads the TELE.TXT into an array one line at a time and performs an LDAP search for the user based on Hash ID. Upon a match, it cycles through a series of attributes and compares them to the contents of the array. It updates or deletes the value in the AD user object based on the comparison and logs any changes in a log file (telechanges.log). Finally, it sends an email confirmation upon completion describing how many records were checked, how many AD matches were found, how many records were updated, and how many total attributes were modified. The attributes updates in this version are as follows:
|
||
|
||
|
||
- Government or Contractor status
|
||
- Title
|
||
- Office Number (e.g., Suite or Room number)
|
||
- Street Address
|
||
- City / State / Zip / Country
|
||
- Telephone Number
|
||
- Fax Number
|
||
- Organization Code
|
||
- Department (down to the office level – for example, "Office of Field Operations, Office of Border Patrol, Office of Information Technology, etc.)
|
||
|
||
|
||
Within the script there is a constant (maxChanges) that "throttles" the number of user records that will be changed during any one execution of the script. This number is iterated once each time a change has to be made to a user object (whether that user object has 1 or 5 changes does not matter, only that the specific record was updated in some way). Once the maxChanges value is reached, the routine is ended and no more changes will be made until the script is executed again.
|
||
|
||
There are two purposes for this throttle:
|
||
|
||
|
||
1. To minimize a load of "bad data" into Active Directory should the TELE.TXT file contain bad or corrupted data; and
|
||
2. To prevent updating a large enough portion of the Global Address List (GAL) during any 24 hour period which may prompt a large number of full Offline Address Book downloads across the network.
|
||
|
||
|
||
Currently maxChanges is normally set to 2000 which means that no more than 2000 user objects will have their records updated during any single run (normally within a 24 hour period). When the directory is stable, this number is more than sufficient to run through the complete TELE.TXT file and ensure everyone's record is checked for updates. If for some reason there are a lot of directory changes since the last run, it is possible that it could take several days running the process before all changes have been included and the directory stabilizes.
|
||
|
||
The following example helps illustrate this: currently there are over 52,000 records in the TELE.TX output. If everyone needed to have their record updated with some information, it would take at least 26 days (26 x 2000 changed records per day) to update the entire directory and stabilize. In the first 25 days of processing, the LAST 2000 records (alphabetically arranged by Hash ID) would not have their user account checked or updated _at all_. In this example, it would be best to set the value of maxChanges to a higher value to speed through this process more quickly. It is difficult to determine a "safe value," but 5,000 would likely be well within that zone.
|
||
|
||
**2.1.4.** **Active Directory**
|
||
Active Directory is the primary network authentication system for users and applications within CBP. All CBP employees and contract staff needing access to resources on the network and with a limited Background Investigation should have a user object in Active Directory. This user object has many attributes, some of which are related to the contact information updated by this process (i.e., Telephone, City, Title, etc.).
|
||
**2.2.** **Data Flow**
|
||
|
||
|
||
|
||
|
||
|
||
|
||
**3.** **DHS Directory synchronization**
|
||
The DHS Directory Synchronization process is necessary for the following:
|
||
|
||
|
||
1. To assign users a DHS or external E-mail address in the format [joe.a.anyuser@dhs.gov](mailto:joe.a.anyuser@dhs.gov); and
|
||
2. To propagate CBP contact information to the other DHS components.
|
||
|
||
|
||
There are several components required for this functionality to work properly. These are listed in section 3.1 below.
|
||
|
||
**3.1.** **Components**
|
||
The following components are required for the OSC Directory Synchronization to work properly.
|
||
|
||
|
||
- LDIFDE Query and Filter. There are two queries: one for users and one for groups. The filter is defined in the bat files (CBP_DirExport.bat and CBP_DirExportGROUPS.bat). The actual LDIF query syntax is listed below. The query is designed to only export AD user objects if they meet the following criteria:
|
||
|
||
- For USERS:
|
||
|
||
- Have an Exchange mailbox (no AD-only accounts)
|
||
- Do not have "No DHS Sync" in extensionAttribute8
|
||
- For GROUPS (including query-based distribution groups):
|
||
|
||
- Have "DHS Sync" in extensionAttribute8. _Groups by default are NOT sent up to DHS unless they have this value in extensionAttribute8_.
|
||
- Reformat and Upload Script. In order to get the output into the format required by OSC, a reformatting script runs against every line from the LDIFDE output. It performs the following tasks:
|
||
|
||
- Changes the Distinguished Name value to a generic OU value.
|
||
- Changes group object type labels so that they appear to be user objects with a last name (sn attribute).
|
||
- FTP's the resulting file (export.dir) with the proper FTP credentials to (insert FTP commands)
|
||
- Download Script. Following the upload, a script is used to download the log file from the previous evening. This is used for troubleshooting purposes.
|
||
- Log file. This is the actual file downloaded from OSC (uscs-01-exch2n.log).
|
||
- DHS Address Download. In order to keep track of user's DHS addresses, there is a script used to update extensionAttribute10 with the user's current DHS address.
|
||
|
||
|
||
The LDIF filter syntax for USERs is:
|
||
|
||
ldifde -f GALExportFile.ldf -s nwg-addc-a-005 -r "(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(! extensionAttribute8=No DHS*)(|(homeMDB=*)(msExchHomeServerName=*))) ))))" -l "objectclass,dn,cn,givenName,Initials,Sn,DisplayName,Mail,ExtensionAttribute9,StreetAddress,l,St,PostalCode,co,Title,TelephoneNumber,PhysicalDeliveryOfficeName"
|
||
|
||
The LDIF filter syntax for GROUPs is:
|
||
|
||
ldifde -f GALExportFileGROUPS.ldf -s nwg-addc-a-005 -r "(&(objectClass=Group)(mail=*)(extensionAttribute8=DHS Sync*))" -l "objectclass,dn,cn,name,DisplayName,Mail"
|
||
**3.2.** **Process Flow**
|
||
These scripts run on NWG-EXVS-A-001 server in the D:\DirectoryUpload directory, although they could run successfully from any AD server provided they are in D:\DirectoryUpload. The process is as follows:
|
||
|
||
|
||
1. A scheduled task (currently at 10 pm each night) on NWG-EXVS-A-001 kicks off the following script: GALUploadv2.vbs located in D:\Directory Upload
|
||
2. That script kicks of a ldifde export defined in CBP_DirExport.bat which produces a directory export output file called: GALExportFile.ldf. This is an export of users.
|
||
3. The script then kicks off a ldifde export defined in CBP_DirExportGROUPS.bat. This is an export of Groups to include Query Based Distribution Groups into the file: GALExportFileGROUPS.ldf.
|
||
4. The script then appends the contents of GALExportFileGROUPS.ldf to GALExportFile.ldf.
|
||
5. The GALUploadv2.vbs script then scrubs GALExportFile.ldf to replace certain values and creates a file ready for upload. This new file is called: export.dir
|
||
6. GALUploadv2.vbs then FTP's the export.dir file to OSC.
|
||
7. Finally, the script downloads the OSC log file from the previous evening's run. This file is called: uscs-01-exch2n.log. It is also emailed to the CBP Postmaster account.
|
||
|
||
|
||
During this whole process a log file tracks the process. The log file is: GALExport.log
|
||
|
||
**NOTE**: If this process ever needs to be kicked off manually, it can be done by navigating to the following directory on NWG-EXVS-A-001 D:\DirectoryUpload and double-clicking on the following file: GALUploadv2-1.vbs (or whatever the latest version is).
|
||
**3.3.** **Troubleshooting Individual Email Address Assignment**
|
||
There are several cases where a user or other object may not properly propagate to OSC and may not successfully receive an email address. The following items should be checked on the user's user object in Active Directory:
|
||
|
||
|
||
1. Is the object a mailbox-enabled user or Group object in Active Directory (this includes group mailboxes) or a mail-enabled distribution group? Only these types of AD objects are synchronized with Active Directory.
|
||
2. Check the object's Custom attributes.
|
||
|
||
1. Does extensionAttribute10 have a value? This should be the DHS address. If not, then the object is not receiving a DHS address.
|
||
2. Check extensionAttribute8. Is there a "No DHS" or "No DHS Sync" in extensionAttribute8? If so, then the object will not synchronize with OSC. If this is incorrect, remove the value from extensionAttribute8. The object should synchronize that evening.
|
||
3. If the object is a Distribution or Query-Based Distribution Group, then extensionAttribute8 must have "DHS Sync" or it will not be sent to OSC.
|
||
4. Check extensionAttribute9 for a "GOVERNMENT" or a "CONTRACTOR" value. Strictly speaking this value does not HAVE to be here, as OSC will assume "GOVERNMENT," but ensure the user has the proper value in extensionAttribute9.
|
||
3. Ensure that there are no periods in the user object's name fields, to include first name, middle initial, or last name. This will cause the creation of the "local LAN alias" value at DHS to fail. For example:
|
||
|
||
1. The user's last name in Active Directory is "SMITH JR." instead of "SMITH JR" (or "SMITHJR")
|
||
2. The user's middle initial contains a period such as "A." instead of "A"
|
||
3. The user's full name has a period in it such as "SMITH, JOHN A." instead of "SMITH, JOHN A" (strictly speaking this should not be an issue for OSC, but it does not comply with CBP standard).
|
||
4. Use the Active Directory "rename" task to correct any of these issues.
|
||
4. Check Lotus Notes email address versus Active Directory email address (**NOTE: This only applies to troubleshooting following the immediate conversion to Active Directory data synchronization**). If the email address in Lotus Notes is different than the value in Active Directory, OSC will treat the user as a new user and assign a new DHS address to that user. For example: User John A. Smith's email address is listed in Lotus Notes as [JOHN.SMITH@CBP.DHS.GOV](mailto:JOHN.SMITH@CBP.DHS.GOV) while his actual email address in Active Directory is [JOHN.A.SMITH@CBP.DHS.GOV](mailto:JOHN.A.SMITH@CBP.DHS.GOV). In this case, John Smith will receive a new DHS address as a new user once the conversion to Active Directory synchronization takes place. Correcting this situation will require opening a help ticket with OSC.
|
||
|
||
|
||
The day following corrections to a user's account, check the user object and extensionAttribute10 to verify that the user received a DHS email address. This can also be validated against the DHS White Pages. If the user has received an improper DHS address (i.e., they lost their original email address because they fell out of synchronization), a help desk ticket should be opened with OSC.
|
||
|
||
**3.4.** **Resetting a User's DHS Address**
|
||
If a user needs to have their DHS address reassigned, the process is as follows (note that this does not apply to GROUPS):
|
||
|
||
|
||
1. (This is the only part of the process that requires an administrator to perform an action. The rest of the steps are automated.) In the USER'S Active Directory object go to Exchange Advanced tab and click on Custom Attributes. Make extensionAttribute8 "No DHS Sync Reset" as illustrated below.
|
||
|
||
1. That evening, the object will NOT be exported to OSC, and the user will not have a DHS address associated with their internal CBP email address.
|
||
2. The next morning, a script will run which will update the user object to reflect no DHS address in extensionAttribute10 (to show that the user does not have a DHS address) and extensionAttribute8 will say that a reset is pending:
|
||
3. That evening the user object will go to DHS as part of the export and should get assigned a new DHS address based on the format FN.MI.LN@DHS.GOV.
|
||
4. The next morning the same script will update extensionAttribute8 on the user object to reflect that the DHS address was reset and extensionAttribute10 will reflect that DHS address.
|
||
|
||
|
||
Resetting the address of a Group is still a manual process. An administrator should remove the "DHS Sync" from extensionAttribute8. The next day the administrator should add "DHS Sync" back into extensionAttribute8. This process will be automated in the near future.
|
||
|
||
|
||
**4.** **WEBTELE INTEGRATION script Version 1.X**
|
||
CONST ForReading=1
|
||
CONST ForAppending=8
|
||
Const ADS_PROPERTY_CLEAR = 1
|
||
Const ADS_PROPERTY_UPDATE = 2
|
||
Const ADS_PROPERTY_APPEND = 3
|
||
Const ADS_PROPERTY_DELETE = 4
|
||
|
||
|
||
On Error Resume Next
|
||
|
||
set conn = createobject("ADODB.Connection")
|
||
set com = createobject("ADODB.Command")
|
||
Set iAdRootDSE = GetObject("LDAP://RootDSE")
|
||
|
||
strDefaultNamingContext = iAdRootDSE.Get("defaultNamingContext")
|
||
Conn.Provider = "ADsDSOObject"
|
||
|
||
Conn.Open "ADs Provider"
|
||
|
||
svcQuery = "\<LDAP://" & strDefaultNamingContext & _
|
||
"\>;(&(mailnickname=EFB60MN)(objectClass=user));cn,name,objectSID"
|
||
|
||
'MsgBox svcQuery
|
||
|
||
Com.ActiveConnection = Conn
|
||
Com.CommandText = svcQuery
|
||
Set Rs = Com.Execute
|
||
|
||
Dim strTeleFile, strADMissing, dtFileDate, objTeleFile, objLogFile, arrayTele, inputLine, strDN, strDNSearch
|
||
Dim strLogFileName, intChangeCounter, intPersonChange, blnPersonChange, intTotalRecords, intTotalMatches, intADMissing
|
||
Dim intCountry
|
||
Dim maxChanges
|
||
|
||
'********************************ADMINISTRATOR SWITCHES**************************************************
|
||
|
||
'Use to set maximum number of changes
|
||
maxChanges = 1000
|
||
'Use to determine whether to update Department: 1 = Yes; 0 = No
|
||
bnlDeptUpdate=0
|
||
|
||
'********************************************************************************************************
|
||
|
||
strTelefile = "D:\FTP Data\TELE.TXT"
|
||
strLogFileName = "D:\FTP Data\teleChanges.log"
|
||
strADMissing = "D:\FTP Data\ADMissing.txt"
|
||
|
||
Set objFSO=CreateObject("Scripting.FileSystemObject")
|
||
Set objFSOlog=CreateObject("Scripting.FileSystemObject")
|
||
Set objFSOADMissing=CreateObject("Scripting.FileSystemObject")
|
||
|
||
Set objTeleFile=ObjFSO.OpenTextFile(strTelefile, ForReading)
|
||
Set objLogFile=ObjFSOlog.OpenTextFile(strLogFileName, ForAppending)
|
||
Set objADMissingFile=ObjFSOADMissing.OpenTextFile(strADMissing, ForAppending)
|
||
|
||
objLogFile.WriteLine Now & ": Started Processing"
|
||
|
||
intChangeCounter = 0
|
||
intPersonChange = 0
|
||
|
||
Do Until objTeleFile.AtEndOfStream
|
||
If intPersonChange = maxChanges Then Exit Do
|
||
|
||
intTotalRecords = intTotalRecords + 1
|
||
blnPersonChange = 0
|
||
|
||
inputLine=objTeleFile.ReadLine
|
||
|
||
arrayTele=Split(inputLine,"=")
|
||
|
||
'MsgBox "Hash: " & RTrim(arrayTele(0)) & " " & RTrim(arrayTele(1)) & " " & RTrim(arrayTele(8))
|
||
|
||
svcQuery = "\<LDAP://" & strDefaultNamingContext & _
|
||
"\>;(&(samAccountName=" & RTrim(arrayTele(0)) & ")(objectClass=user));cn, distinguishedName"
|
||
|
||
'MsgBox svcQuery
|
||
|
||
Com.ActiveConnection = Conn
|
||
Com.CommandText = svcQuery
|
||
Set Rs = Com.Execute
|
||
|
||
'MsgBox Rs.Recordcount
|
||
|
||
If Rs.Recordcount = 0 Then
|
||
If RTrim(arrayTele(17)) = "CU" Then
|
||
objADMissingFile.WriteLine Now & ", " & RTrim(arrayTele(0)) & ", " & RTrim(arrayTele(5)) & ", " & RTrim(arrayTele(4)) & " " & RTrim(arrayTele(3)) & ", " & RTrim(arrayTele(2))
|
||
End If
|
||
intADMissing=intADMissing + 1
|
||
|
||
Else
|
||
intTotalMatches=intTotalMatches+1
|
||
strDN=rs.fields("cn")
|
||
'wscript.echo strDN
|
||
strDN=rs.fields("distinguishedName")
|
||
'wscript.echo strDN
|
||
'MsgBox "strDN: " & strDNSearch
|
||
|
||
'GET USER OBJECT FROM AD
|
||
Set objUser = GetObject ("LDAP://" & strDN)
|
||
|
||
'************************************************************************************************************
|
||
'CHECK FOR NEED TO CHANGE TO GOVERNMENT
|
||
If RTrim(arrayTele(1)) = "Y" Then
|
||
If objUser.extensionAttribute9 = "CONTRACTOR" Then
|
||
objUser.Put "extensionAttribute9","GOVERNMENT"
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated STATUS: GOVERNMENT"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
End If
|
||
'CHECK IF BLANK
|
||
If objUser.extensionAttribute9 = "" Then
|
||
objUser.Put "extensionAttribute9","GOVERNMENT"
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated STATUS: GOVERNMENT"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
End If
|
||
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK FOR NEED TO CHANGE TO CONTRACTOR
|
||
If RTrim(arrayTele(1))="N" Then
|
||
If objUser.extensionAttribute9 = "GOVERNMENT" Then
|
||
objUser.Put "extensionAttribute9","CONTRACTOR"
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated STATUS: CONTRACTOR"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
End If
|
||
'CHECK IF BLANK
|
||
If objUser.extensionAttribute9 = "" Then
|
||
objUser.Put "extensionAttribute9","CONTRACTOR"
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated STATUS: CONTRACTOR"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
End If
|
||
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK FOR TITLE CHANGE
|
||
If arrayTele(6)=" " Then
|
||
Dim strTitle
|
||
strTitle = ""
|
||
If strtTitle \<\> objUser.title Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "title", 0
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted Title"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End if
|
||
|
||
Else
|
||
If RTrim(arrayTele(6)) \<\> objUser.title Then
|
||
'MsgBox "Title Needs to Change! " & objUser.userName
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(6)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "title", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "title",RTrim(arrayTele(6))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated Title: " & RTrim(arrayTele(6))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK FOR OFFICE CHANGE
|
||
If arrayTele(7)=" " Then
|
||
Dim strOffice
|
||
strOffice = ""
|
||
If strtOffice \<\> objUser.physicalDeliveryOfficeName Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "physicalDeliveryOfficeName", 0
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted Office"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End if
|
||
|
||
Else
|
||
If RTrim(arrayTele(7)) \<\> objUser.physicalDeliveryOfficeName Then
|
||
'MsgBox "Office Needs to Change! "& objUser.userName
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(7)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "physicalDeliveryOfficeName", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "physicalDeliveryOfficeName",RTrim(arrayTele(7))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated Office: " & RTrim(arrayTele(7))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'Check for PHONE NUMBER CHANGE
|
||
|
||
If arrayTele(8)=" - - " Then
|
||
strTelephone = ""
|
||
If strTelephone \<\> objUser.telephoneNumber Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "telephoneNumber", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted Telephone"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
End If
|
||
|
||
Else
|
||
|
||
strTelephone = RTrim(arrayTele(8))
|
||
If RTrim(arrayTele(9)) \<\> "" Then strTelephone = strTelephone & " x" & RTrim(arrayTele(9))
|
||
If strTelephone \<\> objUser.telephoneNumber Then
|
||
'Delete if Null Value
|
||
If strTelephone = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "telephoneNumber", 0
|
||
objUser.SetInfo
|
||
End If
|
||
'MsgBox "Phone number needs to Change!"
|
||
objUser.Put "telephoneNumber",strTelephone
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated Telephone: " & strTelephone
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK FOR CHANGE IN ADDRESS: Need to check if ADDR1 or ADDR2 Changed
|
||
|
||
If arrayTele(10) = "UNKNOWN " Then
|
||
Dim strAddress
|
||
strAddress = ""
|
||
If strAddress \<\> objUser.streetAddress Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "streetAddress", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted Address"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
|
||
Else
|
||
|
||
strAddress = RTrim(arrayTele(10))
|
||
|
||
If IsNUll(arrayTele(11)) Then
|
||
strAddress=strAddress
|
||
Else
|
||
If RTrim(arrayTele(11)) \<\> "" Then
|
||
Dim strAddress2
|
||
strAddress2 = RTrim(arrayTele(11))
|
||
strAddress = strAddress & chr(13) & chr(10) & strAddress2
|
||
End If
|
||
End If
|
||
If strAddress \<\> objUser.streetAddress Then
|
||
'MsgBox "Address needs to Change!"
|
||
'Delete if Null Value
|
||
If strAddress = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "streetAddress", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "streetAddress",strAddress
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated Address: " & strAddress
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
|
||
End If
|
||
strAddress=""
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK CITY
|
||
If arrayTele(12)=" " Then
|
||
Dim strCity
|
||
strCity = ""
|
||
If strCity \<\> objUser.l Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "l", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted City"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
|
||
Else
|
||
'MsgBox "AD City: " & objUser.l & "; and TeleCity: " & RTrim(arrayTele(12))
|
||
If RTrim(arrayTele(12)) \<\> objUser.l Then
|
||
'MsgBox "City Needs to Change! "& objUser.cn
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(12)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "l", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "l",RTrim(arrayTele(12))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated City: " & RTrim(arrayTele(12))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK STATE
|
||
|
||
|
||
If arrayTele(13)=" " Then
|
||
Dim strSt
|
||
strSt = ""
|
||
If strSt \<\> objUser.st Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "st", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted State"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
Else
|
||
If RTrim(arrayTele(13)) \<\> objUser.st Then
|
||
'MsgBox "State Needs to Change! " & objUser.cn
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(13)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "st", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "st",RTrim(arrayTele(13))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated State: " & RTrim(arrayTele(13))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK COUNTRY
|
||
Dim strCountry
|
||
If arrayTele(14)=" " Then
|
||
strCountry = ""
|
||
If strCountry \<\> objUser.c Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "c", 0
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted Country"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
Else
|
||
If RTrim(arrayTele(14)) \<\> objUser.c Then
|
||
Dim strCO
|
||
Dim strCC
|
||
strCountry=""
|
||
'MsgBox "Country Needs to Change!"
|
||
strCountry = RTrim(arrayTele(14))
|
||
|
||
Select Case strCountry
|
||
Case strCountry="US"
|
||
strCO="United States"
|
||
strCC="840"
|
||
Case strCountry="CA"
|
||
strCO="Canada"
|
||
strCC="124"
|
||
Case strCountry="UK"
|
||
strCountry="GB"
|
||
strCO="United Kingdom"
|
||
strCc="826"
|
||
Case strCountry="CN"
|
||
strCO="China"
|
||
strCc="156"
|
||
Case strCountry="NL"
|
||
strCO="Netherlands"
|
||
strCc="528"
|
||
Case strCountry="DE"
|
||
strCO="Germany"
|
||
strCc="276"
|
||
Case strCountry="IE"
|
||
strCO="Ireland"
|
||
strCc="372"
|
||
Case strCountry="MX"
|
||
strCO="Mexico"
|
||
strCc="484"
|
||
Case strCountry="IT"
|
||
strCO="Italy"
|
||
strCc="380"
|
||
Case strCountry="BS"
|
||
strCO="Bahamas"
|
||
strCc="44"
|
||
Case strCountry="BM"
|
||
strCO="Bermuda"
|
||
strCc="60"
|
||
Case strCountry="AW"
|
||
strCO="Aruba"
|
||
strCc="533"
|
||
Case strCountry="DO"
|
||
strCO="Dominican Republic"
|
||
strCc="214"
|
||
Case strCountry="SG"
|
||
strCO="Singapore"
|
||
strCC="702"
|
||
Case strCountry="JP"
|
||
strCO="Japan"
|
||
strCC="392"
|
||
Case strCountry="GR"
|
||
strCO="Greece"
|
||
strCC="300"
|
||
Case Else
|
||
'strCountry="US"
|
||
'strCO="United States"
|
||
'strCC="840"
|
||
End Select
|
||
|
||
objUser.Put "c",strCountry
|
||
objUser.Put "co",strCO
|
||
objUser.Put "countryCode",strCC
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated COUNTRY: " & RTrim(arrayTele(14))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
|
||
End If
|
||
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK ZIP
|
||
|
||
If arrayTele(15) = " " Then
|
||
Dim strZIP
|
||
strZIP = ""
|
||
If strZIP \<\> objUser.postalCode Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "postalCode", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted ZIP"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
|
||
Else
|
||
If RTrim(arrayTele(15)) \<\> objUser.postalCode Then
|
||
'MsgBox "ZIP Needs to Change! " & objUser.cn
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(15)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "postalCode", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "postalCode",RTrim(arrayTele(15))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated ZIP: " & RTrim(arrayTele(15))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
|
||
|
||
'************************************************************************************************************
|
||
'CHECK FAX
|
||
If arrayTele(18)=" " Then
|
||
Dim strFax
|
||
strFax = ""
|
||
If strFax \<\> objUser.facsimileTelephoneNumber Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "facsimileTelephoneNumber", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted FAX"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
Else
|
||
If RTrim(arrayTele(18)) \<\> objUser.facsimileTelephoneNumber Then
|
||
'MsgBox "FAX Needs to Change! " & objUser.cn
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(18)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "facsimileTelephoneNumber", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "facsimileTelephoneNumber",RTrim(arrayTele(18))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated FAX: " & RTrim(arrayTele(18))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'MAKE COMPANY CBP
|
||
Dim strCompany
|
||
strCompany= "CBP"
|
||
If objUser.company \<\> strCompany Then
|
||
objUser.Put "company", strCompany
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated Company"
|
||
End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK MOBILE - CURRENTLY DISABLED
|
||
'If IsNull(arrayTele(19)) Then
|
||
' Dim strMobile
|
||
' strMobile = ""
|
||
' If strMobile \<\> objUser.Mobile Then
|
||
' 'Delete if Null Value
|
||
' objUser.PutEx ADS_PROPERTY_CLEAR, "Mobile", 0
|
||
' objUser.SetInfo
|
||
' objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted Mobile"
|
||
' intChangeCounter=intChangeCounter + 1
|
||
' blnPersonChange = 1
|
||
' 'Set person change counter
|
||
' End If
|
||
|
||
'Else
|
||
'If RTrim(arrayTele(19)) \<\> objUser.mobile Then
|
||
'MsgBox "Mobile Needs to Change!"
|
||
'Delete if Null Value
|
||
'If RTrim(arrayTele(19)) = "" Then
|
||
'objUser.PutEx ADS_PROPERTY_CLEAR, "mobile", 0
|
||
'objUser.SetInfo
|
||
'End If
|
||
'objUser.Put "mobile",RTrim(arrayTele(19))
|
||
'objUser.SetInfo
|
||
'Update log file
|
||
'objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated Mobile: " & RTrim(arrayTele(19))
|
||
'intChangeCounter=intChangeCounter + 1
|
||
'blnPersonChange = 1
|
||
'Set person change counter
|
||
'End If
|
||
'End If
|
||
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK Org Code
|
||
If IsNull(arrayTele(16)) Then
|
||
Dim strOrgCode
|
||
strOrgCode = ""
|
||
If strOrgCode \<\> objUser.extensionAttribute4 Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "extensionAttribute4", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted ORG CODE"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
Else
|
||
If RTrim(arrayTele(16)) \<\> objUser.extensionAttribute4 Then
|
||
'MsgBox "FAX Needs to Change! " & objUser.cn
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(16)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "extensionAttribute4", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "extensionAttribute4",RTrim(arrayTele(16))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated ORG CODE: " & RTrim(arrayTele(16))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
|
||
'************************************************************************************************************
|
||
'CHECK DEPARTMENT
|
||
If bnlDeptUpdate=1 Then
|
||
Dim strDepartmentCode1
|
||
Dim strDepartmentCode
|
||
Dim strTeleDept
|
||
Dim strDepartment
|
||
|
||
|
||
strDepartmentCode1=objUser.extensionAttribute4
|
||
strDepartmentCode=Left(strDepartmentCode1,2)
|
||
'MsgBox strDepartmentCode
|
||
'strDepartmentCode1=CStr(strDepartmentCode)
|
||
Select Case strDepartmentCode
|
||
Case "01"
|
||
strTeleDept="OFFICE OF THE COMMISSIONER"
|
||
Case "02"
|
||
strTeleDept="OFFICE OF THE CHIEF COUNSEL"
|
||
Case "04"
|
||
strTeleDept="OFFICE OF INVESTIGATIONS"
|
||
Case "07"
|
||
strTeleDept="OFC OF INTERNAL AFFAIRS"
|
||
Case "08"
|
||
strTeleDept="OFC INTRNTNL AFFRS & TRD RLTS"
|
||
Case "11"
|
||
strTeleDept="OFFICE OF HUMAN RESOURCES MGMT"
|
||
Case "12"
|
||
strTeleDept="OFFICE OF CONGRESSIONAL AFFAIR"
|
||
Case "13"
|
||
strTeleDept="OFFICE OF FIELD OPERATIONS"
|
||
'MsgBox strTeleDept
|
||
Case "16"
|
||
strTeleDept="OFFICE OF FINANCE (CFO)"
|
||
Case "18"
|
||
strTeleDept="OFFICE OF TRAINING/DEVELOPMENT"
|
||
Case "19"
|
||
strTeleDept="OFFICE OF PUBLIC AFFAIRS"
|
||
Case "22"
|
||
strTeleDept="AC, CBP AIR AND MARINE"
|
||
Case "23"
|
||
strTeleDept="OIT"
|
||
Case "24"
|
||
strTeleDept="OFFICE OF INTERNATIONAL TRADE"
|
||
Case "80"
|
||
strTeleDept="OFC OF ASSET FORFEITURE MGT"
|
||
Case "95"
|
||
strTeleDept="OFFICE OF BORDER PATROL"
|
||
Case Else
|
||
strTeleDept=""
|
||
End Select
|
||
'MsgBox strTeleDept
|
||
|
||
If strTeleDept \<\> objUser.department Then
|
||
objUser.Put "department", strTeleDept
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated DEPT: " & strTeleDept
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
'************************************************************************************************************
|
||
|
||
|
||
'************************************************************************************************************
|
||
'CHECK Update Date
|
||
If IsNull(arrayTele(20)) Then
|
||
Dim strUpdateDate
|
||
strUpdateDate = ""
|
||
If strUpdateDate \<\> objUser.extensionAttribute2 Then
|
||
'Delete if Null Value
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "extensionAttribute2", 0
|
||
objUser.SetInfo
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Deleted UPDATE DATE"
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
Else
|
||
If RTrim(arrayTele(20)) \<\> objUser.extensionAttribute2 Then
|
||
'MsgBox "Update Date Needs to Change! " & objUser.cn
|
||
'Delete if Null Value
|
||
If RTrim(arrayTele(20)) = "" Then
|
||
objUser.PutEx ADS_PROPERTY_CLEAR, "extensionAttribute2", 0
|
||
objUser.SetInfo
|
||
End If
|
||
objUser.Put "extensionAttribute2",RTrim(arrayTele(20))
|
||
objUser.SetInfo
|
||
'Update log file
|
||
objLogFile.WriteLine Now & ": " & RTrim(arrayTele(0)) & ": Updated UPDATE DATE: " & RTrim(arrayTele(20))
|
||
intChangeCounter=intChangeCounter + 1
|
||
blnPersonChange = 1
|
||
'Set person change counter
|
||
End If
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
'If user record changed then count toward max changes.
|
||
If blnPersonChange = 1 Then
|
||
intPersonChange=intPersonChange + 1
|
||
End If
|
||
'************************************************************************************************************
|
||
|
||
End If
|
||
|
||
'************************************************************************************************************
|
||
|
||
Loop
|
||
|
||
objLogFile.WriteLine Now & ": " & "Total Records Changed = " & intPersonChange & "; Total Changes: " & intChangeCounter & " Total Records: " & intTotalRecords & " Total Matches: " & intTotalMatches
|
||
' MsgBox "Total Records Changed = " & intPersonChange & "; Total Changes: " & intChangeCounter & " Total Records: " & intTotalRecords & " Total Matches: " & intTotalMatches
|
||
|
||
Set objMessage = CreateObject("CDO.Message")
|
||
objMessage.Subject = "DIRECTORY CHANGES SUMMARY for " & NOW
|
||
objMessage.From = "postmaster@cbp.dhs.gov"
|
||
objMessage.To = "rob.craig@cbp.dhs.gov"
|
||
objMessage.TextBody = "Records Checked:" & intTotalRecords & "; AD Matches:" & intTotalMatches & "; Records Changed: " & intPersonChange & "; Total Changes: " & intChangeCounter & "; Missing: " & intADMissing
|
||
objMessage.Send
|
||
|
||
|
||
objTeleFile.Close
|
||
objLogFile.Close
|
||
objADMissingFile.Close
|
||
Set ObjFSOlog = Nothing
|
||
Set ObjFSOADMissing = Nothing
|
||
set fso = nothing
|
||
set conn = nothing
|
||
set com = nothing
|
||
|
||
|
||
**5.** **OSC Directory integration script Version 2.X**
|
||
|
||
|
||
'Global Address List Export
|
||
'Darren Castro, Northrop-Grumman, ITSG 2/1/2007
|
||
'Modified for CBP by ROB CRAIG on 12/1/2007
|
||
'
|
||
'The purpose of this script is to read the Global Address List Active Directory and export that list to OSC Environment.
|
||
'The search script will execute as follows:
|
||
|
||
'Create a LOG file.
|
||
'An event description will be written to the log file as each sequence is completed.
|
||
'An event description will be written to the log file as DN sequence is completed.
|
||
|
||
'Execute the LDIFDE DOS command to create the initial export file.
|
||
'Write event to LOG file.
|
||
|
||
'Create a new (empty) export file.
|
||
'Write event to LOG file.
|
||
|
||
'Open LDIF data file and read each LINE.
|
||
'If LINE begins with DN then Parse DN and create new DN
|
||
'Write new DN to export file.
|
||
'Write event to LOG file.
|
||
|
||
'If LINE does not begin with DN then write LINE to export file.
|
||
'Continue with each LINE until End Of File.
|
||
'Write EOF event to LOG file.
|
||
|
||
'Transfer the export file to OSC.
|
||
'Write event to LOG file.
|
||
|
||
Option Explicit
|
||
|
||
Dim strGALLogFile, strMaintMode, strGALExportFile, strGALUploadFile, strGALGroupsFile, strOLDLine, strTextLine, strNEWDN, strDownLoadSuccess
|
||
Dim strFTPServerIP, strFTPUserName, strFTPPassword, strNewClass, blnstrNewClass, strNewExtensionAttribute9, intGroups, strCN
|
||
Dim UserCount, SkipLine
|
||
Dim arrDN
|
||
Dim objGALLogFile, objGALExportFile, objGALUploadFile, objGALGroupsFile 'File Names Created/Read/Modified
|
||
Dim objfso 'FileSystemObject
|
||
Dim WshShell 'Windows Scripting Host Shell (DOS) Operations
|
||
|
||
Const ForAppending = 8
|
||
Const ForReading = 1
|
||
|
||
UserCount = 0
|
||
SkipLine = 0
|
||
|
||
|
||
Set objFSO = CreateObject("Scripting.FileSystemObject")
|
||
|
||
'*************************************************************************************
|
||
strMaintMode = 0 'Script DeBug/Maintenance Mode 1=Echo Messages 0=Do Not Echo Messages
|
||
'*************************************************************************************
|
||
|
||
If strMaintMode=1 Then On Error Resume Next
|
||
If strMaintMode=1 Then Wscript.Echo "DeBug/Maintenance Mode ON"
|
||
If strMaintMode=1 Then Wscript.Echo "Go"
|
||
|
||
'********************************************************************************************************************************
|
||
strGALLogFile="D:\DirectoryUpload\GALExport.log" 'Name of LOG file
|
||
strGALExportFile="D:\DirectoryUpload\GALExportFile.ldf" 'Name of LDIF file to READ. This file name must be SAME as file name in CBP_DirExport.bat
|
||
strGALUploadFile="D:\DirectoryUpload\export.dir" 'Name of (modified) file to create/upload to OSC
|
||
strGALGroupsFile="D:\DirectoryUpload\GALExportFileGROUPS.ldf" 'Name of Groups File
|
||
'********************************************************************************************************************************
|
||
|
||
If strMaintMode=1 Then Wscript.Echo "strGALLogFile: " & strGALLogFile
|
||
|
||
'Create a LOG file
|
||
Set objGALLogFile = objFSO.CreateTextFile(strGALLogFile)
|
||
objGALLogFile.Close
|
||
|
||
If strMaintMode=1 Then Wscript.Echo "LogFile created: " & strGALLogFile
|
||
|
||
If objFSO.FileExists(strGALLogFile) Then
|
||
'Write log event LOG file created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Log File: " & strGALLogFile & " created." & VBCrLF)
|
||
objGALLogFile.Close
|
||
Else
|
||
'Create Log File Failed - End Script
|
||
WScript.quit
|
||
End If
|
||
|
||
If objFSO.FileExists("D:\DirectoryUpload\CBP_DirExport.bat") Then
|
||
'Write log LDIF Batch file found.
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " LDIFDE batch file: " & "D:\DirectoryUpload\CBP_DirExport.bat" & " found." & VBCrLF)
|
||
objGALLogFile.Close
|
||
Else
|
||
'Write log LDIF Batch file NOT found. End Script
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " LDIFDE batch file: " & "D:\DirectoryUpload\CBP_DirExport.bat" & " NOT found." & VBCrLF)
|
||
objGALLogFile.Write (NOW & " Script Abortedted.")
|
||
objGALLogFile.Close
|
||
WScript.quit
|
||
End If
|
||
|
||
'Execute LDIFDE DOS command to create initial export file.
|
||
Set WshShell = WScript.CreateObject("WScript.Shell")
|
||
WshShell.run "D:\DirectoryUpload\CBP_DirExport.bat", 1, true 'Run the batch file to execute LDIFDE
|
||
|
||
If objFSO.FileExists(strGALExportFile) Then
|
||
'Write log event LDIF Export file created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Export file: " & strGALExportFile & " created." & VBCrLF)
|
||
objGALLogFile.Close
|
||
Else
|
||
'Write log event LDIF Export file NOT created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Export file: " & strGALExportFile & " NOT created." & VBCrLF)
|
||
objGALLogFile.Write (NOW & " Script Aborted.")
|
||
objGALLogFile.Close
|
||
WScript.Quit
|
||
|
||
End If
|
||
|
||
'**********************NEW
|
||
|
||
'1. Create Groups File
|
||
'2. Read one line at a time from CBP_DIRExportGroups.bat and Append to strGALExportFile
|
||
'3. Write to log file number of entries appended
|
||
'4. Close file
|
||
|
||
|
||
'1. Execute LDIFDE DOS command to create GROUPS export file
|
||
Set WshShell = WScript.CreateObject("WScript.Shell")
|
||
WshShell.run "D:\DirectoryUpload\CBP_DirExportGROUPS.bat", 1, true 'Run the batch file to execute LDIFDE
|
||
|
||
'LOG Creation of File
|
||
If objFSO.FileExists(strGALGroupsFile) Then
|
||
'Write log event LDIF Export file created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Export file: " & strGALGroupsFile & " created." & VBCrLF)
|
||
objGALLogFile.Close
|
||
Else
|
||
'Write log event LDIF Export file NOT created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Export file: " & strGALGroupsFile & " NOT created." & VBCrLF)
|
||
objGALLogFile.Write (NOW & " Script Aborted.")
|
||
objGALLogFile.Close
|
||
WScript.Quit
|
||
|
||
End If
|
||
|
||
'2. Read line by line from strGALGroupsFile and write to strGALExportFile
|
||
|
||
|
||
set objGALGroupsFile = objFSO.OpenTextFile(strGALGroupsFile, 1)
|
||
Set objGALExportFile = objFSO.OpenTextFile(strGALExportFile, ForAppending, True)
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
|
||
Do Until objGALGroupsFile.AtEndOfStream
|
||
strTextLine = objGALGroupsFile.ReadLine
|
||
If intGroups=0 Then
|
||
intGroups=intGroups+1
|
||
Else
|
||
If Instr(strTextLine, "dn:") Then
|
||
intGroups = intGroups + 1
|
||
Else
|
||
If Instr(strTextLine, "cn:") Then
|
||
strCN=Mid(strTextLine,4)
|
||
End If
|
||
|
||
End If
|
||
If Instr(strTextLine, "cn:") Then
|
||
objGALExportFile.Write (strTextLine & VBCrLF)
|
||
objGALExportFile.Write ("sn:" & strCN & VBCrLF)
|
||
Else
|
||
objGALExportFile.Write (strTextLine & VBCrLF)
|
||
End If
|
||
End If
|
||
|
||
Loop
|
||
intGroups = intGroups-1
|
||
|
||
'3. Log Groups created
|
||
objGALLogFile.Write (NOW & " " & intGroups & " Groups Written.")
|
||
'4. CLose Files
|
||
objGALLogFile.Close
|
||
objGALGroupsFile.Close
|
||
objGALExportFile.Close
|
||
|
||
|
||
'**********************NEW
|
||
|
||
'Create Upload File
|
||
Set objGALUploadFile = objFSO.CreateTextFile(strGALUploadFile)
|
||
objGALUploadFile.Close
|
||
|
||
If strMaintMode=1 Then Wscript.Echo "UploadFile created: " & strGALUploadFile
|
||
|
||
If objFSO.FileExists(strGALUploadFile) Then
|
||
'Write log event Upload file created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Upload File: " & strGALUploadFile & " created. " & VBCrLF)
|
||
objGALLogFile.Close
|
||
Else
|
||
'Write log event Upload file NOT created
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Upload File: " & strGALUploadFile & " NOT created. Script Aborted. " & VBCrLF)
|
||
objGALLogFile.Close
|
||
WScript.Quit
|
||
End If
|
||
|
||
'Open LDIF Export file
|
||
Set objGALExportFile = objFSO.OpenTextFile(strGALExportFile, 1)
|
||
|
||
'Write log event Opening LDIF Export file for processing
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Open " & strGALExportFile & " for proccessing" & VBCrLF)
|
||
'objGALLogFile.Close
|
||
Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
|
||
|
||
Do Until objGALExportFile.AtEndOfStream
|
||
strOLDLine = objGALExportFile.ReadLine
|
||
If InStr(strOLDLine, "SystemMailbox") Then
|
||
'Write log event SystemMailbox will not be uploaded.
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & strOLDLine & " account will not be uploaded." & VBCrLF)
|
||
'objGALLogFile.Close
|
||
SkipLine=1
|
||
Else If StrOLDLine = "" Then
|
||
SkipLine=0
|
||
End If
|
||
End If
|
||
|
||
If SkipLine=0 Then
|
||
If strOLDLine \<\> "" Then
|
||
If InStr(strOLDLine, "dn:") Then
|
||
'Write log event processing old DN:
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Processing OLD " & strOLDLine & VBCrLF)
|
||
'objGALLogFile.Close
|
||
|
||
'PARSE THE LINE NAME INFO
|
||
arrDN = split(strOLDLine, ",")
|
||
|
||
If InStr(arrDN(1), "OU=") Then
|
||
strNEWDN = arrDN(0) & ",DC=CBPexch,DC=CBP,DC=dhs,DC=gov"
|
||
Else
|
||
strNEWDN = arrDN(0) & "," & arrDN(1) & ",DC=CBPexch,DC=CBP,DC=dhs,DC=gov"
|
||
End If
|
||
|
||
'Write line to GALUploadFile
|
||
If UserCount\>0 Then
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
objGALUploadFile.Write (VBCrLF)
|
||
'objGALUploadFile.Close
|
||
End If
|
||
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
objGALUploadFile.Write (strNEWDN & VBCrLF)
|
||
'objGALUploadFile.Close
|
||
|
||
'WRITE DN: & NAME INFO & OCCONUS DOM INFO TO GALLogfile as an event
|
||
'Write log event processed NEW DN:
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Processed NEW " & strNEWDN & VBCrLF)
|
||
'objGALLogFile.Close
|
||
|
||
UserCount=UserCount+1
|
||
|
||
Else
|
||
'CHECK TO SEE IF OBJECTCLASS=GROUP or msExchDynamicDistributionList
|
||
|
||
If InStr(strOldLine, "objectClass: msExch") Then
|
||
'CHANGE TO: "objectClass: user"
|
||
strNewClass = "objectClass: user"
|
||
'WRITE LOG EVENT CHANGING OBJECT CLASS:
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Processing OLD " & strOLDLine & VBCrLF)
|
||
'objGALLogFile.Close
|
||
|
||
If UserCount\>0 Then
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
'objGALUploadFile.Write (VBCrLF)
|
||
'objGALUploadFile.Close
|
||
End If
|
||
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
objGALUploadFile.Write (strNewClass & VBCrLF)
|
||
'objGALUploadFile.Close
|
||
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Processed NEW Class " & strNewClass & VBCrLF)
|
||
'objGALLogFile.Close
|
||
blnstrNewClass = 1
|
||
End If
|
||
|
||
If InStr(strOLDLine, "objectClass: group") Then
|
||
'CHANGE TO: "objectClass: user"
|
||
strNewClass = "objectClass: user"
|
||
'WRITE LOG EVENT CHANGING OBJECT CLASS:
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Processing OLD " & strOLDLine & VBCrLF)
|
||
'objGALLogFile.Close
|
||
|
||
If UserCount\>0 Then
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
'objGALUploadFile.Write (VBCrLF)
|
||
'objGALUploadFile.Close
|
||
End If
|
||
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
objGALUploadFile.Write (strNewClass & VBCrLF)
|
||
'objGALUploadFile.Close
|
||
|
||
'Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Processed NEW Class " & strNewClass & VBCrLF)
|
||
'objGALLogFile.Close
|
||
blnstrNewClass = 1
|
||
|
||
Else
|
||
If InStr(strOLDLine, "extensionAttribute9: CONTRACTOR") Then
|
||
'CHANGE TO: "extensionAttribute9: CTR"
|
||
strNewExtensionAttribute9="extensionAttribute9: CTR"
|
||
objGALUploadFile.Write (strNewExtensionAttribute9 & VBCrLF)
|
||
objGALLogFile.Write (NOW & " Changing to: " & strNewExtensionAttribute9 & VBCrLF)
|
||
blnstrNewClass = 1
|
||
|
||
End If
|
||
|
||
End If
|
||
|
||
|
||
'Write line to GALUploadFile
|
||
If blnstrNewClass = 0 Then
|
||
'Set objGALUploadFile = objFSO.OpenTextFile(strGALUploadFile, ForAppending, True)
|
||
objGALUploadFile.Write (strOLDLine & VBCrLF)
|
||
'objGALUploadFile.Close
|
||
End If
|
||
blnstrNewClass = 0
|
||
|
||
|
||
End If
|
||
|
||
|
||
End If
|
||
End If
|
||
Loop
|
||
|
||
|
||
objGALExportFile.Close
|
||
objGALLogFile.Close
|
||
objGALUploadFile.Close
|
||
'Write log event Closing LDIF Export file processing complete
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Closing " & strGALExportFile & " proccessing completed" & VBCrLF)
|
||
objGALLogFile.Write (NOW & " " & UserCount & " Users Processed" & VBCrLF)
|
||
objGALLogFile.Close
|
||
|
||
'BEGIN FTP
|
||
'Find Upload File
|
||
If objFSO.FileExists(strGALUploadFile) Then
|
||
'Write log event Upload file found
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Upload file: " & strGALUploadFile & " found." & VBCrLF)
|
||
objGALLogFile.Close
|
||
Else
|
||
'Write log event GAL Upload file NOT found
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Upload file: " & strGALExportFile & " NOT found." & VBCrLF)
|
||
objGALLogFile.Write (NOW & " Script Aborted.")
|
||
objGALLogFile.Close
|
||
WScript.Quit
|
||
End If
|
||
|
||
'
|
||
'Execute FTP DOS command to upload file.
|
||
Set WshShell = CreateObject("WScript.Shell")
|
||
WshShell.Run "ftp -s:D:\DirectoryUpload\FTPUploadDirectory.txt", 1, True 'FTP PUT the Upload File
|
||
|
||
'Write log FTP command to Upload file completed.
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " " & "Attempted to upload " & strGALUploadFile & VBCrLF)
|
||
objGALLogFile.Close
|
||
|
||
'Execute FTP DOS command to get OSC log file.
|
||
Set WshShell = CreateObject("WScript.Shell")
|
||
WshShell.Run "ftp -s:D:\DirectoryUpload\FTPGetOSCLog.txt", 1, True 'FTP GET the Log File
|
||
|
||
'Write log FTP command to Download OSC log file completed.
|
||
If objFSO.FileExists("D:\DirectoryUpload\uscs-01-exch2n.log") Then
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " OSC log file: " & "D:\DirectoryUpload\uscs-01-exch2n.log" & " downloaded." & VBCrLF)
|
||
strDownLoadSuccess = "Log File successfully downloaded. "
|
||
objGALLogFile.Close
|
||
Else
|
||
'Write OSC NOT found. End Script
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " OSC Log File: " & "D:\DirectoryUpload\uscs-01-exch2n.log" & " NOT downloaded." & VBCrLF)
|
||
objGALLogFile.Write (NOW & " Script Aborted.")
|
||
strDownLoadSuccess="Log File NOT DOWNLOADED. "
|
||
objGALLogFile.Close
|
||
End If
|
||
|
||
Set objGALLogFile = objFSO.OpenTextFile(strGALLogFile, ForAppending, True)
|
||
objGALLogFile.Write (NOW & " Script Completed.")
|
||
objGALLogFile.Close
|
||
|
||
'*************************************************************************************
|
||
'Cycle through log file to identify status from DHS
|
||
|
||
If objFSO.FileExists("D:\DirectoryUpload\uscs-01-exch2n.log") Then
|
||
|
||
Dim strDHSStatus, strOSCLogfile, strInputLine
|
||
Dim strInputLine1, strInputLine2, strInputLine3, strInputLine4, strInputLine5, strInputLine6
|
||
Dim objOSCLogFile
|
||
|
||
strOSCLogfile = "D:\DirectoryUpload\uscs-01-exch2n.log"
|
||
|
||
'Cycle through file until the line is found:
|
||
|
||
Set objOSCLogFile=ObjFSO.OpenTextFile(strOSCLogfile, ForReading)
|
||
|
||
Do Until objOSCLogFile.AtEndOfStream
|
||
strInputLine=objOSCLogFile.ReadLine
|
||
|
||
If Instr(strInputLine, "Dirsync Statistics") Then
|
||
strInputLine1 = strInputLine
|
||
End If
|
||
|
||
If Instr(strInputLine, "Start time:") Then
|
||
strInputLine2 = strInputLine
|
||
End If
|
||
|
||
If Instr(strInputLine, "End time:") Then
|
||
strInputLine3 = strInputLine
|
||
End If
|
||
|
||
If Instr(strInputLine, "X500 adds:") Then
|
||
strInputLine4 = strInputLine
|
||
End If
|
||
|
||
If Instr(strInputLine, "Lan entries") Then
|
||
strInputLine5 = strInputLine
|
||
End If
|
||
|
||
If Instr(strInputLine, "Informational messages:") Then
|
||
strInputLine6 = strInputLine
|
||
End If
|
||
|
||
Loop
|
||
|
||
strDHSStatus = strInputLine1 & VBCrLF & strInputLine2 & VBCrLF & strInputLine3 & VBCrLF & strInputLine4 & VBCrLF & strInputLine5 & VBCrLF & strInputLine6
|
||
|
||
'12-12-2007. 0:58:31 DHSExch2000toX500-21764: (uscs-01-exch2n) Dirsync Statistics:
|
||
'12-12-2007. 0:58:31 DHSExch2000toX500-21764: (uscs-01-exch2n) -- Start time: 12-12-2007. 0:51:21
|
||
'12-12-2007. 0:58:31 DHSExch2000toX500-21764: (uscs-01-exch2n) -- End time: 12-12-2007. 0:58:31
|
||
'12-12-2007. 0:58:31 DHSExch2000toX500-21764: (uscs-01-exch2n) -- X500 adds: 104, X500 deletes: 11, X500 modifies: 6, X500 nochange: 59394
|
||
'12-12-2007. 0:58:31 DHSExch2000toX500-21764: (uscs-01-exch2n) -- Lan entries not processed: 473
|
||
'12-12-2007. 0:58:31 DHSExch2000toX500-21764: (uscs-01-exch2n) -- Informational messages: 74
|
||
|
||
Else
|
||
'File Not Found -- Error!
|
||
strDHSStatus = "No log file found!"
|
||
|
||
End If
|
||
|
||
'*************************************************************************************
|
||
|
||
'*************************************************************************************
|
||
'Send EMAIL of STATUS to ADMINISTRATOR
|
||
Dim objMessage
|
||
Set objMessage = CreateObject("CDO.Message")
|
||
objMessage.Subject = "Directory Upload Status for: " & NOW
|
||
objMessage.From = "cbppostmaster@cbp.dhs.gov"
|
||
objMessage.To = "rob.craig@cbp.dhs.gov"
|
||
objMessage.TextBody = "Status: " & strDownLoadSuccess & UserCount & " Records Uploaded." & VBCrLF & strDHSStatus
|
||
objMessage.Send
|
||
'*************************************************************************************
|
||
|
||
|
||
|
||
If strMaintMode=1 Then Wscript.Echo "Stop"
|
||
\> From \<[https://uconnect.cbpnet.cbp.dhs.gov/sites/OIT/edme/edco/dco/osg/WSG%20Wiki/WebTele%20AD%20Integration%20Documentation.aspx](https://uconnect.cbpnet.cbp.dhs.gov/sites/OIT/edme/edco/dco/osg/WSG%20Wiki/WebTele%20AD%20Integration%20Documentation.aspx)\> |