I have created a custom object called Campaign_c and then created a M:M relationship with Contact object.
The intersection object I called it CampIntCont
- ObjectA is the Source Object: Campaign
- ObjectB is the Intersection Object : CampIntCont
- ObjectC is the Target Object: Person
-Field name for the foreign key to the Source Object: ObjectA_Id_Src_ObjectAToObjectB_c
Campaign_Id_Src_Campaign_cToCampIntCont_c
-Field name for the foreign key to the Target Object: ObjectC_Id_Tgt_ObjectCToObjectB_c
Person_Id_Tgt_PersonToCampIntCont_c
You have I also created a DCL as a picker for contacts to be added in the custom Object Campaign
I called it: ContactPicker_c
Now Create a Trigger Before Update (to add on update record the contact) or Create a Action Link in Custom object Campaign
Same script works in both situations.
Script looks like this:
//here I am getting the party Id of the contact to
//be added from the DCL(you did not specified how contacts are picked up so I improvised)
def partyId = ContactPicker_Id_c
def addContact = newView(‘CampIntCont_c’)
def addRow = addContact.createRow()
addRow.setAttribute(‘Campaign_Id_Src_Campaign_cToCampIntCont_c’,Id)
addRow.setAttribute(‘Person_Id_Tgt_PersonToCampIntCont_c’,partyId)
addContact.insertRow(addRow)