I need your suggestions on below requirements.

The campaign team will provide/distribute a list of CONTACT to department likes Call Centre, Collections, etc. Each department has a different process defined for CONTACT where they first validate the distributed activity (Phone call, Custom Activity etc) and then it's their discretion to call the CONTACT. There could be multiple calls to CONTACTS in case Number busy or CONTACT want to connect at different time. A grouping of phone calls is required at department level to get clear view of beneficiary within campaign.

Approach 1: - Create a custom activity entity for departments and distribute.

In this approach, I have to build the distribution logic, but the structure is normalized and I can get a clear view in Activity Timeline for groups of calls made by different departments. I can apply filters on Call Centre Activity, Collections Activity entity etc. Departments will run business logic on this "Custom Activity" and if they find it OK then they will create Phone Calls i.e. Phone call activity entity record is only created when it is needed.

Approach 2- Distribute phone call (Parent) and use as a container.

In this Phone Calls(Parent) which will be a container for all the child calls. There will be a self-referential 1: N relationship between phone calls. I can leverage OOTB distribution, but on the other hand, in Activity Timeline I will see all phone calls parent, child of all departments.

In Approach2, Phone Call (Parent) is not justifying its purpose, there will not any connect on this entity record between AGENT and CONTACT. The only benefit I see here is I can use OOTB distribution. But If I build my own distribution logic then approach 1 seems to be a good choice and more structured.