I have to admit, like many people, I sometimes will try to fix a problem in an expedient manner by performing the appropriate data manipulations required. In the case of FIM2010, this may include the addition of a small “maintenance” MPR, sets or workflows.
That said, it is important to periodically review the MPRs and sets for objects that are no longer required so that the system will not have to process unnecessary operations. For example, I found an MPR today that I had created but then replaced it with another later during the implementation. It was a request type MPR that did not assign any permissions and I had removed the workflows however, it was still being processed against requests where the assigned attributes were being modified.
In another case, I found a series of MPRs that were waiting for particular data conditions that were not really necessary. For example, I had an MPR that waited for a set transition into a “Ready for Password” set to generate an initial password. Why is this MPR even necessary. Frankly, once I was working on the documentation and saw how I had set up the password generator, I realized I could simply have this done on the creation of an attribute versus having a whole calculated set and a transition MPR handing that specific task. I understand the logic of it all where I didn’t want initial passwords to be generated for existing accounts but then, reflecting back, the initial password is an initial flow only and therefore, for the accounts that already existed and joined into the environment, the value would never be used! There was MPR and calculate set removed.
Remember, FIM takes a lot of processor and SQL queries to do the calculations required for the sets and MPR’s to operate correctly. Minimizing the number of “extraneous” MPRs and especially calculated sets will provide overall benefits to the long term system performance.