2009-08-18 4 views
2

J'ai créé un plugin pour l'entité e-mail et l'ai enregistré sur l'événement Pre Create (pipeline enfant). Plugin est aussi simple que possible:MS CRM - Le plugin Pre Create ne modifie pas la valeur de la propriété

public class AddDescription : IPlugin 
{ 
    public void Execute(IPluginExecutionContext context) 
    { 
     DynamicEntity di = (DynamicEntity)context.InputParameters["Target"]; 

     di.Properties["description"] = "blabla"; 
    } 
} 

Mais la description (= corps de l'e-mail) reste la même. Aucune exception n'est levée. J'ai débogué et il semble que la collection de propriétés soit changée (description 'blabla' ajoutée) mais elle n'est pas sauvegardée.

Si j'inscris le même plugin sur l'entité du compte (Pre Create, pipeline enfant), cela fonctionne correctement.

L'entité e-mail a-t-elle des restrictions sur la modification des propriétés lors de la création? !!?

EDIT (PLUS D'INFO):

J'ai essayé de changer la description, sujet, catégorie et sous-catégorie et à ma catégorie de surprise et la sous-catégorie modifiée alors que la description et l'objet n'a pas fait.

TNX aide bye

Répondre

2

Pourquoi êtes-vous dans le pipeline des enfants? Ma conjecture est que l'activité de base est créée dans le pipeline principal et l'activité enfant (comme Matt le signale - ne contient que des attributs non partagés) puis passe par le pipeline enfant. Est-ce que cela fonctionne comme prévu dans le pipeline parent? Peut-être qu'il y a un scénario que vous devez prendre dans le pipeline des enfants?

+0

Oui, cela fonctionne dans le pipeline parent, mais il ne se déclenche pas lorsque la campagne rapide ou la campagne crée des e-mails. –

+0

Pourriez-vous passer à la post-enfant et créer le service CRM dans le pipeline des enfants (google articles sur ce faire - vous ne pouvez pas utiliser le service hors du plugin)? Ensuite, faites la mise à jour dont vous avez besoin? –

+0

oui c'est la seule option. Cependant, je dois vérifier ce qui se passe si Exception est lancée dans le plugin Post. Pré-plugin annule l'opération dans ce cas, je pense. –

1

Je dirais que c'est parce que le sujet et la description sont des attributs communs à toutes les activités (l'entité ActivityPointer), tandis que la catégorie et sous-catégorie sont sur l'entité e-mail. Lorsque vous déboguez, vérifiez s'il existe une autre propriété DynamicEntity ... c'est peut-être là que les propriétés qui vont à l'activité sont stockées.

+0

oui c'est ce que je pensais après avoir regardé db quelques heures. Et il n'y a pas d'autre paramètre dans le plugin, seulement DynamicEntity de l'email bientôt-être-créé. Et bien sûr vous ne pouvez pas créer de plugin pour l'entité d'activité. –

0

Ceci est une solution.

((DynamicEntity)context.InputParameters.Properties["Target"]).Properties["propertyname"]="propertyvalue"; 

Si cette entité n'a pas cette propriété, vous devez ajouter. Par exemple, nous voulons définir une propriété de chaîne qui ne contient pas les propriétés de la cible. Tis est le code:

((DynamicEntity)context.InputParameters.Properties["Target"]).Properties.Add(CrmTypes.CreateStringProperty("propertyname", "propertyvalue")); 
Questions connexes