Ellery,
according to my poor background, mainly the problem is to deal with a .NET system (CRM) using a Java system (PI), and this complicated by the fact that with CRM on demand you have to manage different step to be performed before integrating the data (including the authentication that is not basic..), meaning that you need to invoke several Web Services before being able to post the data.
In fact most of the people in "our situation" is using biztalk because MS CRM SDK comes with a set of .NET classes and methods that can be used out of the box by Biztalk to easily manage all the mentioned steps...and even easier with Scribe where all is already available by standard.
Not impossible to use PI for the integration with MS CRM, but you have to orchestrate (creating proper PI developments) the following steps:
1. Connection to CRM (passing thru Live/Office365 to get the token..)
2. Invoke the CRM Discovery Service to get the available CRM Services
3. Invoke the CRM Metadata Service to get the "WSDL" for the choosen service
4. In case consume other services to get the situation into CRM and properly manage deltas
5. finally...Invoke the CRM service to post the data
Good luck...let me know if you succeed with this...let's say....oppurtunity!
Ciao