Issue with Create Order Add/Remove Product and generated RatePlanIds
RatePlanId Support Ticket
The Ask: I would like the ability to check if an existing RatePlanId has been removed from a subscription.
The Concern: Calling the Create Order -> Add/Remove Product API will add a new product to a subscription every-time it is called even if the removed product has already been removed. I am unable track the changes to an existing ratePlanId since on every Create Order -> Add/Remove Product, it regenerates the ratePlanId on the removed prdocut.
The Cause: The RatePlanId used to identify the removed product RatePlan is still valid even after the product is removed. This Ghost RatePlan Object no longer exists on the subscription number. Although even more odd is that this Ghost RatePlan Object, when requested by the Get RatePlan service, contains a subscription key, which when used for a Get Subscription by Subscription Key call, actually points at the same subscription number.
Further Explanation: Currently, the ratePlanId on the Subscription.RatePlan Object is generated at the time of Create Order -> Add/Remove Product. You must pass an existing RatePlanId on the Remove Product Order Action. When a Remove Product Order Action is completed, it will change the RatePlanId, even if the object still looks similar to the old RatePlan Object. What this means, is that there is no way to track a RatePlan Object between calls. One case where this causes an issue is when adding and removing a product in the same call. The Ghost RatePlanId will allow the removal of the same product an unlimited amount of times. There is no feature to be able to check whether this RatePlanId has been removed or not. This creates a scenario where its possible duplicate requests to a customers a account can add extraneous products to a customer account and overcharge them monthly.