Skip to content

Instantly share code, notes, and snippets.

@douglascayers
Last active January 8, 2016 02:06
Show Gist options
  • Save douglascayers/6d015156cbe38894e338 to your computer and use it in GitHub Desktop.
Save douglascayers/6d015156cbe38894e338 to your computer and use it in GitHub Desktop.
When cloning Campaigns, preserves the Campaign Member Record Type. Workaround for https://success.salesforce.com/issues_view?id=a1p30000000T2jzAAC
trigger CampaignTrigger on Campaign ( before insert ) {
List<Campaign> campaigns = Trigger.new;
Set<ID> clonedCampaignIds = new Set<ID>();
for ( Campaign campaign : campaigns ) {
if ( campaign.isClone() ) {
clonedCampaignIds.add( campaign.getCloneSourceId() );
}
}
Map<ID, Campaign> clonedCampaignsMap = new Map<Id, Campaign>([
SELECT
id, campaignMemberRecordTypeId
FROM
Campaign
WHERE
id IN :clonedCampaignIds
]);
for ( Campaign campaign : campaigns ) {
if ( campaign.isClone() ) {
Campaign clonedCampaign = clonedCampaignsMap.get( campaign.getCloneSourceId() );
if ( clonedCampaign != null ) {
campaign.campaignMemberRecordTypeId = clonedCampaign.campaignMemberRecordTypeId;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment