We are using TFS 2010.
Is there a way to find the unique work items types associated in all the check-ins for this week?
E.g. if there were 15 check-ins done this week, then some of them might have been associated to a "task" type of workitem, some to "bug" and some to "requirement". I need to get these workitem types used for check-ins.
Can i perhaps create a TFS query to get this data or by some other way?
This cannot be queried using a work item query, since the "Changeset" relation cannot be queried. It is possible to track the workitems which have changed between dates, but you cannot limit that to only triggering on added changeset relations.
You can of course query the history through the UI or the command line, but that doesn't provide you with an easily extractable list of work items.
It would be rather straightforward to use the TFS Client Object Models VersionControlServer class to query the history between 2 dates and then grab the list of associated work items from there. If such a solution would be something you'd consider.
Related
We are a housing association with a large CRM system (2016 & SP1). We have a new requirement that requires our users to be able to search for people who are current (ie not previous) occupants or residents or who are not residents (eg contractors)
For this purpose, we need to search the Person entity which has a related Tenancy entity. Person has TenancyType field with possible (option set) values Occupant, Resident, Contractor. Tenancy has TenancyStatus field with possible (text) values Current and Previous.
We tried using the following filter criteria in the quick view on the Person entity:
thinking that it would return all people who are not previous residents. However we noticed that it would filter out contractors because contractors do not have related tenancy records.
We needed to change the criteria to return all contractors OR all residents and occupants with no previous tenancy. So we changed it to the following:
at which point we got stuck because we noticed that it was not possible to AND together the second and the third conditions as the third one is a related entity.
We are wondering what the best way is to achieve the above bearing in mind that we do not want a separate view for each condition, eg one for residents, one for none residents, etc.
Any help or suggestion is greatly appreciated.
It is not possible to do this with a single query.
Instead, you can use two queries. If you do not want to do that, then using reports (as suggested by Alex) or a BI-solution would be other possibilities.
Thanks to everyone here who spent time answering my question. The following describes the correct answer:
https://community.dynamics.com/crm/f/117/p/241352/666651#666651
We're using hosted Visual Studio Team Services to track our stories and tasks. We'd like our testers to be able to query for Product Backlog Items in the current iteration that have no uncompleted child tasks of the development activity type. I'm having trouble putting such a query together, any suggestions?
Use a "Work item an direct link" type query and set the Filter option to "Return items that do not match links" and the link type to "Child".
Filter the Child type further to include any combination of fields you don't want to have. You can use groups and and+or constructs to limit by multiple exclusive conditions.
I am trying to make something like this in Filemaker Database views.
The database will contain employees and projects. There need to be two combined views. One displaying the list of employees and which projects they are on in which week and by which percentage. The other one displaying the list of projects and which employees are on it in which week by which percentage. For each employee and each project there need to be a sum of percentages for all assigned projects / employees.
I have made three tables in my database:
employee
projects
employee_on_projects
Now I want to create these views. Can anybody tell me how to do this from scratch?
Thanks in advance.
FileMaker is not a good tool for creating cross-tab reports, as it has no native functionality to build these. It has to be done manually. Do a search on cross tab reporting in FileMaker and you will get some ideas.
Traditionally you need relationships and fields to hold and display your data.
On the top of my head, in this case I would probably use merge variables for displaying progress and other calculated data to avoid having fields for all those weeks. A script would gather the data using ExecuteSQL and calculate the variables. The whole thing could even be generated in HTML and displayed in a web viewer.
This way you should get away without too many relationships and fields.
If you want a simpler, but more cluttered solution, you could go with regular fields for all 53 weeks and use a sub summary report. Each field could be set up with ExecuteSQL if possible, to avoid having a relationship for each period.
Is there a way in Team Foundation Server to search in the work item history? For example, using the query editor you can add the expression "AssignedTo=PersonName" which fetches all tickets assigned to that person. But how would you setup a query so that it fetches all tickets that has ever been assigned to that person, even if the current assignee is someone else?
You need to use the Was Ever operator in your query:
We use CRM 4.0 at our institution and have no plans to upgrade presently as we've spend the last year and a half customising and extending the CRM to work with our processes.
A tiny part of model is a simply hierarchy, we have a group of learning rooms that has a one-to-many relationship with another entity that describes the courses available for that learning room.
Another entity has a list of all potential and enrolled students who have expressed an interest in whichever course.
That bit's all straightforward and works pretty well and is modelled into 3 custom entities.
Now, we've got an Admin application that reads the rooms and then wants to show the courses for that room, but only where there are enrolled students.
In SQL this is simplified to:
SELECT DISTINCT r.CourseName, r.OtherInformation
FROM Rooms r
INNER JOIN Students S
ON S.CourseId = r.CourseId
WHERE r.RoomId = #RoomId
And this indeed is very close to the eventual SQL that CRM generates.
We use a Crm QueryEntity, a Filter and a LinkEntity to represent this same structure.
The problem now is that the CRM normalizes the a customize entity into a Base Table which has the standard CRM entity data that all share, and then an ExtensionBase Table which has our customisations. To Give a flattened access to this, it creates a view that merges both tables.
This view is what is used by the Generated SQL.
Now the base tables have indices but the view doesn't.
The problem we have is that all we want to do is return Courses where the inner join is satisfied, it's enough to prove there are entries and CRM makes it SELECT DISTINCT, so we only get one item back for Room.
At first this worked perfectly well, but now we have thousands of queries, it takes well over 30 seconds and of course causes a timeout in anything but SMS.
I'm given to believe that we can create and alter indices on tables in CRM and that's not considered to be an unsupported modification; but what about Views ?
I know that if we alter an entity then its views are recreated, which would of course make us redo our indices when this happens.
Is there any way to hint to CRM4.0 that we want a specific index in place ?
Another source recommends that where you get problems like this, then it's best to bring data closer together, but this isn't something I'd feel comfortable in trying to engineer into our solution.
I had considered putting a new entity in that only has RoomId, CourseId and Enrolment Count in to it, but that smacks of being incredibly hacky too; After all, an index would resolve the need to duplicate this data and have some kind of trigger that updates the data after every student operation.
Lastly, whilst I know we're stuck on CRM4 at the moment, is this the kind of thing that we could expect to have resolved in CRM2011 ? It would certainly add more weight to the upgrading this 5 year old product argument.
Since views are "dynamic" (conceptually, their contents are generated on-the-fly from the base tables every time they are used), they typically can't be indexed. However, SQL Server does support something called an "indexed view". You need to create a unique clustered index on the view, and the query analyzer should be able to use it to speed up your join.
Someone asked a similar question here and I see no conclusive answer. The cited concerns from Microsoft are Referential Integrity (a non-issue here) and Upgrade complications. You mention the unsupported option of adding the view and managing it over upgrades and entity changes. That is an option, as unsupported and hackish as it is, it should work.
FetchXml does have aggregation but the query execution plans still uses the views: here is the SQL generated from a simple select count from incident:
'select
top 5000 COUNT(*) as "rowcount"
, MAX("__AggLimitExceededFlag__") as "__AggregateLimitExceeded__" from (select top 50001 case when ROW_NUMBER() over(order by (SELECT 1)) > 50000 then 1 else 0 end as "__AggLimitExceededFlag__" from Incident as "incident0" ...
I dont see a supported solution for your problem.
If you are building an outside admin app and you are hosting CRM 4 on-premise you could go directly to the database for your query bypassing the CRM API. Not supported but would allow you to solve the problem.
I'm going to add this as a potential answer although I don't believe its a sustainable or indeed valid long-term solution.
After analysing the indexes that CRM had defined automatically, I realised that selecting more information in my query would be enough to fulfil the column requirements of an Index and now the query runs in less then a second.