Migrating IPN's from Ubercart to Civicrm, OR syncing membership payments from Ubercart to membersips/contributions in Civi
I've been trying to reverse engineer this problem also, and here's my partial answer so far:


It seems like the IPN is a post back to a url specified in the initial request. I don't see any way to change that postback url for an existing recurring contribution. 
The Ubercart postback url looks like  /uc_recurring_hosted/paypal/ipn/&lt;id&gt;
The CiviCRM postback url looks like
&lt;path to civicrm module directory&gt;/civicrm/extern/ipn.php


So .. part one is to set up an apache rewrite rule to redirect that POST to the civicrm one.

Having done that, the next trick will be for civicrm to actually handle that IPN - to do that, you'd need some records in civicrm (i.e. the contribution_recur table) that allow civicrm to handle the ipn.

If you inspect a successful Paypal recurring contribution in CiviCRM, it should give you enough clues about what you need to add for the 'migrated' recurring contribution.

Of course, this will only work if the contents of the POST are not specific to ubercart vs. civicrm. The fact that the ubercart postback includes an id, but the civicrm doesn't is a little bit of a flag, but we'll have to see ...