Thanks again Frans. I'm still trying to master the predicate system... this is what I came up with for the 'created' field;
public override IEntityFields2 CreateFields()
{
IEntityFields2 toReturn = base.CreateFields();
toReturn.Expand(1);
IEntityField2 blotterId = EntityFieldFactory.Create(BlotterTradeFieldIndex.BlotterId);
IEntityField2 blotterTradeId = EntityFieldFactory.Create(BlotterTradeFieldIndex.BlotterTradeId);
IEntityField2 actualTime1 = EntityFieldFactory.Create(BlotterTradeFieldIndex.ActualDateTime);
IEntityField2 actualTime2 = EntityFieldFactory.Create(BlotterTradeFieldIndex.ActualDateTime);
actualTime1.ObjectAlias = "a";
actualTime2.ObjectAlias = "b";
blotterId.ObjectAlias = "b";
blotterTradeId.ObjectAlias = "b";
IPredicateExpression predicate = new PredicateExpression();
predicate.Add((PredicateExpression)(BlotterTradeFields.BlotterTradeId == blotterTradeId
& BlotterTradeFields.BlotterId == blotterId));
FieldCompareSetPredicate subQuery = new FieldCompareSetPredicate(actualTime1, null,
actualTime2, null, SetOperator.In, predicate);
IEntityField2 scalarField = new EntityField2("Created", new ScalarQueryExpression(actualTime1, subQuery));
toReturn.DefineField(scalarField, toReturn.Count - 1);
return toReturn;
}