Ever wanted to schedule turning a project to inactive so that no more interviewers can be collected? This article shows you how to login to the DPMServer , find the project and make it inactive.
The first thing we need to do is to create an mrs script and enter then enter the following code.
Const SERVER = "ENTER_SERVERNAME_HERE" Const USERNAME = "ENTER_USERNAME_HERE" Const PASSWORD = "ENTER_PASSWORD_HERE" Dim dpmAgent,dpmProject,dpmProjects Dim oArray,iProjectCount oArray = "J2001" oArray = "25/12/2009" oArray = "Inactive" oArray = "J9001" oArray = "25/12/2009" oArray = "Inactive"
At this stage all we have done is to create some variables to hold specific values. The three constants at the top of the script are used to hold the servername that we will login into and the username and password that we will use to login with. These names need to be Server Administration logins that have access to the projects that you want to Inactivate.
next we dimension some variables to hold the objects that will be used to login and also we declare an array that will hold the list of projects that we want to work with. In the first element we hold the name , this is the PROJECTID , then the date that we would like the Inactivate to happen and then lastly the status we want to change the job to. There are probably better ways to do this , for example , you could have your list of projects in a SQL database that was updated via a web page, but for the purpose of this example we are just going to use an array.
Next Type the following code into your script.
Debug.Log("Creating Agent object...") Set dpmAgent = CreateObject("SPSSMR.DPM.Security.Login.Agent2") Debug.Log("Login as specified user...") dpmAgent.ConnectToDPMServer(SERVER) dpmAgent.Login(USERNAME,PASSWORD,Null) Set dpmProjects = dpmAgent.Server.Projects
The next bit of code shows us how we can login to the DPMserver as a specified user. This is the same thing that happens when we use DPM Explorer to look at our server settings and don’t forget you will have to run this on the server itself if your server is hosted outside your network and port 65100 is not opened up. If the Server is in your network and the port is open you should be able to run this from your desktop.
Now Finish the remaining code,
iProjectCount = 0 Do While (oArray[iProjectCount] <> "") On Error Goto ProjectNotFound If ( oArray[iProjectCount] = format(now(),"ddmmyyyy") ) Then Debug.Log("Get the project from DPM...") Set dpmProject = dpmAgent.Server.Projects[oArray[iProjectCount]] dpmProject.properties["Status"] = oArray[iProjectCount] End If ProjectNotFound: On error Goto 0 iProjectCount=iProjectCount+1 Loop Debug.Log("Logging out of Agent...") dpmAgent.Logout()
So what is this doing , well we are looping the array and as soon as we find an array cell that is blank the loop will stop. If the first cell in the array is not empty we will then check to see if the date specified is today’s date. This is done using the format() command on the now() command to return just the date from the date time. We then compare that with the value stored in the array and if there is a match we connect to the project and set the status of the project to the value stored in our array in cell position 3, which in this case is Inactive. Once this has happened and nothing has gone wrong the project counter is incremented by one and we move onto the next item in the list.
Once you have this code working you can then place you file on the server and create a batch file and schedule it with the windows scheduler. For more information about the scheduler you can read this article.