I have a requirement where approval is a seperate process and needs to be complted before the main case can be progressed. I have implemented a cover and child relationship between the main case and the approval case. So in totality I have 2 case types. Is this design correct or I should have 3 case types like SkyKm's application. In this we do not have to paralley process the main case and approval case as the maincase can only progress after the approval case is completely processed. Please let me know what is the best practice in this type of scenario?
You have said "approval is a separate process" yet you have decided to use a subcase to do the approval, the parent case not being allowed to proceed until approval is granted.
How elaborate is your approval process?
If very elaborate and a requirement exists to report on the approval process separately, a subcase would be justified.
Otherwise you could simply use a subflow, or in Pega 7 a flow step, where every assignment within the subflow is assigned to an approver who is different from the parent case owner. Presuming you do not want the parent case owner to have permission to do their own approval.
Is there a requirement for the case owner to continue doing work while the case is being approved, the parent case only being allowed to proceed to a certain point?
In that situation a subcase would also make sense as you can override DetermineLockString plus have the parent case proceed until reaching a "dead end" Assignment -- only the AllCoveredResolved Ticket being called (or 7.1 Wait shape's criteria being satisfied) allowing the parent case's flow to proceed.