I think the best way to handle this requirement is to write a custom java manipulator. You can read how to do that here: http://docs.oracle.com/cd/E28911_01/PlatformServices.612/pdf/ContentAdapterGuide.pdf
In your manipulator's execute() method, you can look through the different prod_id source properties from the input record and instantiate a record for each prod_id encountered (e.g. Record rec1 = handler.getRecord(inp);). You'd then have to delete the other prod_ids and .emit each record in the loop (e.g. handler.emit(rec1);).