Archive for September, 2011

Found a good link covering options of converting different Office applications from trial to full. List of the application goes as :

  • Microsoft Access 2010
  • Microsoft Excel 2010
  • Microsoft InfoPath 2010
  • Microsoft OneNote 2010
  • Microsoft Outlook 2010
  • Microsoft PowerPoint 2010
  • Microsoft Publisher 2010
  • Microsoft Word 2010
  • Microsoft Project Professional 2010
  • Microsoft Project Standard 2010
  • Microsoft Visio Standard 2010

Refer here for the details : http://office.microsoft.com/en-us/project-help/convert-a-trial-version-of-an-office-2010-suite-or-program-to-a-full-retail-version-HA101886436.aspx

Read Full Post »

Thanks to a question asked by Ben, I thought of posting this write-up; MS Project 2010 has 32 bit color, so it has rich set of new and mesmerizing color set in its font color option which include Orange and variables shaded of blue and green. While MS Project 2007 has 16 bit color, so saving a 2010 font formatted file have impact when opened in 2007.

Here goes the list :

1. Orange could change to Red, lighter shades of Blue can turn to hyperlink blue etc. Implying that newer shaded of 2010 changes to some nearby shades in 2007.

2. Strike through tasks are not deleted in 2007, but strike through is removed.

3. Inactive tasks are deleted.

4. Manually scheduled tasks become Auto, as well constrains are set on them to trace their manual start or finish dates.

Other then that :

When you convert a Project 2007 file to a Project 2010 file, Project will operate in fully functional mode and not in compatibility mode. However, Project’s default behavior for new tasks will differ from new files that are created in Project 2010.

1. Existing Tasks of 2007 will remain to Auto mode in 2010.

2. New tasks created would be in Auto mode by defualt, unless changed to manual.

3. Task Mode column won’t be displayed by default and need to be inserted.

4. Master Project, displays with full functionality, but only those subprojects which are converted to 2010 would expand rest won’t.

5. Cross-project links from Project files that have not been converted to Project 2010 and that are contained within a file that has been converted to Project 2010 cannot be expanded. Cross-project links that are converted to Project 2010 can be expanded.

6. Resource Pool using projects when converted to 2010 would need Resource Pool also to be converted to 2010.

7. Fields used in Formula in 2007 would change to its equivalent fields in 2010.

Will list more points, as I come across, these are some very top level observations.

Read Full Post »

Please connect with us for free online over-view of MS Project 2010 /Project Server 2010. Based on the number of participants, The session’s dates will be announced soon, please leave us your contact and mail ID for further communication, in order for us to send you over the live meeting link.

Read Full Post »

Sub UpdateResourceCostRate()

Dim Res As Resource
For Each Res In ActiveProject.Resources
If Not Res Is Nothing Then

Res.CostRateTables(“A”).PayRates.Add “06/09/2011”, “$100/h”, “$200/h”, “0”
Res.CostRateTables(“B”).PayRates.Add “06/09/2011”, “$120/h”, “$240/h”, “0”
Res.CostRateTables(“C”).PayRates.Add “06/09/2011”, “$140/h”, “$280/h”, “0”
End If

Next Res

End Sub

Read Full Post »

Microsoft project Professional uses calendar extensively for scheduling tasks and leveling resources, but the API for calendars are not exposed in project server to list out all the non-working day, so here is a small piece of macro which uses calendar object loops through all the calendars and pushes the data to a custom table , and now you can report onto it as you wish,

Thanks to colleague Parth for sharing this code  🙂


Attribute VB_Name = “Module1”

‘Created By : Parth Rawal

‘Purpose : To Create the Exception data repository in the custom database for each project

Dim conDataAss As New ADODB.Connection

Dim cmd As New ADODB.Command

Sub calendar()

On Error GoTo Errorhandler


Dim cal As calendar

Dim i, j As Integer

Dim calName As String

j = 1

calName = ActiveProject.calendar.Name

i = ActiveProject.BaseCalendars(calName).Exceptions.Count


Dim rs As New ADODB.Recordset

With conDataAss

conDataAss.Open “Provider=sqloledb;” & _

“Server=ServerName;” & _

“Database=CustomDB;” & _

“User Id=userID;” & _


End With

cmd.ActiveConnection = conDataAss

cmd.CommandText = “CustomDB_PROJECT_CALENDAR” ‘SP Name

cmd.CommandType = adCmdStoredProc


For Each cal In ActiveProject.BaseCalendars

If cal.Name = calName Then

Do While j <= i

‘to insert the records for each project in the Custom database

If (conDataAss.State = ObjectStateEnum.adStateClosed) Then

conDataAss.Open ‘If connection is closed then open the connection

End If

cmd.Parameters(1).Value = CStr(ActiveProject.ProjectSummaryTask.Guid)

cmd.Parameters(2).Value = CStr(cal.Guid)

cmd.Parameters(3).Value = cal.Name

cmd.Parameters(4).Value = cal.Exceptions.Item(j).Name

cmd.Parameters(5).Value = cal.Exceptions.Item(j).Start

Set rs = cmd.Execute()

j = j + 1


End If

Next cal


Exit Sub


MsgBox Err.Description

End Sub


Read Full Post »

Project Server 2010 August Cumulative Update has been released earlier this week, beware to read all the documentation properly before applying, though there has been some problem with the sharepoint foundation CU but that doesn’t mean you cannot test the Project server package, with the testing and release of sharepoint bits later this week, the full roll up package will be available to install

for more information read the link below 


Issues that this hotfix package fixes

  • When you apply updates on a completed task that does not have an actual start date, task scheduling fails in Project Server 2010.
  • Assume that you first set a large value for the actual work on a material assignment in Project Server 2010. Then, youreduce the value. In this case, the actual work is saved incorrectly for the material resource.
  • Assume that you click Send to submit a timesheet in Project Server 2010. You click Send again when the timesheet is being processed in the queue. In this case, a TimesheetIncorrectMode error occurs.
  • Task scheduling fails in Project Server 2010 if a project contains links to tasks that do not exist.
  • Consider the following scenario:
    • You have a project that has a material resource.
    • The material resource is assigned to a task.
    • The material resource has no cost.
    • The cost accrual is set to the start of the assignment.

    In this scenario, task scheduling fails in Project Server 2010.

  • The scheduling feature changes a task’s start date to an earlier date under certain conditions. This issue may cause task scheduling to fail in Project Server 2010.
  • Assume that you open a timesheet for a future period of time. Then, you click Save. In this case, additional lines are added into the timesheet.
  • When a project manager makes a change to an assignment in Project Server 2010, resources receive an email message notification even if the assignment is completed.
  • The reporting database update job fails in Project Server 2010. Therefore, other jobs that are marked with “waiting to be processed” that follow the update job in the queue are auto canceled.
  • When you click the This is an Enterprise Project. Click this icon to open the Project for editing in Project Professional icon to open a project in read/write mode in the Project Center, the project opens in read-only mode.
  • You cannot use the QueueUpdateProject project server interface (PSI) to change a project owner if you do not have Save permission in Project Server 2010


Read Full Post »

Problem :: Had 2 Enterprise Custom Field(ECF) of type date on a PDP Page, eg. Start Date, Finish Date which requires simple validation like Finish Date should not be less than Start Date, now this can be very well handled in workflow, values can be compared and actions can be taken, however i didn’t wanted to redeploy the workflow as redploying means reattaching the projects with workflow, other reason was for people who don’t know visual studio, it  would be tough for them to do so, so as always something to be managed through front end 😉 and when we talk about front end nothing can be as good as Javascript 😉 so here you go

Steps 1: Insert a content editor webpart on the page , note: content editor web part should always be placed below the webpart which contains the ECF you want to validate

Step 2: Edit The HTML For Content Editor Web Part, copy and paste the code as below, make sure to change the GUID of ECF
and viola you are done 🙂
<script type=”text/javascript”>

function CompareDates(StartDate,FinishDate,separator)
var smallDateArr = Array();
var largeDateArr = Array();

smallDateArr     = StartDate.split(separator);
largeDateArr     = FinishDate.split(separator);

var smallDt      = smallDateArr[0];
var smallMt      = smallDateArr[1];
var smallYr      = smallDateArr[2];

var largeDt      = largeDateArr[0];
var largeMt      = largeDateArr[1];
var largeYr      = largeDateArr[2];

    return 0;
else if(parseInt(smallYr)<=parseInt(largeYr) && parseInt(smallMt)>parseInt(largeMt))
    return 0;
else if(parseInt(smallYr)<=parseInt(largeYr) && parseInt(smallMt)==parseInt(largeMt) && parseInt(smallDt)>parseInt(largeDt))
    return 0;
    return 1;


function DateValidation()
{ //alert(“FunctionCalled”)

var StartDate = new Date();
var FinishDate = new Date();

 var arr = document.getElementsByTagName(‘input’);

 for (var i = 0; i < arr.length; i++)
  if (arr[i].GUID == ‘6f9483a7-d48a-4d22-a45d-bab3506464b4’)
   StartDate= arr[i].value;  
  if(arr[i].GUID == ‘134e12d9-51cc-4655-b524-6a4d5e14060a’)
   FinishDate = arr[i].value;

if(CompareDates(StartDate,FinishDate,’/’) == 0)
    alert(‘Initial Project End Date Cannot be less than Initial Project Start Date!’,’Error In Date Value’);

 for (var i = 0; i < arr.length; i++)
   if (arr[i].GUID == ‘6f9483a7-d48a-4d22-a45d-bab3506464b4’)    {   arr[i].value=”;   }
   if(arr[i].GUID == ‘134e12d9-51cc-4655-b524-6a4d5e14060a’)    {   arr[i].value=”;    }

    //return false;


function findacontrolForDates()
 var arr = document.getElementsByTagName(‘input’);

 for (var i = 0; i < arr.length; i++)
  if (arr[i].GUID == ‘6f9483a7-d48a-4d22-a45d-bab3506464b4’)
    document.getElementById(arr[i].id).onblur = DateValidation;
  if(arr[i].GUID == ‘134e12d9-51cc-4655-b524-6a4d5e14060a’)
   document.getElementById(arr[i].id).onblur = DateValidation;



Dont Forget to check the comments & related post here

Read Full Post »