You don't need to run that SOQL query at all. All of the data you need is already present in the records in `Trigger.new`. Further, you likely don't need to be running this `after insert` and incurring the overhead of another DML operation. Instead, run the trigger `before insert`, iterate over `Trigger.new`, and apply your logic via a simple `if` statement. As to your direct question, l.Systems_Group__c = Campaign.Systems_Group__c; l.System_Type__c = Campaign.System_Type__c; This won't work because you are attempting to traverse a relationship by using the bare sObject name, `Campaign`. You can't do that in Apex; that reference is to the field entity itself, which has type `Schema.SObjectField`. Instead, you'd need to collect the Campaign Ids of the Campaign Members matching your criteria, query the Campaigns into a Map, and then access the values by keying into the Map with the Campaign Id. Now, you _could_ also do this by querying the `CampaignMember`s themselves and traversing the relationship in SOQL, but then you're locked in to running the trigger `after insert` and using another DML operation. In total, your trigger would have a _structure_ much like this: ```apex trigger MyTrigger on CampaignMember (before insert) { Set<Id> campaignIds = new Set<Id>(); for (CampaignMember cm : Trigger.new) { if (THIS CAMPAIGN MEMBER MATCHES CRITERIA) { campaignIds.add(cm.CampaignId); } } Map<Id, Campaign> campaignMap = new Map<Id, Campaign>([ SELECT (FIELDS DESIRED) FROM Campaign WHERE Id IN :campaignIds ]); for (CampaignMember cm : Trigger.new) { if (THIS CAMPAIGN MEMBER MATCHES CRITERIA) { Campaign thisCampaign = campaignMap.get(cm.CampaignId); cm.YOUR_DESIRED_FIELD__C = thisCampaign.YOUR_SOURCE_FIELD__C; } } } ``` No DML required at all.