Not quite. The IMS spec actually says that you do third-party registration once for each service profile, using an arbitrary public ID in that service profile. (In other words, it's once per iFC, not once per public ID).

What we really want to do is populate a separate list of ServiceProfile objects and apply register_with_application servers to those, but that wouldn't have been useful for what this change was trying to achieve (better per-call performance) and is separate work, so we agreed to defer it to a later point when we do work in general on better IMS compliance. For now I kept the existing behaviour.