azure devop project stats longer than 30 days? - azure-devops

In azure devop, we can see the project stats, for example this one. But it is only showing upto 30 days activities.
I am wondering if there is a way (maybe some API call) to show activities over a whole year? We area trying to do a end of year report for big boss and would be nice to show how many deployments we done,how many PR were completed etc over the whole year.

By checking the API that it called behind the scenes, you should have something like
https://ORG.visualstudio.com/GUI/_apis/build/Metrics/Daily?minMetricsTime=2021-11-05T13%3A08%3A08.556Z
You can manipulate this value on browser and change the date to an older one for example (2020-12-16)
As I am not working with an Azure Devops repos for long time I cannot test the behavior, but it maybe work.

Related

How to see work items' effort/remaining hours added to a sprint after the iteration start date?

I am aware it is not good practice in terms of Scrum, but unfortunately we often have to change scope during our weekly Sprints.
During Sprint Review, how can I see what scope of work was added after the sprint was started? This can either be the sum of effort of User Stories added or by the remaining hours of their tasks added - ideally both.
The only resource I could find was this previous question about tracking individual items (unanswered), whereas what I care about is tracking the total effort/remaining hours added:
How to track Azure work items that have been added into the sprint after the iteration start date?
Is this possible? Any information would be appreciated.
When viewing the Analytics tab for the Sprint, the total scope increase is visible from the graph as well as the heading shown below. This suits our purposes.

Prevent users from creating new work items in Azure DevOps

I've been looking at organisation and project settings but I can't see a setting that would prevent users from creating work items in an Azure DevOps project.
I have a number of users who refuse to follow the guidelines we set out for our projects so I'd like to inconvenience them and the wider project team so that they find it better to follow the guidelines than not - at the moment we've got one-word user stories and/or tasks with estimates of 60-70 hours which isn't reflective of the way that we should be planning.
I'd still want them to be able to edit the stories or tasks and moving statuses, but that initial creation should be off-limits for them (for a time at least). Is there a way to do this??
The Azure DevOps Aggregator project allows you to write simple scripts that get triggered when a work item is created or updated. It uses a service hook to trigger when such an event occurs and abstracts most of the API specific stuff away, providing you with an instance of the work item to directly interact with.
You can't block the creation or update from, such a policy, Azure DevOps will inform the aggregator too late in the creation process to do so, but you can revert changes, close the work item etc. There are also a few utility functions to send email.
You need to install the aggregator somewhere, it can be hosted in Azure Functions and we provide a docker container you can spin up anywhere you want. Then link it to Azure DevOps using a PAT token with sufficient permissions and write your first policy.
A few sample rules can be found in the aggregator docs.
store.DeleteWorkItem(self);
should put the work item in the Recycle Bin in Azure DevOps. You can create a code snippet around it that checks the creator of the work item (self.CreatedBy.Id) against a list of known bad identities.
Be mindful that when Azure DevOps creates a new work item the Created and Updated event may fire in rapid succession (this is caused by the mechanism that sets the backlog order on work items), so you may need to find a way to detect what metadata tells you a work item should be deleted. I generally check for a low Revision number (like, < 5) and the last few revisions didn't change any field other than Backlog Priority.
I'd still want them to be able to edit the stories or tasks and moving statuses, but that initial creation should be off-limits for them (for a time at least). Is there a way to do this??
I am afraid there is no such out of setting to do this.
That because the current permission settings for the workitem have not yet been subdivided to apply to the current scenario.
There is a setting about this is that:
Project Settings->Team configuration->Area->Security:
Set this value to Deny, it will prevent users from creating new work items. But it also prevent users from modify the workitem.
For your request, you could add your request for this feature on our UserVoice site (https://developercommunity.visualstudio.com/content/idea/post.html?space=21 ), which is our main forum for product suggestions.

Is there a way to set a certain start time hour/minutes for a sprint?

I would like to set a more precise time for starting the sprint in DevOps, currently it allows only dates to be configured.
Is there a way to set a certain start time hour/minutes for a sprint?
For this issue , as Daniel mentioned in the comment, currently azure devops does not support setting the time accurate to the hour/minute for the spirit.
You could add your request for this feature on our UserVoice site , which is our main forum for product suggestions. After suggest raised, you can vote and add your comments for this feedback. The product team would provide the updates if they view it.
Simple answer. Don't move your US across sprints. If you have created tasks for the US or work has started on any tasks in the US from previous sprints, then leave the US in the previous sprint and move the tasks over.
That way you can track which stories are incomplete at the end of each sprint and understand your actual velocity more easily.
The danger of moving unfinished work over is that you may have 90% finished a large story and give yourself a false image of success in your current sprint, affecting future estimations.

How to change or inject date to Sharepoint application to test across months

Here is the situation:
I've got the application that requires different actions for different months. For example if I'll create a task that requires some actions for next 5 months I need some kind of method to keep jumping ti next months to confirm correct behaviour.
Usually I would just connect custom NTP for the server and than change date to whatever I want but this application works on Sharepoint online and as far as I know I can't do that (even if I'll it will affect all users not app under test only).
Another problem is that method should be easy and possible to explain or at least show to business during UAT.
Thanks in advance.

MS CRM recursive workflow and performance

I’m about to write a workflow in CRM that calls itself every day. This is a recursive workflow.
It will run on half a million entities each day and deactive the record if it was not been upodated in the past 3 days.
I’m worried about performance has anyone else done this.
I haven't personally implemented anything like this, but that's 500,000 records that are floating around in the DB that the async service has to keep track of, which is going to tax your hardware. In addition, CRM keeps track of recursive workflow instances. I don't have the exact specs in front of me, but if a workflow calls itself a set number of times within a certain timeframe, CRM will kill the workflow.
Could you just write a console app that asks the Crm Service for records that haven't been updated in three days, and then deactivate them? Run it as a scheduled task once a day, and then your CRM system doesn't have the burden of keeping track of all those running workflow instances.
EDIT: Ah, I see now you might have been thinking of one workflow that runs on all the records as opposed to workflows running on each record. benjynito's advice makes sense if you go this route, although I still think a scheduled task would be more appropriate than using workflow.
You'll want to make sure your workflow is running in non-peak hours. Assuming you have an on-premise installation you should be able to get away with that. If you're using a hosted instance, you might be worried about one organization running the workflow while another organization is using the system. Use the timeout and maybe a custom workflow activity, if necessary, to force the start time to a certain period.
I'm assuming you'll be as efficient as possible in figuring out which records to deactivate. (i.e. Query Expression would only bring back the records you'll be deactivating).
The built-in infinite loop-protection offered by CRM shouldn't kill your workflow instances. It stops after a call depth of 8, but it resets to 1 if no calls are made for an hour. So the fact that you're doing this once a day should make you OK on the recursive workflow front.