I'm working with SharePoint and ProjectServer 2007 via PSI.
I need to retrieve the working hours of an employee in a project during a date range but I can't find a way to do it. The closest data I've gotten is the RES_ACT_WORK from Project.ReadProject(), but this is a total value.
Any ideas?
Finally I've found the way to retrieve it!!!
Statusing.ReadStatusTimephasedData
Edit:
This method return the statusing data for the currently logged user. If the user is the project owner, it will get the data for every assigned resource. Otherwise, only the user's data will be returned.
In order to retrieve the whole of the data (every project and every resource), the [PSI impersonation][2] must be used.
But that is not possible in my case, so I am developing a [PSI extension][3] to expose the information I need and [custom permission][4] to control access to it.
[2]: http://msdn.microsoft.com/en-us/library/aa974347(office.12).aspx
[3]: http://msdn.microsoft.com/en-us/library/bb428837(office.12).aspx
[4]: http://msdn.microsoft.com/en-us/library/aa974255(v=office.12).aspx
NB: I cannot post more than one link yet :P
Related
Longtime member, been a while since posting. Working on building out an Extranet and am running into a stupidly frustrating issue. First time using SharePoint Online as document repository for external (anonymous) users. In doing so, using Azure permissoning, have the documents split up in repositories on SharePoint based on access level. On top of that I am attempting to display them in Highlighted Content Web part, I am not able to sort them out by location AND type. I have a custom column in each repository that defines what type they are, but when I try to add the AND portion to the KQL it doesn't work. Additionally the internet seems to be massively void of actual documentation of KQL.
(
path:https://domain.sharepoint.com/sites/example/Level%201%20Resources/
OR
path:https://domain.sharepoint.com/sites/example/Level%202%20Resources/
OR
path:https://domain.sharepoint.com/sites/example/Level%203%20Resources/
OR
path:https://domain.sharepoint.com/sites/example/Level%204%20Resources/
OR
path:https://domain.sharepoint.com/sites/example/Level%205%20Resources/
OR
path:https://domain.sharepoint.com/sites/example/Level%206%20Resources/
AND
DocType:"Articles"
)
The above will simply pull all documents from those locations and ignore the AND statement. I have tried renaming it to call on the custom column identifier pulled from the source, and that doesn't work either.
The only real documentation I can find on this is: Here
Which doesn't appear to address filtering based on custom column tags.
EDIT: Reformatted to pull all docs from multiple locations using below, but the nesting portion still isn't working
path:(
"https://domain.sharepoint.com/sites/example/Level%201%20Resources/"
OR
"https://domain.sharepoint.com/sites/example/Level%202%20Resources/"
OR
"https://domain.sharepoint.com/sites/example/Level%203%20Resources/"
OR
"https://domain.sharepoint.com/sites/example/Level%204%20Resources/"
OR
"https://domain.sharepoint.com/sites/example/Level%205%20Resources/"
OR
"https://domain.sharepoint.com/sites/example/Level%206%20Resources/"
)
So the additional issue I was running into was the creation of a column to separate out based on the category of file type (not literal file type). Apparently SPO doesn't like it when you create a list and then reference that list to then filter by via KQL. So I found this morning this.
Apparently the best way to do this is create a custom "Choice" column, allow some time for it to flow and update, and then you can reference it via KQL.
We have SharePoint Online site with list. Users can add, edit and delete own items in this list.
How I can resolve new issue - Users can't edit and delete own items older than one week (from creation date).
Is it possible without coding Remote Event Reciever or Azure function?
Per my knowledge, there is not an OOTB way to achieve it, we have to write some custom code.
If you only want to the user can't see some items in list view base on some condition, we can use list view Filter to achieve it. Note:User also access item form through URL.
I suggest you use remote event receiver or azure function to achieve this requirement.
In classic site, we can also add some JavaScript code into master page to prevent users access edit form page and hide the delete button in the page.
For this kind of requirement the solution which is 'no code' and with SP online is Power automate (previously MS Flow).
The best option in Your case would be to create a recurring flow which for example starts every day at 00:10 AM -> please see MS docs with description how to do this.
The Flow should get all items from a specific list for a specific site. You can do that with the 'Get Items' step. After that You can use the 'Apply to each' Step to check each item creation date with a 'Condition' Step. When some item will be older than one week You can use additional steps to break permission inheritance on item and remove all groups from permissions on this item or change the permissions on item from edit to read. Here I found an interesting article where are some predefined steps shown how to remove all permissions, remove and add a group. To tell You the truth I was not aware there already are this kind of steps in Power automate (maybe something new :) ) .
I would use SharePoint HTTP request and use SharePoint API to remove permissions on item and change some group role from edit to read. So I would do a similar procedure like here the only difference is not to break permission on all list but just on a specific item which I would get by ID. You can do all of those API request with a 'SharePoint HTTP request' Step
Please be aware there usually is a 5 000 unique permission levels threshold (50 000 is in on-prem) in list (place check here for latest info on limits in SP Online). So a better option would be to create a folder with view only permissions for the users before and when an item is older than one week You could only move this item to that folder also with Power Automate. That way all the files (items) in this folder would be read only and You would have only one unique item scope in this list and not as many as the old items.
Some other options You could use are:
Also code solution, but not RER and Azure function, would be to create a console app that uses CSOM to look through items in this list and either breaks permission on each item or moves to a folder (like the flow) and schedule this CSOM app on some local or remote server in Task Scheduler... Of Course You would need some local (or other) server for it which is always up and running :)
If You would like to use some 'little coding' and by any chance You are still using classic UI (not modern) You could use JSLink attached to CT or some column like Title and block editing of fields in edit forms etc (this is not the best option as always the users may create a view without a columns with this JSLink and go around this or modify the item using CSOM or Rest API)
You might consider using PowerApps (In case you have it configured in your subscription) to customize the edit form,
Then you use the validate() method, and disable a user from submitting the form in case ("Created" + 7 days) <= Today() or something like that.
I am trying to help a colleague out. I created a query in IBM Maximo 7.6, it is in the work orders table but I added a sub query that pulls from the workflow table and filters for anything in Work Flow.
My question is: On the start center, is there anyway to modify the results set so that we can pull fields from work order and work flow? I have work number, status, and vehicle. Basically, is it possible to bring in what inbox the work order is in, on the results set, in graphical form. So, put together a bar graph based on the inbox?
Any direction would be great, thank you!
First, you need to make sure there is a Relationship on the WORKORDER object in Database Configuration that will find the workflow record you want to see info from for a given work order. Once you've done that, these instructions show you, step by step, how to create Report Object Structure (ROS) (an Object Structure "Consumed By" Reporting), how to grant access to the ROS, and then how to use the ROS in a Result Set portlet to access data in related objects.
I have read many posts that say the automatically assigned list ID number in Sharepoint 2007 does not change.
It is very important that the list items in my sharepoint site stay in the same order as when they were originally created. My initial image was that I could sort on the ID # to keep the list in order (since it wasn't supposed to change). It has not worked out. I have noticed that the ID changes and my data gets out of order.
Could anyone please explain to me how the automatically assigned ID # works in Sharepoint 2007? How/When is it assigned, reassigned? Is there an action that causes the # to change?
When a workflow runs does Sharepoint reassign the item w another ID#? I do have several workflows running on this site.
A list item id is just like a SQL identity column. It is automatically incremented, is (or should be) unique within a particular list and doesn't change. Are you able to identify a point in your process where you are seeing an id change?
maybe you can take a look at the back-end sql server, there is no way you can manupilate it on user interface or object model as i know.
We need to fetch the items added/updated after the user's last visit.
We need this information from 3 separate lists under the same web.
Pointers on how to accomplish this would be very helpful (and does SharePoint provide any API for this).
Kind regards,
Filtering by modified date is straightforward enough, though the method will depend on the type of view - the tricky part is getting the last login time - you're probably going to need a bit of custom code to save that.
Brute force would be to run a foreach on every version until you reach a version before the users last login date, and do this on every list item, and then again on every list. You can see which fields changed this way by seeing what changed between versions. You can narrow down the the set of items to do this on by only querying for ones with a modified date since the users last login
As for finding the users last login, sorry I can suggest anything for that. I've not looked for it before.