Search code examples
intershop

Intershop: How To Delete a Channel After Orders Have Been Created


I am able to delete a channel from the back office UI and run the DeleteDomainReferences job in SMC to clear the reference and be able to create a new channel again with the same id.

However, once an order has been created, the above mentioned process won't work.

I heard that we can run some stored procedures against the database for situation like this.

Question: what are the stored procedures and steps to take to be able to clean any reference in Intershop so that I can create a channel with the same id again?

Update 9/26:
I did configure a new job in SMC to call DeleteDomainReferencesTransaction pipeline with ToBeRemovedDomainID attribute set to the domain id that I am trying to clean up.

The job ran without error in the log file. The job finished almost instantly, though.

Then I ran the DeleteDomainReferences job in SMC. This is the job I normally run after deleting a channel when there is no order in that channel. This job failed the following exception in the log file.

ORA-02292: integrity constraint (INTERSHOP.BASKETADDRESS_CO001) violated - child record found ORA-06512: at "INTERSHOP.SP_DELETELINEITEMCTNRBYDOMAIN", line 226 ORA-06512: at line 1

Then I checked BASKETADDRESS table and did see the records for that domain id. This is, I guess, the reason why DeleteDomainReferences job failed.

I also execute the SP_BASKET_OBSERVER with that domain id, but it didn't seem to make a difference.

Is there something I am missing?


Solution

  • With the assistance from intershop support, it has been determined that, in IS 7.8.1.4, the sp_deleteLineItemCtnrByDomain.sql has issue.

    line 117 and 118 from 7.8.1.4

    delete from staticaddress_av where ownerid in (select uuid from staticaddress where lineitemctnrid = i.uuid);
    delete from staticaddress where lineitemctnrid = i.uuid;
    

    should be replaced by

    delete from basketaddress_av where ownerid in (select uuid from basketaddress where basketid = i.uuid);
    delete from basketaddress where basketid = i.uuid;
    

    After making the stored procedure update, running DeleteDomainReference job finishes without error and I was able to re-create the same channel again.

    The fix will become available in 7.8.2 hotfix as I was told.