[Windows Mobile Software Development] booda:
I've found that the FileOperation CSP works fine as long as you're very careful when you're setting it up, but as Chainfire says it is pretty cumbersome. Here are some examples for moving shortcuts around and creating folders in Start Menu/Programs:

<characteristic type="FileOperation">

<!--Create folder in Programs called "Docs and Ref" and move Google Maps shortcut into it-->

<characteristic type="%CE2%\Start Menu\Programs\Docs and Ref" translation="install">
<characteristic type="MakeDir" />

<characteristic type="Google Maps.lnk" translation="install">
<characteristic type="Move">
<parm name="Source" value="%CE2%\Start Menu\Programs\Google Maps.lnk" translation="install"/>
</characteristic>
</characteristic>

</characteristic>

<!--Create "Doom" shortcut from exe on storage card and copy it into Games folder-->

<characteristic type="%CE2%\Start Menu\Programs\Games" translation="install">
<characteristic type="MakeDir" />

<characteristic type="gfDoom.lnk" translation="install">
<characteristic type="Shortcut">
<parm name="Source" value="\Storage Card\Games\Doom\gfDoom.exe" translation="install"/>
</characteristic>
</characteristic>

</characteristic>

<!-- Move Office folder from Start Menu into Docs and Ref folder -->

<characteristic type="%CE2%\Start Menu\Programs\Docs and Ref\Office Mobile" translation="install">
<characteristic type="MakeDir" />

<characteristic type="Excel Mobile.lnk" translation="install">
<characteristic type="Move">
<parm name="Source" value="%CE2%\Start Menu\Programs\Office Mobile\Excel Mobile.lnk" translation="install"/>
</characteristic>
</characteristic>

<characteristic type="icon.lnk" translation="install">
<characteristic type="Move">
<parm name="Source" value="%CE2%\Start Menu\Programs\Office Mobile\icon.lnk" translation="install"/>
</characteristic>
</characteristic>

<characteristic type="OneNote Mobile.lnk" translation="install">
<characteristic type="Move">
<parm name="Source" value="%CE2%\Start Menu\Programs\Office Mobile\OneNote Mobile.lnk" translation="install"/>
</characteristic>
</characteristic>

<characteristic type="PowerPoint Mobile.lnk" translation="install">
<characteristic type="Move">
<parm name="Source" value="%CE2%\Start Menu\Programs\Office Mobile\PowerPoint Mobile.lnk" translation="install"/>
</characteristic>
</characteristic>

<characteristic type="Word Mobile.lnk" translation="install">
<characteristic type="Move">
<parm name="Source" value="%CE2%\Start Menu\Programs\Office Mobile\Word Mobile.lnk" translation="install"/>
</characteristic>
</characteristic>

</characteristic>

<characteristic type="%CE2%\Start Menu\Programs\Office Mobile" translation="install">
<characteristic type="RemoveDir" />
</characteristic>

</characteristic>

Couple of things to note - I always use "install" and "MakeDir" commands for folders - if the folder already exists, it won't do anything, and if it doesn't, the folder will be created. Either way, you know the folder will be there to move the shortcuts into.

The MakeDir and RemoveDir commands don't require a closing [/characteristic] tag - just make sure the slash is included as in the examples above.

You have to make sure that 1) any files you're referencing already exist and 2) you have the names exactly right. If you try to move a shortcut that isn't there or has a different name than what you referenced, the whole process bombs out.