Tim,
I think there are a couple of things going on here:
If you have a report that is based on a dynamically grouping report (one that will group the data in different ways based on the report definition), they will always group based on the settings of the main report.
To solve this, the easiest thing to do is reremove the dynamic binding functionality. This is easily accomplished by renaming the sections and controls.
When looking at the layout, you will see sections called grpDynamicHeader1 (and maybe 2 and 3), grpDynamicFooter1 (and maybe 2 and 3).
These sections should be renamed in the property windows. You can simply append a "1" to the end. The groupheader sections will need the "DataField" property set based on how you want the report to group (phase, category).
The controls in the section (namely the txtDynamicHeader1 textbox will need to have it's datafield property set also (category, phase).
also the txtGroupName textbox is dynamically set so you can clear the datafield property and set the text property to the grouping type (phase/category).
The second issue is this:
The data for the reports is sorted based on the settings for the main report.
That means that the subreports are feeding off the same data as the main report so it's not sorted as needed.
There is a demo that contains a "cut and paste" bit of script for resorting data on the fly. This was specifically done to support subreports that need the data sorted in a different manner than the main reports.
It's located here:
Help with Custom Report and Dynamic grouping
I hope all this makes sense.
-R