Blog de Rafa Ansino

Otro sitio más de

Project Online: Using reserved custom field names breaks Odata feed and create projects from list

Os paso este articulo si estais teniendo porblemas con el Odata


This also applies to Project Server 2013, but as the biggest impact is probably to Odata and this is likely to be used more in a Project Online environment I’ve tagged the title with Project Online.  Thanks to Chris Slowinski for identifying this Odata issue and alerting us via a forum posting.

If you create a project level custom field and use certain terms they can lead to issues with the Odata feed of the Project table, and you can get an error in Excel like the following, reading “We couldn’t get data from the Data Model. Here’s the error message we got: The content of the data feed is not valid for an Atom feed.”

 Error message from Excel - We couldn’t get data from the Data Model. Here’s the error message we got: The content of the data feed is not valid for an Atom feed

If you looked at the feed in a browser (with a Url something like http://servername/pwa/_api/ProjectData/Projects then the error would be “An error occurred while processing this request”.  Be careful – you can also get the same error with simple typos in the Url – so just getting that error may not mean you have used a reserved name in a customer field.  The most common custom field we have seen used that hits this issue is Project ID, and as the Odata feed will also remove spaces you will see the same issue with ProjectID.  Another known field to run into this is Project Owner ID, or ProjectOwnerID (or other variations).  I suspect there could be others, and potentially others at other levels such as task and resource may affect access to tables related to those entities.

There are a few other names that cause the other problem described in the title, but which don’t give the Odata error, and these are:

  • Start Date
  • Description
  • Project Name

You will also see the issue with local language versions, such as Descripción del Proyecto in Spanish.

This issue occurs when you are creating projects from list items – so for example you have your list of potential projects in a list, then you select one of the items in the list and click Create Project.  In this example I am aiming to create a new project called Project Idea 2.  Don’t confuse this scenario with making a project from the full list – here we are only using one list item – this isn’t sync tasks to project.. 

View of a SharePoint list with Project Idea 2 selected and showing the ribbon where the Create Project link can be found

Usually you would get a dialog to map your list fields to the project fields and instead you get an error:

Error when creating the project - Sorry, something went wrong. The erorr page also contains a link to TECHNICAL DETAILS which will show the correlation ID and date and time

For Project Online you should click the TECHINCAL DETAILS link and then open a support incident giving us the correlation ID and date and time (or just check if you are using a reserved word in your custom fields – and change it) – and for on-premises installations you could check the ULS logs yourself and would likely see something like the following:

07/24/2013 07:11:52.39    w3wp.exe (0x2494)    0x1914    SharePoint Foundation    Runtime    tkau    Unexpected    System.ArgumentException: An item with the same key has already been added.    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)     at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)     at Microsoft.Office.Project.PWA.ApplicationPages.PwaSettings.FillPSFields()     at Microsoft.Office.Project.PWA.ApplicationPages.PwaSettings.Initialize()     at Microsoft.Office.Project.PWA.ApplicationPages.PwaSettings..ctor(PwaSettingsDlg dlg)     at Microsoft.Office.Project.PWA.ApplicationPages.PwaSettingsDlg.OnInit(EventArgs e)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)    fb8964fc-6af4-e211-940b-00155d745a02

The fix is pretty straightforward as the custom field name is editable – just make it different from our reserved words and all will be good.  We should be updating our documentation to cover these reserved words.  Thanks to Sriram and Aik for their work in identifying this issue.



Leave a Reply

Tema creado por Anders Norén