<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3061477920752632671</id><updated>2024-11-01T04:43:40.879-07:00</updated><category term="Project Server 2013"/><category term="Project Online"/><category term="Project Server 2010"/><category term="Javascript"/><category term="Reporting"/><category term="Security"/><category term="MS Project"/><category term="Troubleshooting"/><category term="Excel"/><category term="Powershell"/><category term="SharePoint 2013"/><title type='text'>EPM Advice</title><subtitle type='html'>Microsoft Project Server Insights for Consultants, Implementers and Users</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default?start-index=26&amp;max-results=25'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-5958989645911386211</id><published>2018-05-31T23:15:00.001-07:00</published><updated>2018-05-31T23:15:54.837-07:00</updated><title type='text'>Quick &amp; dirty way to bulk delete project sites</title><content type='html'>I had a requirement to bulk delete 2000 project sites. This used to be much easier in good old PSI days. Project Server CSOM couldn&#39;t do it and PSI support has been removed from Project Online &amp;amp; Project Server 2016.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, I wrote a script that basically simulates going to &quot;Connected SharePoint Sites&quot; page and click &quot;Delete Site&quot; button for each Project :) This is tested on Project Server 2016 only.&lt;br /&gt;
&lt;br /&gt;
Here are the steps to apply this script.&lt;br /&gt;
&lt;br /&gt;
1- In Chrome, go to PWA Settings -&amp;gt; Connected SharePoint Sites&lt;br /&gt;
2- Press F12 to get in developer mode&lt;br /&gt;
3- In Console window, copy paste the script provided at the end of this article and press Enter&lt;br /&gt;
4- Type&amp;nbsp;DeleteSites() and press Enter&lt;br /&gt;
5- Watch the magic in Console :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCfbdBqtIJcRYkrWtG2dYreOoPLzWCx6ylsJGZDsIHCUygxm-cBeTAVkeHWvCsvMuYOhqefjf6MgYD0lCPWIoqiOdHUg2PvfMTCKiZq2NCmE9I0nk1Br48jkUFQ04pYwscmWQFHIUmaqM/s1600/DeleteSites.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;75&quot; data-original-width=&quot;1312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCfbdBqtIJcRYkrWtG2dYreOoPLzWCx6ylsJGZDsIHCUygxm-cBeTAVkeHWvCsvMuYOhqefjf6MgYD0lCPWIoqiOdHUg2PvfMTCKiZq2NCmE9I0nk1Br48jkUFQ04pYwscmWQFHIUmaqM/s1600/DeleteSites.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The JavaScript code is as following&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/hammadbinarif/7559f4352d38833e335e9073a20061a3.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/5958989645911386211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2018/05/quick-dirty-way-to-bulk-delete-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/5958989645911386211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/5958989645911386211'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2018/05/quick-dirty-way-to-bulk-delete-project.html' title='Quick &amp; dirty way to bulk delete project sites'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCfbdBqtIJcRYkrWtG2dYreOoPLzWCx6ylsJGZDsIHCUygxm-cBeTAVkeHWvCsvMuYOhqefjf6MgYD0lCPWIoqiOdHUg2PvfMTCKiZq2NCmE9I0nk1Br48jkUFQ04pYwscmWQFHIUmaqM/s72-c/DeleteSites.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-7461323593315117265</id><published>2017-06-27T22:15:00.003-07:00</published><updated>2017-06-27T22:16:56.896-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Powershell"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><title type='text'>Publish all projects in Project Online using PowerShell</title><content type='html'>I was looking for a PowerShell script to publish all projects in a Project Online instance but surprisingly (or due to lack of correct google terms) couldn’t find one.&lt;br /&gt;
&lt;br /&gt;
So I ended up writing one myself and uploading it on &lt;a href=&quot;https://gallery.technet.microsoft.com/Publish-All-Projects-in-ad8ee80e&quot;&gt;TechNet &lt;/a&gt;for rest of the world. You can directly download the script from this link&lt;br /&gt;
&lt;a href=&quot;https://www.blogger.com/goog_76625268&quot;&gt;&lt;br /&gt;&lt;/a&gt;
&lt;a href=&quot;https://gallery.technet.microsoft.com/Publish-All-Projects-in-ad8ee80e/file/174745/1/Publish_All_Projects_ProjectOnline.ps1&quot;&gt;https://gallery.technet.microsoft.com/Publish-All-Projects-in-ad8ee80e/file/174745/1/Publish_All_Projects_ProjectOnline.ps1&lt;/a&gt;&lt;span id=&quot;goog_76625265&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://www.blogger.com/&quot;&gt;&lt;/a&gt;&lt;span id=&quot;goog_76625266&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/7461323593315117265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2017/06/publish-all-projects-in-project-online.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/7461323593315117265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/7461323593315117265'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2017/06/publish-all-projects-in-project-online.html' title='Publish all projects in Project Online using PowerShell'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-9047192497021369520</id><published>2017-06-18T22:34:00.000-07:00</published><updated>2017-06-27T22:13:52.035-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><title type='text'>Best practices for writing JavaScript for Project Online – Part 5</title><content type='html'>&lt;h3&gt;
Write values to PDP input fields.&lt;/h3&gt;
&lt;br /&gt;
If you have followed my &lt;a href=&quot;http://epmadvice.blogspot.com.au/2017/06/best-practices-for-writing-javascript_18.html&quot;&gt;previous blog&lt;/a&gt;, you’d know how to tap an input field value on a PDP. Once you get hold of it, you can perform many operations like hide it, lock it, move it etc. using simple JavaScript operations.&lt;br /&gt;
&lt;br /&gt;
In one of my apps, I was a bit surprised to learn that setting a field value programmatically e.g. &amp;nbsp;&lt;i&gt;&lt;span style=&quot;color: blue;&quot;&gt;(‘#YXZ’).val(‘123’) &lt;/span&gt;&lt;/i&gt;wasn’t sufficient for a PDP to detect that an input value has changed and it should save the value back to project when the save button is pressed.&lt;br /&gt;
&lt;br /&gt;
So to simulate the experience as if an end user has typed the value. I had to trigger the JavaScript change event. This then successfully forced PDP infrastructure to save the value back to project.&lt;br /&gt;
TypeScript code to write values back to PDP is following.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/hammadbinarif/6a3312528040f717a510c0a3d0f55df0.js&quot;&gt;&lt;/script&gt;

You can also download the code from&lt;br /&gt;
&lt;a href=&quot;https://gist.github.com/hammadbinarif/6a3312528040f717a510c0a3d0f55df0&quot;&gt;https://gist.github.com/hammadbinarif/6a3312528040f717a510c0a3d0f55df0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/9047192497021369520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2017/06/best-practices-for-writing-javascript_97.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/9047192497021369520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/9047192497021369520'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2017/06/best-practices-for-writing-javascript_97.html' title='Best practices for writing JavaScript for Project Online – Part 5'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-4616778863696327979</id><published>2017-06-18T22:25:00.001-07:00</published><updated>2017-06-27T22:13:52.025-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><title type='text'>Best practices for writing JavaScript for Project Online – Part 4</title><content type='html'>&lt;h3&gt;Read input field values on a PDP&lt;/h3&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif; font-size: 11.0pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 14.6667px; line-height: 107%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;Sometimes, in our script we need to know the values of custom fields to render our own output. Case in point, I once had to draw cool d3.js based graphics representing project status based custom field values. See the sample output below&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 14.6667px; line-height: 107%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ_IM0QD2jZ7-S8rsqyCfkuOwngu86TBcCj3Y-5_sDmZcNd0rk80IAy7TdjkED_5Lqiz3NLVGntN9mfr5GIjRYM1ri-YKEAg1Ycv9B_cqc5UMvyNhUI9li3vrbjYCCXgpNNS-H2JzcCYo/s1600/read+write+fields.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;564&quot; data-original-width=&quot;1437&quot; height=&quot;249&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ_IM0QD2jZ7-S8rsqyCfkuOwngu86TBcCj3Y-5_sDmZcNd0rk80IAy7TdjkED_5Lqiz3NLVGntN9mfr5GIjRYM1ri-YKEAg1Ycv9B_cqc5UMvyNhUI9li3vrbjYCCXgpNNS-H2JzcCYo/s640/read+write+fields.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 14.6667px; line-height: 107%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;Now I could have read the values from Project Odata endpoint /_api/ProjectData/Projects but the requirement was to update the graphics as soon as user changed those values. I’ll probably share some other key aspects of this script (rendering graphics and updating it when user changes it) in a different future blog. The focus of this blog is the piece of code that I wrote to read input field values.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;The input field values are displayed as editable input boxes if a project is in edit mode. As shown in the screenshot above.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; line-height: 107%;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;calibri&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;In non-edit mode, the fields are displayed as simple text values inside a DIV tag which in turn resides inside a TD tag. However, even in edit mode, there are cases where fields would be displayed as simple text, e.g. when a field is a calculated field or it is locked in the current workflow stage etc. see output of non-edit mode below.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXnsdz65iCbIqGZGdDRkpmDUOHcZCwZjY7HILMmg7pZJFOyUXsEFizQFghShD5hWr2r4gkFccr9vuShvjhtGWVmOCyMks9XE70-l0DVQJB-c0ndGDtHvuI0rpqFB8pu2QQLjoTW0Eb2os/s1600/readonly+fields.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;509&quot; data-original-width=&quot;1455&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXnsdz65iCbIqGZGdDRkpmDUOHcZCwZjY7HILMmg7pZJFOyUXsEFizQFghShD5hWr2r4gkFccr9vuShvjhtGWVmOCyMks9XE70-l0DVQJB-c0ndGDtHvuI0rpqFB8pu2QQLjoTW0Eb2os/s640/readonly+fields.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
The important points about the code that I am going to share are following&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;The code is in TypeScript but could easily be transformed to JavaScript. I highly recommend using TypeScript for any medium and large sized scripting apps.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;It depends on JQuery&lt;/li&gt;
&lt;li&gt;If in future, Microsoft changes the HTML Dom structure of a PDP page, the code will likely break and will require an update.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Without further ado, following is the code to read Number, Date &amp;amp; Text values from PDP in both edit and non-edit mode. This code can be downloaded from&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://gist.github.com/hammadbinarif/822e8eae649851822d1abd9d6a7af4e3&quot;&gt;https://gist.github.com/hammadbinarif/822e8eae649851822d1abd9d6a7af4e3&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/hammadbinarif/822e8eae649851822d1abd9d6a7af4e3.js&quot;&gt;&lt;/script&gt;

&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In my next blog, I’ll talk about writing values back to PDP fields. Fun trivia: It is not as simple as changing the values of the input fields 😊&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/4616778863696327979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2017/06/best-practices-for-writing-javascript_18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4616778863696327979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4616778863696327979'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2017/06/best-practices-for-writing-javascript_18.html' title='Best practices for writing JavaScript for Project Online – Part 4'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ_IM0QD2jZ7-S8rsqyCfkuOwngu86TBcCj3Y-5_sDmZcNd0rk80IAy7TdjkED_5Lqiz3NLVGntN9mfr5GIjRYM1ri-YKEAg1Ycv9B_cqc5UMvyNhUI9li3vrbjYCCXgpNNS-H2JzcCYo/s72-c/read+write+fields.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-3238376293776669467</id><published>2017-06-06T23:15:00.002-07:00</published><updated>2017-06-27T22:13:52.022-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><title type='text'>Best practices for writing JavaScript for Project Online – Part 3</title><content type='html'>&lt;h3&gt;
Create dummy console object to avoid script error in Internet Explorer&lt;/h3&gt;
&lt;br /&gt;
One common issue I face with Internet Explorer version 11 and below is that If I my code uses console object for diagnostics, it blocks the execution of rest of the script.&lt;br /&gt;
&lt;br /&gt;
Interestingly, if I open a debug console (by pressing F12 or right click -&amp;gt; Inspect element), the script executes just fine without any error message. After some google search it turned out that IE does not have a console object defined if a console window is not already open. See this stack overflow question for details&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://stackoverflow.com/questions/10183440/console-is-undefined-error-in-ie9&quot;&gt;https://stackoverflow.com/questions/10183440/console-is-undefined-error-in-ie9&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To avoid this error simply add these lines at the start of your JavaScript code. This will create a dummy console object if the real console object doesn’t exist already. &lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/hammadbinarif/2ea3793a66ad07fc0efb7ecddd59730e.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/3238376293776669467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2017/06/best-practices-for-writing-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3238376293776669467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3238376293776669467'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2017/06/best-practices-for-writing-javascript.html' title='Best practices for writing JavaScript for Project Online – Part 3'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-7609722250899676181</id><published>2017-05-28T18:46:00.001-07:00</published><updated>2017-06-27T22:13:52.032-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><title type='text'>Best practices for writing JavaScript for Project Online – Part 2</title><content type='html'>&lt;br /&gt;
&lt;h3&gt;
Checking the Project details page edit mode&lt;/h3&gt;
&lt;br /&gt;
The tip is about changing script behaviour based on the fact that project is editable or not.&lt;br /&gt;
&lt;br /&gt;
I recently created a custom editable grid for user to enter project financial information. However, I wanted the grid to behave like regular PDP input fields which does not allow editing if the project is not in Edit mode. See the output of my grid in Edit and non-edit mode.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;When PDP is in edit mode&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEGxJRDVQlZVWFzcHQuDVYh3tlymwx9yJm7Mh-Ss1-F6ixzyv3eUG-nEkf4sS7m1Cli5CZM2VqaUQ1vNuQ7El779u5m_SdkXCeFfXtt3TRTZO4iLwBDIioJyuBKbQXFc8uKO40TdX1HbA/s1600/pic1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEGxJRDVQlZVWFzcHQuDVYh3tlymwx9yJm7Mh-Ss1-F6ixzyv3eUG-nEkf4sS7m1Cli5CZM2VqaUQ1vNuQ7El779u5m_SdkXCeFfXtt3TRTZO4iLwBDIioJyuBKbQXFc8uKO40TdX1HbA/s640/pic1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;When PDP is not in edit mode&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcJqarczxp7IFfkh7JsOOR3A5mZ9g3CoFMYKPS1YNK9PgjZK1gVjstvQ8hxdDBtoVfmXPqQrK8trB9a6ZHgMZdRYQyanXCaq_RfCKx3Y8gdaMEkkp5ZWXG5RS7IXBufh3YDclj5gjk5dc/s1600/pic2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcJqarczxp7IFfkh7JsOOR3A5mZ9g3CoFMYKPS1YNK9PgjZK1gVjstvQ8hxdDBtoVfmXPqQrK8trB9a6ZHgMZdRYQyanXCaq_RfCKx3Y8gdaMEkkp5ZWXG5RS7IXBufh3YDclj5gjk5dc/s640/pic2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
On every PDP, project online PDP infrastructure injects a global object named EditState which exposes some useful information about the current edit state of the PDP. One of its property EditState.Editing is set to true when the page is in edit state. See the following example code.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/hammadbinarif/b178db5f36d6fe11ec9c4a881e6e1ed1.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
In the next part of this series, I’ll talk about how we can avoid a common Internet Explorer error&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/7609722250899676181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2017/05/best-practices-for-writing-javascript_28.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/7609722250899676181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/7609722250899676181'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2017/05/best-practices-for-writing-javascript_28.html' title='Best practices for writing JavaScript for Project Online – Part 2'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEGxJRDVQlZVWFzcHQuDVYh3tlymwx9yJm7Mh-Ss1-F6ixzyv3eUG-nEkf4sS7m1Cli5CZM2VqaUQ1vNuQ7El779u5m_SdkXCeFfXtt3TRTZO4iLwBDIioJyuBKbQXFc8uKO40TdX1HbA/s72-c/pic1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-4950893882073964670</id><published>2017-05-23T00:19:00.003-07:00</published><updated>2017-06-27T22:13:52.028-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><title type='text'>Best practices for writing JavaScript for Project Online – Part 1</title><content type='html'>&lt;h3&gt;
Checking the Web Part page design mode&lt;/h3&gt;
In this series of blogs, I’ll share some the practices I use to write better JavaScript to customise Project Online screens.&lt;br /&gt;
&lt;br /&gt;
The first tip is about detecting the web part page edit mode. Frequently, we write scripts to manipulate UI of the page and if the user is already editing the page, our script can cause undesired behaviour.&lt;br /&gt;
&lt;br /&gt;
We could either execute a different set of functions or at minimum, just not execute the script in design mode to keep the user experience clean.&lt;br /&gt;
&lt;br /&gt;
Its relatively simply to detect the WebPart page design mode. Just add the following code to the startup your script.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/hammadbinarif/d1bbeb34b6eab12f7eb5cbfff172b870.js&quot;&gt;&lt;/script&gt;

In the next part of this series, I’ll talk about how we can detect if a Project Details Page is in Edit mode.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/4950893882073964670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2017/05/best-practices-for-writing-javascript_23.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4950893882073964670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4950893882073964670'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2017/05/best-practices-for-writing-javascript_23.html' title='Best practices for writing JavaScript for Project Online – Part 1'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-4665337252224107638</id><published>2015-09-29T23:33:00.003-07:00</published><updated>2015-09-29T23:33:58.672-07:00</updated><title type='text'>Fixing SharePoint designer 2013 workflow that won&#39;t switch to &quot;Text-based designer&quot; view</title><content type='html'>I recently wrote a big (200+ lines) List workflow in a SharePoint designer 2013. Those of you who have done it know that it becomes hard to maintain the workflow of this size as SPD is not really designed to author large workflows.&lt;br /&gt;
&lt;br /&gt;
After spending few days, it become common for workflow designer to display validation errors every now and then which happened because SPD kept mysteriously deleting the variable references from the workflow actions.&lt;br /&gt;
&lt;br /&gt;
Finally, i reached the stage where my workflow will not open in text-based designer mode, no matter what i do. It always opened in Visual designer mode with empty visio page.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCUby0-6VNhR_RHf3bphXbNmdVcVqb2xuG6H3LSYo0B9aveX45OpV9y-prMlsJsuMHJ4setYHbUUOIqZKFNRPt1swiraQEVDCY4D_7CKlGyjllrVn2sDXypP-6QxVqTgsl_3yQDdkMZGQ/s1600/Visual+designer.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;339&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCUby0-6VNhR_RHf3bphXbNmdVcVqb2xuG6H3LSYo0B9aveX45OpV9y-prMlsJsuMHJ4setYHbUUOIqZKFNRPt1swiraQEVDCY4D_7CKlGyjllrVn2sDXypP-6QxVqTgsl_3yQDdkMZGQ/s640/Visual+designer.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exporting the workflow as vsdx file and re-importing as new workflow didn&#39;t solve the problem.&lt;br /&gt;
&lt;br /&gt;
After some experimentation, i was able to recover my workflow using the following procedure.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;I exported the original workflow as vsdx file using export to visio function.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;I deleted the workflow from SharePoint designer&lt;/li&gt;
&lt;li&gt;In SharePoint designer, I created a new workflow “temp” and
associated with my original SharePoint List.&lt;/li&gt;
&lt;li&gt;New workflow had only 1 line which was logging to history
list. I published the workflow&lt;/li&gt;
&lt;li&gt;On my computer, I renamed the
.vsdx file (step 1) to .zip and extracted all its contents.&lt;/li&gt;
&lt;li&gt;In SharePoint designer, I went to navigation windows on left hand side, there i clicked All Files -&amp;gt; WfSvc1
(this is a known folder where SPD stores workflow files)&lt;/li&gt;
&lt;li&gt;In that folder, there were many sub-folders, each having a
guid as its name. each folder represents a workflow&lt;/li&gt;
&lt;li&gt;Went inside each folder and picked the folder which has most recent last modified date for workflow.xaml file (this represents workflow created in step 1)&lt;/li&gt;
&lt;li&gt;From the extracted folder (step 5) I copy pasted the file
workflow.xaml to the SPD folder (step 8)&lt;/li&gt;
&lt;li&gt;Restarted SharePoint designer&lt;/li&gt;
&lt;li&gt;Opened the workflow designer page for the new workflow &quot;temp&quot; and it showed the restored
workflow &lt;span style=&quot;font-family: Wingdings;&quot;&gt;J&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Renamed &amp;amp; published the workflow&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As a lesson learned, i decided to break the workflow into smaller manageable workflow pieces, so that the damage remains minimum in case of future corruption.&amp;nbsp;&lt;/div&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;



















&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/4665337252224107638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2015/09/fixing-sharepoint-designer-2013.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4665337252224107638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4665337252224107638'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2015/09/fixing-sharepoint-designer-2013.html' title='Fixing SharePoint designer 2013 workflow that won&#39;t switch to &quot;Text-based designer&quot; view'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCUby0-6VNhR_RHf3bphXbNmdVcVqb2xuG6H3LSYo0B9aveX45OpV9y-prMlsJsuMHJ4setYHbUUOIqZKFNRPt1swiraQEVDCY4D_7CKlGyjllrVn2sDXypP-6QxVqTgsl_3yQDdkMZGQ/s72-c/Visual+designer.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-365712781980300541</id><published>2015-08-02T05:01:00.000-07:00</published><updated>2015-08-02T05:01:41.216-07:00</updated><title type='text'>How to clone a Project Detail Page</title><content type='html'>Project Detail pages are essentially ASPX files. But copying these pages isn&#39;t as simple as copying a document. If you copy these pages like an ordinary document, you&#39;d notice that copied web part page doesn&#39;t retain any web parts in it. This is because Web parts information is stored in the SharePoint Content database. Use the following procedure to copy web part pages.&lt;br /&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 14.0399990081787px;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 14.0399990081787px;&quot;&gt;1) Go to Site Actions -&amp;gt; Manage Content and Structure&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;2)&amp;nbsp;Go to the Project Detail Pages library&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;3) Select the PDP you want to copy&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;4) Click Actions -&amp;gt; Copy&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;5) Copy to any other document library or folder&lt;/span&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 14.0399990081787px;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 14.0399990081787px;&quot;&gt;6) Navigate to that document library or folder&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;7) Use the drop-down for that page and choose Edit Properties&lt;/span&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 14.0399990081787px;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;8) Rename the page, update any other information, and click Save&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;9) Select the page, then click Actions -&amp;gt; Move&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;10) Choose the Project detail Pages folder&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;overflow: auto; padding: 5px; word-wrap: normal;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Courier, monospace; line-height: 14.0399990081787px;&quot;&gt;11) Then open the page and you should have an exact copy under the new page name&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/365712781980300541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2015/08/how-to-clone-project-detail-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/365712781980300541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/365712781980300541'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2015/08/how-to-clone-project-detail-page.html' title='How to clone a Project Detail Page'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-8373021897086411210</id><published>2015-01-21T17:10:00.001-08:00</published><updated>2015-01-21T17:10:10.453-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Reporting"/><title type='text'>Query for getting lookup table in Row Number order</title><content type='html'>&lt;p&gt;For your reporting needs, you may want to display values from a Lookup Table exactly in the order they are saved in PWA.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Within PWA, this setting is controlled using “Display order for lookup table” option on Edit Lookup Table Page.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-3W7akwzCUE0/VMBN7PYpiyI/AAAAAAAAI6A/0nnnPwfG8Sw/s1600-h/Lookup%25255B1%25255D.png&quot;&gt;&lt;img title=&quot;Lookup&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 5px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;Lookup&quot; src=&quot;http://lh6.ggpht.com/-rsgDcd0SGLY/VMBN7zGKfRI/AAAAAAAAI6I/-V7n3X6hDH0/Lookup_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;426&quot; height=&quot;301&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;However, this sort order is not available in Reporting Database. Following query uses Published (and reporting) schema to get this information. This is tested on Project Server 2013 on premises. &lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;SELECT [MemberValue] , tmv .LT_VALUE_SORT_INDEX&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;FROM [MSPLT_Target Market_OlapView] tm&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;inner join pub .MSP_LOOKUP_TABLE_VALUES tmv&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;on tm.LookupMemberUID = tmv.LT_STRUCT_UID&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;order by LT_VALUE_SORT_INDEX&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Replace “Target market” with your Lookup Table name in the above query.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/8373021897086411210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2015/01/query-for-getting-lookup-table-in-row.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/8373021897086411210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/8373021897086411210'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2015/01/query-for-getting-lookup-table-in-row.html' title='Query for getting lookup table in Row Number order'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-rsgDcd0SGLY/VMBN7zGKfRI/AAAAAAAAI6I/-V7n3X6hDH0/s72-c/Lookup_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-8071124195754659551</id><published>2015-01-20T20:46:00.001-08:00</published><updated>2015-01-20T20:47:08.451-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting"/><title type='text'>Solution: Queue job &amp;quot;Project Workflow Check-in&amp;quot; stuck and then fail</title><content type='html'>&lt;p&gt;Short answer: Restart the “Service Bus Gateway” and “Service Bus Message Broker” Service on the server where Workflow Manager is installed. The detailed description is below.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This has happened to me and a colleague so i thought that the solution is worth sharing.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On Project Server 2013 On premises instance, all my projects were stuck in “Project Workflow Check-in” queue job and that job was failing after about 45 minutes. The queue error message was,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a&gt;&lt;u&gt;&lt;b&gt;&lt;font color=&quot;#c0504d&quot;&gt;General&lt;/font&gt;&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;font color=&quot;#c0504d&quot;&gt;Queue:&lt;/font&gt;&lt;/b&gt;       &lt;ul&gt;       &lt;li&gt;&lt;font color=&quot;#c0504d&quot;&gt;&lt;b&gt;GeneralQueueJobFailed&lt;/b&gt; (26000) -&lt;b&gt;WorkflowCheckinNotify.ProjectCheckinNotifyWorkflowMessage&lt;/b&gt;. Details: id=&#39;26000&#39; name=&#39;GeneralQueueJobFailed&#39; uid=&#39;b3f897eb-4695-e411-80cd-000d3ad00e15&#39; JobUID=&#39;c7c8744b-4295-e411-80cd-000d3ad00e15&#39; ComputerName=&#39;8fa7e1bd-09b4-4c64-b019-57c33d5c769c&#39; GroupType=&#39;WorkflowCheckinNotify&#39; MessageType=&#39;ProjectCheckinNotifyWorkflowMessage&#39; MessageId=&#39;1&#39; Stage=&#39;&#39; CorrelationUID=&#39;1af0dc9c-9e05-a05e-c769-ca04319a2489&#39;. For more details, check the ULS logs on machine &lt;b&gt;8fa7e1bd-09b4-4c64-b019-57c33d5c769c&lt;/b&gt; for entries with JobUID &lt;b&gt;c7c8744b-4295-e411-80cd-000d3ad00e15&lt;/b&gt;.&lt;/font&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Interestingly, i wasn’t even using Workflows for my EPT. A common solution for this problem is to publish a dummy workflow via SharePoint Designer 2013 on Project Server instance but i had done it already. The error mentioned above started to appear after few weeks of instance provisioning. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;During the troubleshooting, i was able to publish workflows from SharePoint designer but i noticed that if i associate a workflow to an EPT, the projects started to fail even on project creation screen. This give me a hint about issue with Workflow Manager.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I found out that Workflow Manager related services named “Service Bus Gateway” and “Service Bus Message Broker” on the server were stopped and restarting the two services solved the issue for me. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/8071124195754659551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2015/01/solution-queue-job-workflow-check-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/8071124195754659551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/8071124195754659551'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2015/01/solution-queue-job-workflow-check-in.html' title='Solution: Queue job &amp;quot;Project Workflow Check-in&amp;quot; stuck and then fail'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-3878987358012619973</id><published>2015-01-19T22:44:00.001-08:00</published><updated>2015-01-20T01:58:02.293-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting"/><title type='text'>Solution: Project returns to Project Site home page when you close it on PDP</title><content type='html'>&lt;p&gt;One of the victims of Project Server 2013 utilising SharePoint platform is the navigation (in)consistency. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here is a description of one of the associated issue (or feature by design, who knows?)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you &lt;/p&gt; &lt;p&gt;i) Open a Project from Project Centre (Projects Page),&lt;/p&gt; &lt;p&gt;ii) Move between PDPs&lt;/p&gt; &lt;p&gt;iii) Press Close button on Ribbon&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You’ll return on Projects page. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-ue-wPdQJhwc/VL35MHELXLI/AAAAAAAAI4Q/qgK_qmgoIXc/s1600-h/Showcase1%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;Showcase1&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 5px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Showcase1&quot; src=&quot;http://lh5.ggpht.com/-bvs-QDJbc7k/VL35NDg3b6I/AAAAAAAAI4Y/ybUabNdfLJk/Showcase1_thumb%25255B2%25255D.png?imgmax=800&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;But&lt;/strong&gt; if you,&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;i) Open a Project from Project Centre (Projects Page),&lt;/p&gt; &lt;p&gt;ii) Move between PDPDs&lt;/p&gt; &lt;p&gt;iii) Click Project Site link&lt;/p&gt; &lt;p&gt;iv) Click Project Details link to go back to PDPs&lt;/p&gt; &lt;p&gt;v) Press Close button on Ribbon&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You’ll return on Project Site Home Page. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/-cTWz-NHlm00/VL35N1xPxsI/AAAAAAAAI4g/laHS_ZxkqyI/s1600-h/Showcase2%25255B2%25255D.png&quot;&gt;&lt;img title=&quot;Showcase2&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 5px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Showcase2&quot; src=&quot;http://lh5.ggpht.com/-0AySsGMy8Hw/VL35O-4IA5I/AAAAAAAAI4o/uiH4sdVW6M4/Showcase2_thumb.png?imgmax=800&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The culprit in this case is “&amp;amp;ret=1” parameter in the URL which is added by Project details link. Unfortunately, this link is automatically added by a Project Server feature so we can’t change it in a Site Template.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The solution is to use a Swiss army knife of SharePoint. a.k.a JavaScript.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Just add the following code on all the PDPs via Content Editor web part &lt;img class=&quot;wlEmoticon wlEmoticon-smile&quot; style=&quot;border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none&quot; alt=&quot;Smile&quot; src=&quot;http://lh3.ggpht.com/-jrAYBEfkrFQ/VL35Pb20k2I/AAAAAAAAI4s/ZAY3Wg3cqJw/wlEmoticon-smile%25255B2%25255D.png?imgmax=800&quot;&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;&amp;lt;script&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;function SetReturnPage() { &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDP_ret =0 ; // This will take the user back to Project Centre &lt;br&gt;} &lt;br&gt;_spBodyOnLoadFunctionNames.push(&quot;SetReturnPage&quot;);&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#c0504d&quot; face=&quot;Courier New&quot;&gt;&amp;lt;/script&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;/pre&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/3878987358012619973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2015/01/solution-project-returns-to-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3878987358012619973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3878987358012619973'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2015/01/solution-project-returns-to-project.html' title='Solution: Project returns to Project Site home page when you close it on PDP'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-bvs-QDJbc7k/VL35NDg3b6I/AAAAAAAAI4Y/ybUabNdfLJk/s72-c/Showcase1_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-2973645733220448069</id><published>2015-01-18T21:44:00.001-08:00</published><updated>2015-01-20T01:56:56.717-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><title type='text'>How much can you over allocate a resource in resource plan?</title><content type='html'>&lt;p&gt;I was giving Resource plan feature demo to a customer and out of curiosity, customer asked if I can assign 1,000 days of work to a resource on a single day. It turned out we couldn’t. When you press Save after assigning 1,000 days of work the system gave the following error.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;“Your updates were not saved because of the following reasons: General error: Work value used is invalid. (Use this error information along with other errors to find out the cause of the problem.)”&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/-aCWjtFJNMm0/VLyZvJDTklI/AAAAAAAAI2o/Rsj-jTM-CrU/s1600-h/ResourcePlan%25255B27%25255D.png&quot;&gt;&lt;img title=&quot;Resource Plan&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 5px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Resource Plan&quot; src=&quot;http://lh3.ggpht.com/-dFqEAJLJb38/VLyZv0JbktI/AAAAAAAAI2w/3uur_S0_-ds/ResourcePlan_thumb%25255B28%25255D.png?imgmax=800&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The behaviour was same for generic resources. And this raised the inevitable question from customer. “How much can I over allocate a resource on a given day in the resource plan?”&lt;/p&gt;  &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I didn’t know the answer to this, but I promised to get back to customer and following information (mostly learnt by trial &amp;amp; error) is the result of that promise. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;1) A resource can be allocated maximum &lt;b&gt;100 times&lt;/b&gt; of its Max. Units in a resource plan. So a resource with Max. Units of 100% (this is default) i.e. one full time person, can be assigned 100 days of work on a single day in resource plan.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2) If you increase Max. Units, the maximum possible work on a single day will also increase in same ratio. (E.g. setting current Max. Units of a resource to 1000% means you can allocate 1000 days of work to that resource)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3) Maximum Units allocated to a resource can be between 0 and 100,000,000 &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I also tested the maximum work that could be assigned to a resource on a single day in a Project Schedule. But I’ll leave the answer to the day when a customer asks me about it. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The usefulness of this knowledge? Hmmm… remember, curiosity can kill a cat!&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/2973645733220448069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2015/01/how-much-can-you-over-allocate-resource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2973645733220448069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2973645733220448069'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2015/01/how-much-can-you-over-allocate-resource.html' title='How much can you over allocate a resource in resource plan?'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-dFqEAJLJb38/VLyZv0JbktI/AAAAAAAAI2w/3uur_S0_-ds/s72-c/ResourcePlan_thumb%25255B28%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-3871727854464864264</id><published>2014-11-23T22:15:00.001-08:00</published><updated>2014-11-23T22:15:47.211-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><title type='text'>3 minute guide to Department field usage</title><content type='html'>&lt;p&gt;Here is a very brief summary of how Department field is commonly used in Project Online, Project Server 2013 and Project Server 2010. You need to have some values in “Department” lookup table to get any advantage from it. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;1-&amp;#160;&amp;#160;&amp;#160; Filter custom fields in a Project. &lt;/h5&gt;  &lt;p&gt;Assign a department to a Project level Custom field, then create a new project and assign the same department value to Project Departments field. The custom field will only appear in your newly created Project. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;2-&amp;#160;&amp;#160;&amp;#160; Filter resource level custom fields for Resource. &lt;/h5&gt;  &lt;p&gt;Assign a department to a Resource level Custom field, then create a new resource and assign the same department value to Resource Departments field. The custom field will only appear for your newly created Resource &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;3-&amp;#160;&amp;#160;&amp;#160; Show EPTs only to certain users. &lt;/h5&gt;  &lt;p&gt;Assign a department to an EPT. Assign same department value to a Resource in Resource Departments field. Only that resource will see the EPT as an available option to create the new project from. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Department fields are also utilised to filter OLAP cube data, Portfolio Analysis business drivers and driver prioritisations.&amp;#160; If you really want to learn more about department field, check out this article by Treb Gatte.    &lt;br /&gt;&lt;a href=&quot;http://blogs.technet.com/b/projectadministration/archive/2010/03/17/departmental-custom-fields.aspx&quot;&gt;http://blogs.technet.com/b/projectadministration/archive/2010/03/17/departmental-custom-fields.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Did you read this blog in in less than 3 minutes?&amp;#160; Let me know in comments and I’ll update the blog title :) &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/3871727854464864264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/11/3-minute-guide-to-department-field-usage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3871727854464864264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3871727854464864264'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/11/3-minute-guide-to-department-field-usage.html' title='3 minute guide to Department field usage'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-2758860038737388690</id><published>2014-09-25T22:32:00.001-07:00</published><updated>2014-09-25T22:33:55.099-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MS Project"/><title type='text'>How to Manually edit Actual Cost in Project Professional</title><content type='html'>&lt;p&gt;By default, Actual Cost column is locked down in Project professional both at Task and assignment level. Actual cost is calculated from Actual Work and Fixed Cost values. This way, the relationship with Work done and cost accrued remain consistent. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ground realities are many times more complex and actual costs involve Journaling, currency conversions and other adjustments. This is typically handled in ERP systems and all PM wants to do is to manually enter the actual cost value in Project so that she can track the remaining cost. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To enter the actual costs manually, you need to change the following setting in Project Professional.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;1- Go to File- &amp;gt; Options –&amp;gt; Schedule. &lt;/p&gt;  &lt;p&gt;2- Scroll to the bottom of the page till you reach the last section “Calculation options for this project:”&lt;/p&gt;  &lt;p&gt;3- Uncheck the box “Actual costs are always calculated by Project”&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-LQHFN74QDpw/VCT6R9QF2PI/AAAAAAAAGPI/ud548oRrlYQ/s1600-h/image%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/-gyR_BJ-_sqY/VCT6S0XN7iI/AAAAAAAAGPQ/d9f5GcqxCt4/image_thumb%25255B2%25255D.png?imgmax=800&quot; width=&quot;509&quot; height=&quot;427&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;4- This will change the setting for Current Project only. If you want this setting to be applied to all Projects, then change the drop down value in front of “Calculation options for this Project” to “All Projects”&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-00u3Ww3xvyA/VCT6Tj5j6fI/AAAAAAAAGPY/I627SYL-u_o/s1600-h/image%25255B9%25255D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/-np_gj-bqayg/VCT6Utc1xPI/AAAAAAAAGPg/4a7cYNS3XZs/image_thumb%25255B5%25255D.png?imgmax=800&quot; width=&quot;535&quot; height=&quot;450&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Some points to consider in this approach are&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;1- Actual cost will only be editable from Project Professional. It will still not be editable from PWA&lt;/p&gt;  &lt;p&gt;2- Project Manager will need to manage actual costs for each cost based assignment. Automatic work based calculation will be turned off for entire project. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/2758860038737388690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/09/how-to-manually-edit-actual-cost-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2758860038737388690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2758860038737388690'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/09/how-to-manually-edit-actual-cost-in.html' title='How to Manually edit Actual Cost in Project Professional'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-gyR_BJ-_sqY/VCT6S0XN7iI/AAAAAAAAGPQ/d9f5GcqxCt4/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-7791769164194044319</id><published>2014-08-18T01:19:00.001-07:00</published><updated>2014-09-02T04:43:08.034-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Reporting"/><title type='text'>Project Online – SSIS OData Replication – Lessons Learned</title><content type='html'>&lt;p&gt;&lt;img title=&quot;SSISProjectOnline&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;SSISProjectOnline&quot; src=&quot;http://lh6.ggpht.com/-hUtleyolxCY/U_G3Ec6jAnI/AAAAAAAADvM/_qDS72SkMqk/SSISProjectOnline%25255B11%25255D.png?imgmax=800&quot; width=&quot;521&quot; height=&quot;484&quot; /&gt; &lt;/p&gt;  &lt;p&gt;I recently got a chance to work on an SSIS Package in Windows Azure environment which periodically retrieved the Project online data via OData connector and stored over an Azure SQL Database for SSRS based reporting. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here are some of my takeaways from this exercise.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;h3&gt;&lt;strong&gt;Learning Resources&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;The article to get you started is&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/office/dn720853(v=office.15).aspx&quot;&gt;MSDN Article: Replicate Project Online Reporting Data to a SQL Server database using the OData protocol&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;if you are also interested in learning about fetching SharePoint List data using similar mechanism, check this blog by Martin Laukkanen &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a title=&quot;http://nearbaseline.com/blog/2014/04/project-site-custom-list-reporting-using-ssis-odata-connector/&quot; href=&quot;http://nearbaseline.com/blog/2014/04/project-site-custom-list-reporting-using-ssis-odata-connector/&quot;&gt;http://nearbaseline.com/blog/2014/04/project-site-custom-list-reporting-using-ssis-odata-connector/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Speed&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;The SSIS job gets data alright once it is setup. But oData is inherently slow and it can easily take minutes for each project if you have many SharePoint lists or if you are trying to retrieve time phased data sets. Here are some of the suggestions to workaround this limitation.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;1) Create a separate job for time phased data. And run this job only once in a week or month. Your time phased data will not be nightly refreshed but rest of the data update won’t suffer delays because of it.&lt;/p&gt;  &lt;p&gt;2) Download the data in a cache Table. For reporting, use a different copy of same table. Update the copied table once your downloading job is complete. This way, your reports will show last downloaded data when the current downloading is in progress.&lt;/p&gt;  &lt;p&gt;3) Check out this demonstration package on Microsoft site. I haven’t tried it but it is designed to sync only changes from Project Online.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=43736&quot;&gt;Project Online: SSIS package for OData delta sync&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Logging / Error Handling&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;SSIS has great logging features. Use them. You can log to text file, SQL Tables, event logs etc. You can also control the the minimum level being logged depending on the log medium and other variables.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;SSIS also has intensive error handling options available for handling data level error (e.g. Custom field deleted or SharePoint list column deleted from a particular site). Review these options and use according to your requirements&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Schema&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;Project Online oData schema is a bit different from traditional Project Server reporting database. The tables are more flattened which are easier to build queries on. However, if you have already built reports for on-premises, keep some time aside to re-write the queries according to new schema.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Limitations&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;There are still some limitations when you retrieve data from oData. e.g. You can’t retrieve more than 45 text fields (and you can’t choose which 45). As of writing these lines, Workflow Phase and Stage for the current project can’t be retrieved&amp;#160; either. &lt;/p&gt;  &lt;p&gt;The rapid pace at which Project Online oData support is being enhance by Microsoft, these limitations would hopefully be removed at some point in future. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/7791769164194044319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/08/project-online-ssis-odata-replication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/7791769164194044319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/7791769164194044319'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/08/project-online-ssis-odata-replication.html' title='Project Online – SSIS OData Replication – Lessons Learned'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-hUtleyolxCY/U_G3Ec6jAnI/AAAAAAAADvM/_qDS72SkMqk/s72-c/SSISProjectOnline%25255B11%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-3249639760056350429</id><published>2014-08-15T21:55:00.001-07:00</published><updated>2014-08-15T21:55:01.680-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2013"/><title type='text'>Effective Project, Portfolio &amp;amp; Work Management, Using SharePoint</title><content type='html'>&lt;p&gt;SharePoint 2013 has some exciting new features around Project Management. I delivered a webinar on this topic last Wednesday. Check the full webinar recording below on YouTube. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt; &lt;iframe height=&quot;315&quot; src=&quot;//www.youtube.com/embed/n1bj85Sp26A?rel=0&quot; frameborder=&quot;0&quot; width=&quot;560&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;&lt;/iframe&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/3249639760056350429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/08/effective-project-portfolio-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3249639760056350429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/3249639760056350429'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/08/effective-project-portfolio-work.html' title='Effective Project, Portfolio &amp;amp; Work Management, Using SharePoint'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-6203009221414264662</id><published>2014-06-30T23:10:00.001-07:00</published><updated>2014-08-18T00:17:26.853-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Reporting"/><title type='text'>Filter SSRS Report on Project Site</title><content type='html'>&lt;h6&gt;[Populate SSRS Report Parameters via JavaScript]&lt;/h6&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Requirement&lt;/h4&gt;  &lt;p&gt;Display a Project specific data on a Project Site using an SSRS Report.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Solution&lt;/h4&gt;  &lt;p&gt;SSRS Report can be displayed on a SharePoint web part page using Report Viewer Control. The Challenge was to populate the parameter with Project Name so that only that Project specific data gets loaded in SSRS Report. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Our familiar hero, JavaScript came to the rescue again, though it took some help from Text Filter Web Part this time. Following are the steps&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;1) Prepare your SSRS report with a parameter which accepts Project Workspace URL as Parameter value and loads Project Data accordingly&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2) Display this report using Report Viewer web part (available in SQL Server Reporting category) on your desired SharePoint web part page in Project Site.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3) Add a “Text Filter” web part (available in Filters category) to your page ,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4) Connect Text filter web part with Report viewer web part so that the value of text filter web part gets passed as a parameter&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;5) To test your report, type the Project Site URL (e.g. &lt;a href=&quot;http://pwaurl/pwa/siteUrl&quot;&gt;http://pwaurl/pwa/siteUrl&lt;/a&gt; ) in the Text Filter web part text box and see if the report loads correctly&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;6) Now to automatically populate Text Filter web part, you need to find text filter control ID (inspect element is your friend) and a bit of JavaScript magic. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;7) The JavaScript code (provided at the end of this blog) injected via Hidden Content Editor web part will determine Project Site URL, Populate Text Filter control, and enforce the post back event for the Text Filter control so that Report gets refreshed according the the passed parameter value.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;8) Once you are happy with the results, you can hide the Text Filter control by minimizing it and setting the Chrome Type to none.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Script&lt;/h4&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Note&lt;/u&gt;&lt;/strong&gt;: Use inspect element to find your text filter control ID and parameter id for post back function (slightly different from control ID) and replace at places highlighted as &lt;strong&gt;&lt;font color=&quot;#800000&quot;&gt;bold&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;lt;script&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function submitSiteURL()         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;//&amp;#160; find the control by ID &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var ttnA = document.getElementById(&#39;&lt;strong&gt;ctl00_ctl40_g_b619b608_692c_47f9_ad64_39b27e905477_SPTextSlicerValueTextControl&lt;/strong&gt;&#39;);&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;// Find the Project Site URL&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var url = window.location.protocol + &amp;quot;//&amp;quot; + window.location.host + _spPageContextInfo.webServerRelativeUrl; &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#800000&quot;&gt;// If the Control is not already populated (to avoid infinite refresh loop)&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (ttnA.value != url)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ttnA.value=url;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;// DO Post back ID parameter should be updated (it is slightly different from Control ID)&lt;/em&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __doPostBack(&#39;&lt;strong&gt;ctl00$ctl40$g_b619b608_692c_47f9_ad64_39b27e905477$SPTextSlicerValueTextControl&lt;/strong&gt;&#39;,&#39;&#39;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; _spBodyOnLoadFunctionNames.push(&amp;quot;submitSiteURL&amp;quot;); &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#800000&quot;&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/script&amp;gt; &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/6203009221414264662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/06/filter-ssrs-report-on-project-site.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/6203009221414264662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/6203009221414264662'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/06/filter-ssrs-report-on-project-site.html' title='Filter SSRS Report on Project Site'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-5675583942637790223</id><published>2014-03-07T02:35:00.001-08:00</published><updated>2015-03-05T22:05:12.615-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>Make PDP Read-only for certain users or groups</title><content type='html'>&lt;h4&gt;Requirement&lt;/h4&gt;  &lt;p&gt;There is a particular PDP (say, financial information) which should only be editable by PMO and rest (including PM) should see it in read-only mode.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Solution&lt;/h4&gt;  &lt;p&gt;There were some solutions available on other blogs (see alternative solutions section) but i wanted to have a simpler solution. Its relatively easy to disable the input fields using JavaScript. The interesting part was to do it for certain users (anyone other then PMO) only. I used SharePoint Web part Audience Targeting feature to execute the disabling script only for limited users. Here is the summary of the solution&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;p&gt;1- On the PDP, add a content editor webpart, render a DIV element with special ID (i used “hiddendiv” as ID)&lt;/p&gt;  &lt;p&gt;2- Set Audience of this webpart as a PMO (in my case PMO was a SharePoint Group, but you could use Active Directory group or even compile custom Audience). Using Audience property, “hiddendiv” will only render when someone from PMO will come to the PDP &lt;/p&gt;  &lt;p&gt;3- Add another Content Editor Webpart on PDP, check if “hiddendiv” element is present on PDP. If so, don’t do any thing. Otherwise disable all input fields on PDP. &lt;/p&gt;  &lt;p&gt;4- To protect fields from being changed in Project Professional, fields behaviour should be defined as “Behavior controlled by workflow”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The solution has been tested in Project Server 2013 on premises but should also work in Project Online. Full Code for both Content Editor Web Parts is provided below&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Script&lt;/h4&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;CEWP 1:&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#800000&quot;&gt;&amp;lt;div id=&amp;quot;hiddenDiv&amp;quot;&amp;gt;&amp;amp;#160;&amp;lt;/div&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;CEWP 2:&lt;/h5&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#800000&quot;&gt;&amp;lt;strong class=&amp;quot;ms-rteForeColor-9&amp;quot; style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;Note&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ms-rteForeColor-9&amp;quot;&amp;gt;: Only PMO Administrators can edit the fields on this page&amp;lt;/span&amp;gt;&amp;lt;script&amp;gt;       &lt;br /&gt;function&amp;#160; hiddenDivPresent()        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var hiddenDivID =&amp;quot;hiddenDiv&amp;quot;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var hiddenDiv = document.getElementById(hiddenDivID);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (hiddenDiv != null)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return true;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return false;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function MakeReadOnly()        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var allProjectFieldWebparts = document.getElementsByName(&amp;quot;WPClass:ProjectFieldPart&amp;quot;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (var h = 0; h &amp;lt; allProjectFieldWebparts.length; h++)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var arrInput = allProjectFieldWebparts[h].getElementsByTagName(&#39;input&#39;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (var i = 0; i &amp;lt; arrInput.length; i++)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; arrInput[i].disabled=true;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var arrbtn = allProjectFieldWebparts[h].getElementsByTagName(&#39;button&#39;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (var j = 0; j &amp;lt; arrbtn.length; j++) {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; arrbtn[j].disabled=true;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var arrtxtArea = document.getElementsByTagName(&#39;textarea&#39;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (var k = 0; k &amp;lt; arrtxtArea.length; k++)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(arrtxtArea[k].title == &#39;Description&#39;)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; arrtxtArea[k].disabled=true;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var divID=arrtxtArea[k].id+&#39;_div&#39;;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var txtAreaDiv =document.getElementById(divID);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(txtAreaDiv!=null)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtAreaDiv.disabled=true;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtAreaDiv.removeAttribute(&amp;quot;contentEditable&amp;quot;);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;catch(e){        &lt;br /&gt;alert(&#39;An error has occurred: &#39;+e.message)        &lt;br /&gt;}        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function runAfterEverythingElse(){        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SP.SOD.executeOrDelayUntilScriptLoaded(function () {&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#800000&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var InEditMode = SP.Ribbon.PageState.Handlers.isInEditMode();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!InEditMode)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (hiddenDivPresent())        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // User belongs to Audience so Do Nothing        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Hide All Fields in this page        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MakeReadOnly();        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }, &amp;quot;sp.ribbon.js&amp;quot;);&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#800000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;_spBodyOnLoadFunctionNames.push(&amp;quot;runAfterEverythingElse&amp;quot;);&amp;lt;/script&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Alternative Solutions&lt;/h4&gt;  &lt;p&gt;1- &lt;a href=&quot;http://azlav.umtblog.com/2011/05/04/making-a-read-only-pdp-with-infopath-forms/&quot;&gt;InfoPath based solution&lt;/a&gt; by Andrew Lavinsky&lt;/p&gt;  &lt;p&gt;2- &lt;a href=&quot;http://epmxperts.wordpress.com/2014/01/20/secure-pdp-pages-as-per-project-server-security/&quot;&gt;Custom Webpart&lt;/a&gt; based solution by epmxperts&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/5675583942637790223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/03/make-pdp-read-only-for-certain-users-or.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/5675583942637790223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/5675583942637790223'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/03/make-pdp-read-only-for-certain-users-or.html' title='Make PDP Read-only for certain users or groups'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-4855840765830348905</id><published>2014-01-17T05:45:00.001-08:00</published><updated>2014-09-01T00:32:01.478-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Reporting"/><title type='text'>Solution: Spaces removed when SSRS Report exported to PDF</title><content type='html'>&lt;p&gt;Me and some of my workmates have come across this issue quite a few times so thought about sharing the solution with everyone.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Problem:&lt;/h4&gt;  &lt;p&gt;When a SQL Server Reporting Services 2005, 2008 or 2008 R2 report gets exported to PDF, the spaces of a Project Server Multiline text fields appear so condensed that it looks like a long line with out any spaces. The same report looks fine on screen and exports with proper spaces to Microsoft Word. This is apparently an SSRS bug. Follow the solution below to fix disappeared spaces problem. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-eVq1U18wbx0/Utkz6x9tUqI/AAAAAAAACa0/bdd-cx_04qk/s1600-h/ProjectStatusSummary%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;ProjectStatusSummary&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;ProjectStatusSummary&quot; src=&quot;http://lh6.ggpht.com/-57skscaJJN0/Utkz-BL4DeI/AAAAAAAACa8/chP8Dt79nos/ProjectStatusSummary_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;540&quot; height=&quot;214&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Solution:&lt;/h4&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;1) Add the following code to your report by right clicking outside report body and then selecting Report Properties. Click Code section to add the code&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/-EO4n4450FXs/Utkz_re3zqI/AAAAAAAACbE/UwcqrLLmIfA/s1600-h/Code%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;Code&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Code&quot; src=&quot;http://lh4.ggpht.com/-aVcx1BgFn08/Utk0BX5p1EI/AAAAAAAACbM/lCS0vDmVfFU/Code_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;519&quot; height=&quot;410&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;Public FUNCTION RemoveHtml(ByVal Text As String) AS String&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;IF Text IsNot Nothing AND Text &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim objRegExp AS NEW System.Text.RegularExpressions.Regex(&amp;quot;&amp;lt;(.|\n)+?&amp;gt;&amp;quot;)&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color=&quot;#b86000&quot;&gt;&lt;font color=&quot;#b86000&quot;&gt;&#39;Replace Zero Width Space Character&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,ChrW(8203), &amp;quot;&amp;quot;)&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;#160;&amp;quot;, &amp;quot; &amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#39;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;#58;&amp;quot;, &amp;quot;:&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;amp;&amp;quot;, &amp;quot;&amp;amp;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;quot;&amp;quot;, &amp;quot;&amp;quot;&amp;quot;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;lt;&amp;quot;, &amp;quot;&amp;lt;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;gt;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;amp;copy;&amp;quot;, &amp;quot;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;lt;ul&amp;gt;&amp;quot;, &amp;quot;[[ul]]&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;lt;li&amp;gt;&amp;quot;, &amp;quot;[[li]]&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;, &amp;quot;[[/ul]]&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;, &amp;quot;[[/li]]&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;, vbcrlf)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text= objRegExp.Replace(Text, &amp;quot;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;[[ul]]&amp;quot;,&amp;quot;&amp;lt;ul&amp;gt;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;[[/ul]]&amp;quot;,&amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;[[li]]&amp;quot;,&amp;quot;&amp;lt;li&amp;gt;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace(Text,&amp;quot;[[/li]]&amp;quot;,&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Text = Replace (Text,vbcrlf,&amp;quot;&amp;lt;BR&amp;gt;&amp;quot;) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Text&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;ELSE&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return &amp;quot;&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;END IF &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;END Function&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#b86000&quot; size=&quot;2&quot; face=&quot;Segoe UI&quot;&gt;&lt;/font&gt;&lt;/p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;p&gt;2) In your desired textbox in the report, Use the following expression to display your multiline field.    &lt;br /&gt;=Code.RemoveHTML(Fields!Project_Description.Value)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (Use your Multiline text field name instead of Project_Description)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3) In report designer, Select the text &amp;lt;&amp;lt;expr&amp;gt;&amp;gt; in your Text box and set MarkupType property as HTML. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/-x58gpQNT1Q8/Utk0CzZSRmI/AAAAAAAACbU/d00NWo_vmEs/s1600-h/Remove%252520HTML%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;Remove HTML&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Remove HTML&quot; src=&quot;http://lh4.ggpht.com/-bKVWU4C0V18/Utk0EJy6i7I/AAAAAAAACbc/GeoQLpMWYTc/Remove%252520HTML_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;558&quot; height=&quot;281&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Your report now should export fine to PDF. The removeHTML function strips all the HTML codes except for new line so that your text doesn’t appear all on the same line. As an added bonus, it also preserves bullet points related HTML tags as Project Server users typically like to enter their comments in bullet points. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Update (28/07/2014)&lt;/u&gt;&lt;/strong&gt; : An old colleague &lt;a href=&quot;http://nearbaseline.com/blog/home/&quot;&gt;Martin Laukkanen&lt;/a&gt; got deeper into this issue and found out that a Zero Width Space Character (&amp;amp;#8203;) does also cause the same issue. I have updated the VB Code to eliminate this little bugger too. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/4855840765830348905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2014/01/solution-spaces-removed-when-ssrs.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4855840765830348905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4855840765830348905'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2014/01/solution-spaces-removed-when-ssrs.html' title='Solution: Spaces removed when SSRS Report exported to PDF'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-57skscaJJN0/Utkz-BL4DeI/AAAAAAAACa8/chP8Dt79nos/s72-c/ProjectStatusSummary_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-6287842473113948647</id><published>2013-12-21T09:42:00.000-08:00</published><updated>2013-12-24T16:47:16.888-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>Project Server Security Scenarios – Part 3</title><content type='html'>&lt;p&gt;Part 2 of this blog can be read &lt;a href=&quot;http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-2.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Scenario 5: PM to only add Generic resources to their Project Team whereas Resources Managers should be adding specific resources. &lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bob the PM Should not directly be assigning actual people to its Project. Instead, he should be assigning Generic Resources. A resource manager can later add specific resources. Once specific resources are added, PM should be able to assign tasks to those specific resources as well. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1) PMs by default have permission to assign any resource. To remove this permission, Go to Server Settings -&gt; Manage Groups, &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;click Project Managers, in selected Categories, click “My Organization” , under Resource Permissions, uncheck “Assign Resource” and Save.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-Z-tqp4TZiKo/UrXTAjylEoI/AAAAAAAACRw/n243qjimvKM/s1600-h/Pic6%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;Pic6&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Pic6&quot; src=&quot;http://lh3.ggpht.com/-Mfmcdyca6Y0/UrXTB4ceFII/AAAAAAAACR4/Y3T0XBcZ130/Pic6_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;653&quot; height=&quot;155&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2) Create a new Category named Generic Resources, in the resources section select “only the resources indicated” and put all generic resources to “Available resources” Area. &lt;/p&gt;  &lt;p&gt;3) If a new Generic resource gets created in future, you would need to manually add that Resource to this category. &lt;/p&gt;  &lt;p&gt;4) Unfortunately, there is no out of the box way to create a dynamic rule, which will automatically select all Generic Resources. If you frequently create generic resources, maintaining this category could be difficult. Your best bet would be to contact a Microsoft EPM Partner company to develop custom solution for you. &lt;/p&gt;  &lt;p&gt;5) in the same resources section, select the item “They are members of a Project Team on a project owned by the User”&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-H1s-frWTKSk/UrXTCaNvQdI/AAAAAAAACSA/wDnHUdUAfbE/s1600-h/Pic7%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;Pic7&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Pic7&quot; src=&quot;http://lh5.ggpht.com/-unYcUKuOxiQ/UrXTDCtTksI/AAAAAAAACSI/MRQ6HtpOerM/Pic7_thumb%25255B2%25255D.png?imgmax=800&quot; width=&quot;526&quot; height=&quot;208&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;6) This checkbox would mean that PM will be able to assign tasks to non-generic resources, once they have been added by Resource Manager. &lt;/p&gt;  &lt;p&gt;7) Check the following views in “Views – Add to Category” and click Save&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a. Project -&amp;gt; Tasks Summary&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b. Resource Center -&amp;gt; All Resources&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c. Team Builder -&amp;gt; All Resources&lt;/p&gt;  &lt;p&gt;8) Go to Server Settings -&amp;gt; Manage Groups -&amp;gt; Project Managers. Add your newly created category “Generic Resources” to Selected Categories section&lt;/p&gt;  &lt;p&gt;9) While “Generic Resources” is in selected categories section and it is clicked. You should see Permissions section which is specific for this category. Give the following permission as per screenshot, &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-DM7eR8x1zOw/UrXTDqfpTUI/AAAAAAAACSM/Ruczm8W911E/s1600-h/Pic9%25255B5%25255D.png&quot;&gt;&lt;img title=&quot;Pic9&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Pic9&quot; src=&quot;http://lh6.ggpht.com/-tJQGJW7vldg/UrXTESQ3qFI/AAAAAAAACSY/I1sLq6txA20/Pic9_thumb%25255B3%25255D.png?imgmax=800&quot; width=&quot;683&quot; height=&quot;154&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;10) Clicking save will allow PM to assign only generic resources in their Projects. &lt;/p&gt;  &lt;p&gt;11) To give resource managers the permission to assign any resource in the organization, Go to Manage Groups, click Resource Managers, in selected Categories, click “My Organization”, give the following permissions and click save&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-ZxQQRhoP8S8/UrXTFWnWRVI/AAAAAAAACSg/fTkAGBsgDc4/s1600-h/Pic10%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;Pic10&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Pic10&quot; src=&quot;http://lh4.ggpht.com/-B7ysRpMnoUE/UrXTGh6wp0I/AAAAAAAACSo/7lTZ8fXGcP4/Pic10_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;687&quot; height=&quot;346&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;12) Resource Manager should be part of the Project team to access the Project. Alternatively, they can be given permissions to access any project in “My organization” category. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/6287842473113948647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/6287842473113948647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/6287842473113948647'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-3.html' title='Project Server Security Scenarios – Part 3'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-Mfmcdyca6Y0/UrXTB4ceFII/AAAAAAAACR4/Y3T0XBcZ130/s72-c/Pic6_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-2429822903725407696</id><published>2013-12-19T05:58:00.000-08:00</published><updated>2014-01-08T16:17:47.130-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>Project Server Security Scenarios – Part 2</title><content type='html'>&lt;p&gt;Part 1 of this blog can be read &lt;a href=&quot;http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-1.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Scenario 3: Bob should access SharePoint Project Site for some Projects (But shouldn’t access Project details in PWA)&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bob is a user who’ll only be accessing SharePoint based Project sites to work on Risks, Issues and other SharePoint related stuff in Project Sites. He’ll only be using PWA to access Project Site and won’t be using any other Project Server Feature. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution 1:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The best way is to add Bob in that Project’s Project Team. If Bob doesn’t have any task assigned to him then he’ll get &lt;a name=&quot;more&quot;&gt;&lt;/a&gt;reader access to that project. If Bob requires Contribute access (so that he can add content to the Project Site), then there must be at least 1 task assigned to him on that Project. &lt;/p&gt;  &lt;p&gt;However, under default configuration, Bob will also get Team Member permissions on that Project, which means he’ll be able to see Project Schedule, can create new task assignment etc. &lt;/p&gt;  &lt;p&gt;Refer to Solution 2 below, if you want Bob to access Project Sites but you don’t want to allow him anything else to do in PWA.&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution 2:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1) Create a new Category called “Project Site Access”, Add all Projects which you want to give Bob access to. Or Select “All current and future projects in Project Server Database” if you want Bob to access all Projects’ Project Sites. &lt;/p&gt;  &lt;p&gt;2) In “Views – Add to Category” section, Assign at least 1 Project Center view to this Category, so that Bob can see the Project Name in Project Center. &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/-sF70DN2Crbc/UrXQ0lg8mcI/AAAAAAAACRM/0MdmmBsVpeI/s1600-h/Pic4%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;Pic4&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Pic4&quot; src=&quot;http://lh3.ggpht.com/-_73CDqvEMck/UrXQ1foc4VI/AAAAAAAACRU/FpVP_YTNy80/Pic4_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;594&quot; height=&quot;304&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3) Create a new group called “Project Site Users”, Add Bob to this group, and add your newly created category “Project Site Access” to Selected Categories section.&lt;/p&gt;  &lt;p&gt;4) While “Project Site Access” is in selected categories section and it is clicked. You should see Permissions section which is specific for this category. Give the following permissions as per screenshot, &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-55o2Oqf74XU/UrXQ2FeoCrI/AAAAAAAACRc/c1ft-F2ICsM/s1600-h/Pic5%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;Pic5&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;Pic5&quot; src=&quot;http://lh3.ggpht.com/-11TYAyySRo4/UrXQ224KF7I/AAAAAAAACRk/17dRprpRY4g/Pic5_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;625&quot; height=&quot;625&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;5) “Save Project to Project Server” permission is required for Bob to get read-write access. In the absence of this permission, he’ll get Read-only access to the Project Site.&lt;/p&gt;  &lt;p&gt;6) “View Project Summary in Project Center” is required for Bob to see the Project in Project Center and he can then click “Project Site” button to access Project Site. In absence of this check box, Bob will need to know the direct URL of the Project Site.&lt;/p&gt;  &lt;p&gt;7) “View Project Site” permission is required for read-only access to Project Site. In my tests, giving “Save Project to Project Server” permission without giving “View Project Site” permission was sufficient to give read-write access to Project Site. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;       &lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Scenario 4: Bob should access Projects with specific value of a Custom Field. &lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bob need to access all Projects where a Custom field has been set to specific value. (E.g. Where Field “Business Unit” is set to “Infrastructure” OR projects where one of the selected “Strategic Goal” is “Organisational excellence” &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1) Create a new category named “Infrastructure Business Unit Projects” or other name which is appropriate for your scenario.&lt;/p&gt;  &lt;p&gt;2) In the Projects Section select “Only the projects indicated” and then add all projects which fulfils your criteria to “Select Projects” side.&lt;/p&gt;  &lt;p&gt;3) If a new Project gets created in future which fulfils your criteria, you would need to manually add that Project to this category. &lt;/p&gt;  &lt;p&gt;4) Unfortunately, there is no out of the box way to create a dynamic rule, which will automatically select Projects for you as per your custom field value criteria. If you have too many such categories, maintaining them could be very difficult. Your best bet would be to contact a Microsoft EPM Partner company to develop custom solution for you. &lt;/p&gt;  &lt;p&gt;5) Create a new group called “Business Unit Managers” (or other appropriate name), Add Bob to this group, and add your newly created category “Infrastructure Business Unit Projects” to Selected Categories section.&lt;/p&gt;  &lt;p&gt;6) While “Infrastructure Business Unit Projects” is in selected categories section and it is clicked. You should see Permissions section which is specific for this category. If you want to give Bob the same level of access as of Project Manager then select “Project Manager” in the “Set Permissions with template” Drop down and click apply. You can also give permissions of Admin, team member or any other pre-defined access set. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In &lt;a href=&quot;http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-3.html&quot;&gt;next part&lt;/a&gt; of this blog, I&#39;ll talk about the scenario where a PM should only be assigning Generic resources to his Project Plan and actual resources should be assigned by Resource Manager. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/2429822903725407696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-2.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2429822903725407696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2429822903725407696'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-2.html' title='Project Server Security Scenarios – Part 2'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-_73CDqvEMck/UrXQ1foc4VI/AAAAAAAACRU/FpVP_YTNy80/s72-c/Pic4_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-5117673068447046623</id><published>2013-12-17T05:58:00.000-08:00</published><updated>2013-12-24T16:59:48.742-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>Project Server Security Scenarios – Part 1</title><content type='html'>In this blog series, I’ll talk about implementing some specific security requirements in Microsoft Project Server 2010 / 2013. I’ll assume that you already have some basic idea about Groups, Categories &amp;amp; Permissions but if that’s not the case, you can learn about Project Server 2010 Security Model (also applicable on Project Server 2013) through this excellent article by Ben Howard&lt;br /&gt;
&lt;a href=&quot;http://www.applepark.co.uk/project-server-security-explained/&quot;&gt;http://www.applepark.co.uk/project-server-security-explained/&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;

Project Server 2013 also offers a new permission mode known as SharePoint permission mode. As the name suggests, it is managed via SharePoint 2013 permissions model. It is a simplified model which can quickly be implemented, but it is not possible to implement the scenarios I am going to cover in this blog and hence the rest of the blog will only talk about classic Project Server permissions mode. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Scenario 1: Bob should access all Projects managed by his Department&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
By “Project managed by his&lt;b&gt; &lt;/b&gt;department”, I mean the projects where the Project Manager belongs to Bob’s department. We don’t want to give access to Bob on the projects where his resources are working as a team member but not managing the projects. &lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
We need to use RBS (Resource breakdown Structure) to define departmental relationships of users. This can mimic the actual organizational hierarchy or it could be a simplified version just to cover projects security requirements. &lt;br /&gt;
1) Go to Server Settings -&amp;gt; Manager Users &amp;gt; Bob (or whatever the name of your user is). Set the RBS value of that user at a top departmental level. E.g. Acme.HR&lt;br /&gt;
2) All other Project Managers in that department should either be at same RBS level (i.e. Acme.HR) or below it (e.g. Acme.HR.PM)&lt;br /&gt;
3) Create a new category called my department Projects. In the Projects Section, use the following settings. &lt;br /&gt;
&lt;a href=&quot;http://lh3.ggpht.com/-NeTxu-56FJE/UrXLwDt5ATI/AAAAAAAACQY/Xi0ZzScR54A/s1600-h/Pic1%25255B5%25255D.png&quot;&gt;&lt;img alt=&quot;Pic1&quot; border=&quot;0&quot; height=&quot;289&quot; src=&quot;http://lh4.ggpht.com/-NPd7d4qQ3Nc/UrXLxCOa4-I/AAAAAAAACQg/p3yOaqqjyrk/Pic1_thumb%25255B3%25255D.png?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;&quot; title=&quot;Pic1&quot; width=&quot;644&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
4) The last checkbox is only required if some of the PMs are at the same RBS level as of Bob. &lt;br /&gt;
5) In “Views – Add to Category” section, Assign at least 1 Project Center view to this Category, so that Bob can see the Project Name in Project Center. &lt;br /&gt;
&lt;a href=&quot;http://lh3.ggpht.com/-y0hV1-HGc2s/UrXMowRmemI/AAAAAAAACQo/PB9T9pnw9Dg/s1600-h/Pic2%25255B3%25255D.png&quot;&gt;&lt;img alt=&quot;Pic2&quot; border=&quot;0&quot; height=&quot;340&quot; src=&quot;http://lh6.ggpht.com/-XhIAUxQwcmg/UrXMpdg_v8I/AAAAAAAACQw/Kv7KIbsi6tQ/Pic2_thumb%25255B1%25255D.png?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;&quot; title=&quot;Pic2&quot; width=&quot;664&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
6) Create a new group called “Department Managers”, Add Bob to this group, and add your newly created category “My department Projects” to Selected Categories section.&lt;br /&gt;
7) While “My department Projects” is in selected categories section and it is clicked. You should see Permissions section which is specific for this category. If you want to give Bob the same level of access as of Project Manager then select “Project Manager” in the “Set Permissions with template” Drop down and click apply. You can also give Permissions of Administrator, Team member or any other pre-defined access set. &lt;br /&gt;
&lt;a href=&quot;http://lh3.ggpht.com/-2UChN4YuUQ0/UrXMqJcZb-I/AAAAAAAACQ4/tWFY5nFbN2c/s1600-h/Pic3%25255B3%25255D.png&quot;&gt;&lt;img alt=&quot;Pic3&quot; border=&quot;0&quot; height=&quot;387&quot; src=&quot;http://lh6.ggpht.com/-rt_1P5WanqE/UrXMrDXUMMI/AAAAAAAACRA/zVRBnAGRrGQ/Pic3_thumb%25255B1%25255D.png?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;&quot; title=&quot;Pic3&quot; width=&quot;685&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
8) For users of other departments, who want similar access as of bob for their own department’s Projects, You need to setup their RBS values but without creating a new category, you can simply add them to “Department Managers” group. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Scenario 2: Bob should access all Projects managed by his sub-ordinates.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This is the extension of previous scenario. Here Bob instead of being a department manager, could be at any level in an organization. So he could be leading a Business Unit, division or team etc. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
As long as your RBS is setup properly (i.e. all subordinates’ RBS value are at level below the RBS value of Bob), the solution will remain same as of scenario 1. For semantic correctness, you may want to use different names for your newly created category and Security group. &lt;br /&gt;
&lt;br /&gt;
In the &lt;a href=&quot;http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-2.html&quot;&gt;next part&lt;/a&gt; of this blog series, I&#39;ll cover scenarios including access to SharePoint based Project Sites and accessing Projects where a certain value for a custom field has been set. </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/5117673068447046623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-1.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/5117673068447046623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/5117673068447046623'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2013/12/project-server-security-scenarios-part-1.html' title='Project Server Security Scenarios – Part 1'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-NPd7d4qQ3Nc/UrXLxCOa4-I/AAAAAAAACQg/p3yOaqqjyrk/s72-c/Pic1_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-2579312321441944952</id><published>2013-11-25T02:13:00.000-08:00</published><updated>2013-12-24T16:46:08.584-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Online"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><title type='text'>Project Online – What it does and doesn&amp;#39;t do.</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;Though Project online is less than a year’s old offering by Microsoft and at the time of writing this , not yet launched in Australia, it is based on a proven Microsoft Project Server technology which has come a long way over last decade and has kept pace with demands of maturing PPM practice worldwide.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Being nascent in its cloud hosted variation, Microsoft Project Online has yet to re-factor some of its features to make the product more usable and valuable for its growing customer base. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Here is a list of differentiating features which still make Project 2013 on-premise more viable solution to decision makers who are looking to gain real value out of a PPM Investment. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;Business Intelligence:&lt;/u&gt; &lt;/b&gt;SSRS + direct DB access is not supported with Project online. The alternative supported tool i.e. Excel + oData has some cool uses but its quite slow and doesn’t cover many key reporting scenarios &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;like&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;a.&lt;span style=&quot;font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir=&quot;LTR&quot;&gt;&lt;/span&gt;Filtering data at query time based on user supplied parameters&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;b.&lt;span style=&quot;font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir=&quot;LTR&quot;&gt;&lt;/span&gt;Very limited time phased data available and no access to OLAP cubes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;c.&lt;span style=&quot;font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir=&quot;LTR&quot;&gt;&lt;/span&gt;Not optimized for PDF&amp;nbsp; / Print output&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;d.&lt;span style=&quot;font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir=&quot;LTR&quot;&gt;&lt;/span&gt;Fetching cross project sites data is v. limited &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;Access to ULS Logs: &lt;/u&gt;&lt;/b&gt;The two most common error messages end users receive in Project interface are “Unknown error” and “Unexpected error”. In on-premises configuration, administrator can access ULS logs to troubleshoot the cause. In Project Online, you need to raise a support ticket to Microsoft&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;Controlled Patching: &lt;/u&gt;&lt;/b&gt;Project online is great because it always offers the latest software. This, however may not always be good as some times new code can change existing behaviour or worst yet, break working functionality with no advance warning. In on-premise environment, test environment can be used to control patching in planned manner.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;Central Admin Access: &lt;/u&gt;&lt;/b&gt;Granular control over backing up and restoring project schedules, controlling refresh warning in excel data connections etc. are few of those settings which are essential yet being part of central admin, are available in on-premise version only.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://www.epmondemand.com.au/&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 13.0pt; line-height: 107%;&quot;&gt;EPMonDemand&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; is an offering by EPM Partners (the company I work for) in Australia which offers best of both worlds by providing a cloud managed solution with flexibility &amp;amp; control of an on-premise solution. Having a successful track record of providing cloud hosted EPM solutions since Project server 2010, EPMOnDemand has tackled the typical challenges of multi-tenant environment by offering greater control over deployed solution based on customer needs. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Here is a full comparison list of features in Microsoft Project On-premises vs Project Online vs. EPMonDemand&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 107%; mso-ansi-language: EN-AU; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: Arial; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;&quot;&gt;&lt;br clear=&quot;all&quot; style=&quot;mso-special-character: line-break; page-break-before: always;&quot; /&gt;&lt;/span&gt; &lt;br /&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTable15Grid4Accent2&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;&quot;&gt; &lt;tbody&gt;&lt;tr&gt;  &lt;td style=&quot;background: #ED7D31; border-right: none; border: solid #ED7D31 1.0pt; mso-background-themecolor: accent2; mso-border-bottom-alt: solid #ED7D31 .5pt; mso-border-bottom-themecolor: accent2; mso-border-left-alt: solid #ED7D31 .5pt; mso-border-left-themecolor: accent2; mso-border-themecolor: accent2; mso-border-top-alt: solid #ED7D31 .5pt; mso-border-top-themecolor: accent2; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;b&gt;Feature&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #ED7D31; border-bottom: solid #ED7D31 1.0pt; border-left: none; border-right: none; border-top: solid #ED7D31 1.0pt; mso-background-themecolor: accent2; mso-border-bottom-alt: solid #ED7D31 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themecolor: accent2; mso-border-top-alt: solid #ED7D31 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themecolor: accent2; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;span style=&quot;color: white; mso-bidi-font-weight: bold; mso-themecolor: background1;&quot;&gt;&lt;b&gt;Project   Online&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #ED7D31; border-bottom: solid #ED7D31 1.0pt; border-left: none; border-right: none; border-top: solid #ED7D31 1.0pt; mso-background-themecolor: accent2; mso-border-bottom-alt: solid #ED7D31 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themecolor: accent2; mso-border-top-alt: solid #ED7D31 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themecolor: accent2; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;span style=&quot;color: white; mso-bidi-font-weight: bold; mso-themecolor: background1;&quot;&gt;&lt;b&gt;Project   On premises&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #ED7D31; border-left: none; border: solid #ED7D31 1.0pt; mso-background-themecolor: accent2; mso-border-bottom-alt: solid #ED7D31 .5pt; mso-border-bottom-themecolor: accent2; mso-border-right-alt: solid #ED7D31 .5pt; mso-border-right-themecolor: accent2; mso-border-themecolor: accent2; mso-border-top-alt: solid #ED7D31 .5pt; mso-border-top-themecolor: accent2; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;b&gt;EPMonDemand&lt;/b&gt;&lt;i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Administrative backup and restore for Projects   (used to restore a slightly older version of a project without pulling a tape   and impacting an entire organization)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Archival Environments to retain data&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Multi-Dimensional Olap Cubes&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Direct access to SQL Server Databases and OLAP   Databases&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Greater flexibility for Reporting&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Direct SQL Query Access to Project Server and   SharePoint Databases&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Team Foundation Server Connectivity (including   2012) &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Can be achieved with “&lt;a href=&quot;http://www.epmondemand.com.au/products/epm-clouds/cloud-1/&quot;&gt;YourCloud&lt;/a&gt;”   offering. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Event Handlers can use both full trust event   handlers and remote event receivers&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Full access to PSI and CSOM&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Access to ULS Logs&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;As a result of full access to the databases, PSI   and CSOM there is more flexibility for Business Intelligence, Dashboards, and   Reports&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Recycling Bin for documents, projects, and sites&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Project Web Applications (Add applications to PWA)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;SharePoint Permission Mode or Project Server   Permission Mode&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;SharePoint Designer for workflows&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;No database administration&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Security handled by Provider&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Latest and greatest service packs and cumulative   updates&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Patches tested first in internal environment&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;No direct access to SQL Server and OLAP Databases &lt;i&gt;&lt;span style=&quot;font-size: 10.0pt;&quot;&gt;(Reporting   is done via &lt;/span&gt;&lt;/i&gt;OData&lt;i&gt;&lt;span style=&quot;font-size: 10.0pt;&quot;&gt;)&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;OData is not on par with direct data access&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Access using CSOM &lt;i&gt;&lt;span style=&quot;font-size: 9.0pt;&quot;&gt;(Note: PSI interfaces do not support O-   Authentication)&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;o:p&gt;&amp;nbsp;X&amp;nbsp;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;o:p&gt;CSOM &amp;amp; PSI, both are supported.&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;border-top: none; border: solid #F4B083 1.0pt; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Event Handlers require remote event receivers&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style=&quot;background: #FBE4D5; border-top: none; border: solid #F4B083 1.0pt; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-themecolor: accent2; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 215.25pt;&quot; valign=&quot;top&quot; width=&quot;287&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;Extensibility is accomplished via the use of the   SharePoint Extensibility Model – (as a result there is no full-trust code)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 75.1pt;&quot; valign=&quot;top&quot; width=&quot;100&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;X&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.2pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;td style=&quot;background: #FBE4D5; border-bottom: solid #F4B083 1.0pt; border-left: none; border-right: solid #F4B083 1.0pt; border-top: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid #F4B083 .5pt; mso-border-bottom-themecolor: accent2; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #F4B083 .5pt; mso-border-left-themecolor: accent2; mso-border-left-themetint: 153; mso-border-right-themecolor: accent2; mso-border-right-themetint: 153; mso-border-themecolor: accent2; mso-border-themetint: 153; mso-border-top-alt: solid #F4B083 .5pt; mso-border-top-themecolor: accent2; mso-border-top-themetint: 153; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.25pt;&quot; valign=&quot;top&quot; width=&quot;107&quot;&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Reference:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Online and On-Premises Solutions for Project Server 2013 (white paper)&lt;br /&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/dn217893.aspx&quot;&gt;http://technet.microsoft.com/en-us/library/dn217893.aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/2579312321441944952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2013/11/project-online-what-it-does-and-doesn-do.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2579312321441944952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/2579312321441944952'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2013/11/project-online-what-it-does-and-doesn-do.html' title='Project Online – What it does and doesn&amp;#39;t do.'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3061477920752632671.post-4605930422517692646</id><published>2013-08-01T23:23:00.000-07:00</published><updated>2014-03-07T01:37:53.353-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Project Server 2013"/><title type='text'>What’s old in Project Server 2013</title><content type='html'>&lt;span style=&quot;font-size: 13pt; line-height: 117%&quot;&gt;&lt;span style=&quot;font-family: verdana&quot;&gt;&lt;/span&gt;&lt;/span&gt;  &lt;br /&gt;  &lt;h4&gt;&lt;span style=&quot;font-family: segoe ui, sans-serif; line-height: 17px&quot;&gt;[Classic Project Server functional limitations that prevail in 2013]      &lt;br /&gt;&lt;/span&gt;&lt;/h4&gt; &lt;span style=&quot;font-family: segoe ui, sans-serif; line-height: 17px&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI&amp;#39;, sans-serif; line-height: 117%&quot;&gt;&lt;/span&gt;  &lt;p&gt;It seems Microsoft do listen to its customers feedback and have provided some great new features in Project 2013. These enhancements directly address most of the key limitations customers faced using Project Server 2010.&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;My favourite amongst these features is the ability to define Project Governance workflow in SharePoint designer 2013. Power View has a great WOW factor. True multi browser support is awesome and despite &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc263526.aspx&quot;&gt;some limitations&lt;/a&gt; , the only practical issue I came across in my extensive (Ahem! 3 weeks ;) )&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;#160; &lt;/span&gt;usage of Project Server 2013 on Google Chrome was that I couldn’t use Explorer view for my SharePoint libraries. &lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Other than that, ability to set baseline with in PWA, developer improvements (CSOM), mobile access views, oData feeds are all welcome additions&lt;span style=&quot;line-height: 117%&quot;&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&amp;#160;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;But if you earn your bread by configuring and customizing Microsoft EPM (oh, I meant PPM) Solution like me, you would notice that some pain areas have survived and ‘successfully’ migrated to 2013 version. Here is a (not exhaustive by any means) list of such points.&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;PDP Infrastructure and Custom Fields&lt;/h4&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: verdana; margin: 0cm 0cm 8pt; line-height: 117%&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;1-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Project Fields Web part (now renamed to Basic info in 2013) gives severely limited options in customizing the look &amp;amp; feel of the form. This means that &lt;/span&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;Arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;a.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;You can’t change label of fields (and can’t rename system fields) without opting for JavaScript hacks or replace it altogether with InfoPath.&lt;/font&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;Arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;b.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;font size=&quot;2&quot;&gt;Hierarchical drop downs are not possible (e.g. Drop down for section can’t change its possible values based on what is selected in Drop down for Department). &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;c.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Custom validation of fields is not possible without JavaScript trickery. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;d.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Can’t pre-populate fields based on some calculation and still leave them open for editing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;span style=&quot;font-family: verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;e.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;No attachment button. &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;#160;&lt;/span&gt;Would be great to attach related documents like business case on PDP itself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;     &lt;br /&gt;    &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;span style=&quot;font-family: verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;f.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;No Resource picker control. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/span&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 72pt; text-indent: -18pt; mso-list: l0 level2 lfo1; mso-add-space: auto&quot;&gt;&lt;span style=&quot;font-family: verdana&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;Arial&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;g.&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;No checkboxes and hence can’t make ticking a check-box mandatory. Can’t make a flag field mandatory either. If you want your PM to fill a check-list, and mark all items as “Yes” before he can move to next stage, this is not possible without server side workflow validation.&lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;#160; &lt;/span&gt;Though the good news is that developing such workflow is much easier now in 2013 than it was in 2010.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;font-family: verdana&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;2-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;Security can’t be controlled on PDP Level (example scenario is where only PMO should see the budget information PDP or only PM should update the Status Updates PDP)&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;     &lt;br /&gt;&lt;/div&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Governance / Workflow&lt;/h4&gt;  &lt;br /&gt;&lt;/span&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;3-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Site Template and Plan template can’t be attached to EPT post-project creation. So you can’t decide if a project is going to be small/medium or enterprise in planning phase and then attach the appropriate template in execution phase. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;4-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Change the Project Owner after project creation and any task assignment which was created prior (one frequent source is Project Plan Template) to that &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;#160;&lt;/span&gt;would still keep previous PM as Status Manager and that guy will keep receiving approval requests on that task. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Reporting&lt;/h4&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;5-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;SQL Server Reporting Services (SSRS) 2012 is nearly identical to SSRS 2008. Whatever you dislike about 2008 is still there &lt;/span&gt;&lt;span style=&quot;font-family: wingdings; line-height: 117%; mso-bidi-font-family: &amp;#39;Segoe UI&amp;#39;; mso-ascii-font-family: &amp;#39;Segoe UI&amp;#39;; mso-char-type: symbol; mso-hansi-font-family: &amp;#39;Segoe UI&amp;#39;; mso-symbol-font-family: wingdings&quot;&gt;&lt;span style=&quot;mso-char-type: symbol; mso-symbol-font-family: wingdings&quot;&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt; one example is limited browser support. &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;#160;&lt;/span&gt;You have to spend 90% of time in completing last 10% of report formatting to make it export compatible. Can’t control much of the parameters look &amp;amp; feel or their conditional visibility. Old style VB for customization. No CSS/Java script Support. No event handling. Can’t show a page number other than in header/footer. Well! I forgot I was only giving one example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;6-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Couldn’t show labels on any chart in PerformancePoint 2010. Can’t do that in PerformancePoint 2013 either. That’s btw true for Excel Power View 2013 as well but hay that’s a “new” issue so it doesn’t count. &lt;span style=&quot;mso-spacerun: yes&quot;&gt;&amp;#160;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Project Site Integration&lt;/h4&gt;  &lt;h3 style=&quot;margin: 2pt 0cm 0pt&quot;&gt;&lt;span style=&quot;font-size: small; color: black&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;br /&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;7-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Can’t calculate Project server Risk Indicator or Issue Indicator fields based on custom columns in Risk &amp;amp; Issue Lists in Project site. A corollary to that is that Risk/Issue Project site information can’t be shown in Project Center views. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;8-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Can’t show project fields in Project site or vice versa without unsupported solution starter components.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;h4&gt;Scheduling in PWA&lt;/h4&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;9-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Its great to save baseline within PWA. Though I would like to assign partial resources to tasks as well. More details here &lt;a href=&quot;http://blogs.office.com/b/project/archive/2013/05/29/differences-between-project-professional-and-project-online.aspx&quot;&gt;&lt;span style=&quot;color: #0563c1&quot;&gt;http://blogs.office.com/b/project/archive/2013/05/29/differences-between-project-professional-and-project-online.aspx&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;10- You can’t have Cost resources assigned to task in Schedule template. If you do so, you can’t create a Project in PWA. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;font-family: verdana; margin: 0cm 0cm 8pt 36pt; line-height: 117%&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;h4&gt;Project Professional&lt;/h4&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div&gt;   &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;11-&lt;span style=&quot;font: 7pt &amp;#39;&quot;&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;Create whatever PDPs you want to create. Project professional doesn’t know about and won’t honour them, it will show all the fields in Project Information form whose behaviour is not dependent on workflow and are not multiline.&lt;/span&gt;&lt;/div&gt; &lt;/div&gt;  &lt;div style=&quot;font-family: verdana; line-height: 117%&quot;&gt;   &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;  &lt;h4&gt;Other&lt;/h4&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;12- &lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;No mechanism to generate Auto Project ID&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;13- &lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;No intrinsic support in PWA for Program Management. Master Project and sub Project relationships can be defined in Project Professional which may not be the tool of choice for PMO.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin: 0cm 0cm 8pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1&quot;&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;&lt;span style=&quot;mso-list: ignore&quot;&gt;14- &lt;/span&gt;&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;/span&gt;&lt;span style=&quot;line-height: 117%&quot;&gt;New Project can’t be cloned from other Project. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: verdana; margin: 0cm 0cm 8pt; line-height: 117%&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: verdana; margin: 0cm 0cm 8pt; line-height: 117%&quot;&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: verdana; margin: 0cm 0cm 8pt; line-height: 117%&quot;&gt;&lt;/div&gt;  </content><link rel='replies' type='application/atom+xml' href='http://epmadvice.blogspot.com/feeds/4605930422517692646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://epmadvice.blogspot.com/2013/08/whats-old-in-project-server-2013.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4605930422517692646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3061477920752632671/posts/default/4605930422517692646'/><link rel='alternate' type='text/html' href='http://epmadvice.blogspot.com/2013/08/whats-old-in-project-server-2013.html' title='What’s old in Project Server 2013'/><author><name>Hammad</name><uri>http://www.blogger.com/profile/11585846491359871380</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>