Tuesday, June 23, 2015

How to deactivate a user with AD account deleted and no AD sync ?


Here is a short one. One of our fellow MVP shared with us an issue which might look trivial. 

The background
Project Server 2013, on premise (meaning hosted on the customer infrastructures, not Project Online). The AD sync is not enabled, meaning that the users are created, updated, deactivated manually and not syncronized via the organization AD.

The issue
A user has been deleted from the AD. Since there is no AD sync in Project Server, the user in Project Server is not automatically deactivated. As soon as you don't need to edit anything in the user's profile, this is not an issue. But if you do, now there is an issue.. Project Server needs a valid AD account for every user, meaning that whenever you save a user's profile, it checks for the AD account and prevent you saving the user's profile in case the AD account is not valid (or empty).
Consequently you just cannot edit anymore the user's profile to deactivate it, neither just delete his AD account, which cannot be empty for a user. If you try so, you'll get the following message:

Figure 1: error message while saving a user's profile with no valid account
Neither you can use the account status (active/inactive) since you'll be prevented from saving the profile.

The workaround
Discussing about this non-sense, another fellow MVP proposes a workaround: entering a valid AD account for this user deleted in the AD, deactivate him and save the resource. This is quite an ugly solution but it does the job, doesn't it?

The solution
Finally a third MVP brough up a solution, THE solution. In the user's profiles list (server settings, manager users), you actually have a button which is intented to deactivating users. We hardly make a stop on this button since it is there since ages and in our mind, what is old is useless and has obviously been replaced by a newer feature. This feature doesn't require to edit and save the resource but directly write in the DB whitout checking for a valid account, which solves our issue!
Figure 2: deactivating a user from the user's profiles list
The limitation
Nothing is perfect... Once deactivated as explained, you cannot use the same method ot reactivate the resource, you do need to edit the user's profile, facing the same issue again. But what would be the need to reactivate a user (not a resource) with no valid AD account?

The conclusions
  1. Do not bypass those good old buttons you are seeing since Project 2003 and never looking anymore. They can be quite useful. For example, the "view effective rights" feature can use very useful for supporting your users in case you have a complex security model. See this blog I wrote some months ago.
  2. An AD account should not be deleted but only deactivated, otherwise it could trigger such issues in connected systems.
  3. Anyway, using the AD sync prevents from having such issues.
  4. The MVP community is extremely powerful, skilled, reactive, imaginative, efficient!

Share this article :

Monday, June 8, 2015

Project Virtual Conference 2015

So excited, today was announced the Project Virtual Conference on 22nd October 2015. This conference is completely focused on MS Project, Project Server and Project Online, with a lot of support from the Microsoft Project Community. So attendees get pure, unadulterated content about using the technology for your business problems.

Please refer to site here:

Facebook page:

Hastage: #ProjectVconf

Share this article :

Formatting the Gantt chart using the task status

Hi All!

Sometimes Project can bring up surprises. While trying to write a formula in Project Pro using the task status (late, on schedule, complete, future), it tooks me 15 minutes to find out that the status is actually a number and not a text. Here is a simple test. Take a project plan a create a number custom field (status number for example) with the formula =[Status]. 
Figure 1: using a formula for retrieving the status value
Here is what you get using a simple project plan:
Figure 2: task status value stored as a number
So what we can say is that the status is actually stored as a number in the Project DB, not as a text. Based on the value, the status indicator column proposes a corresponding icon. Here is a correspondance table:
Figure 3: status correspondance table
Thus if you do need to use this status to perform some calculation, keep this table in mind. Then if I go through the process quickly, here is how to proceed to format the Gantt chart based on this status.

Step 1: create your custom flag. Using the custom flag 1, 2 and 3, you can create a formula like 
iif( [status]=n ,YES ,NO), n being 0, 1 or 2 for complete, on schedule and late.
Figure 4: flag custom fields with fomula based on the status
If I group the table, it will be more readable:
Figure 5: table grouped by status
Note that I didn't configure any roll-up for the flag custom fields, but actually I should have set it as calculated with the formula, so it will be also applied at summary task level. Let's consider that it is configured like this for the next steps.
Figure 6: configuration for summary rows
Step 2: create your bar styles. Insert a new row after having double-clicked in the Gantt chart. Note that you have to insert it under the normal task. Copy paste the task criteria bar style, copy it next to the new late task bar style and add the flag1.
Figure 7: bar style formatting for flag1 (late tasks)
Proceed similarly for the flags 2 and 3.
Figure 6: bar style formatting for all status
Here is what does it look like in the Gantt chart.
Figure 8: Gantt chart formatted along the task status
Et voilà!!

Share this article :