The iteration done over the sheet's CTConditionalFormatting objects possibly uses ctWorksheet.removeConditionalFormatting(j), but does not update the iteration index j. For example, if there are 2 CTConditionalFormatting objects, and the first iteration removes it (at index 0), the second one fails to get it, since index 1 is already out of bounds.
Created attachment 31964 [details] 56914 Fixes the iteration problem by using a backwards iteration, and using more efficient one-time fetch of the XMLBeans array. Modified BaseTestConditionalFormatting.testShiftRows to use two conditional formatting objects.
Thank you for the patch. Applied with r1622759