Buscando, buceando y trasteando dí con esta solución: (aunque hay alguna más)
PASO 1:
Crear dos atributos en la entidad (Oportunidad x ejemplo) de tipo nvarchar, a uno le llamaremos 'enlace' y a otro 'flag' con una longitud de 250 y 15 respectivamente.
Agregamos estos atributos al formulario de la entidad.
PASO 2:
Abrimos las propiedades del formulario y en el evento ONLOAD escribimos esto:
//Ocultamos los atributos flag y enlace xq no interesan al usuario pero sí a nosotros.
crmForm.all.new_flag_c.style.display='none';
crmForm.all.new_flag_d.style.display='none';
crmForm.all.new_enlace_c.style.display='none';
crmForm.all.new_enlace_d.style.display='none';
var url ="<a href='http://crm-dynamic/CRM/sfa/leads/edit.aspx?id="
if(crmForm.FormType == 2)
{
//Si es el formulario de modificación
if ((crmForm.all.new_flag.DataValue == null )||(crmForm.all.new_flag.DataValue==""))
crmForm.all.new_enlace.DataValue= url + crmForm.ObjectId + "'> clic </a>";
else
{
//Comprobamos el Flag para saber en que estado nos encontramos
switch(crmForm.all.new_flag.DataValue)
{
case "SAVEANDCLOSE":
crmForm.all.new_flag.DataValue = "HECHO"
crmForm.all.new_enlace.DataValue= url + crmForm.ObjectId + "'>aqui.</a>";
crmForm.SaveAndClose();
break
case "SAVE":
crmForm.all.new_flag.DataValue = "HECHO"
crmForm.all.new_enlace.DataValue= url + crmForm.ObjectId + "'>aqui.</a>";
crmForm.Save();
break
case "SAVEANDNEW":
crmForm.all.new_flag.DataValue = "HECHO"
crmForm.all.new_enlace.DataValue= url + crmForm.ObjectId + "'>aqui.</a>";
crmForm.SubmitCrmForm(59, true, true, false);
break
default:
break
}
}
}
PASO 3:
en el evento ONSAVE escribimos esto:
//Si el Flag ya está relleno no haremos nada.
if ((crmForm.all.new_flag.DataValue == null )||(crmForm.all.new_flag.DataValue==""))
{
if (event.Mode==2)
crmForm.all.new_flag.DataValue="SAVEANDCLOSE";
else if (event.Mode==59)
crmForm.all.new_flag.DataValue="SAVEANDNEW";
else
crmForm.all.new_flag.DataValue="SAVE";
//Forzamos a guardar para que se cree el GUID del registro.
crmForm.Save();
//Impedimos que haga el guardado del evento original puesto que lo hemos manipulado
event.returnValue=false;
return false;
}
PASO 4:
Editamos la tarea 'Enviar email' del workflow.
Ahora podemos agregar el atributo 'enlace' de la entidad quedando de la siguiente forma:
Se ha creado una nueva Oportunidad con el tema {Tema(Oportunidad)} y requiere su validación.
Puede visualizarla haciendo clic {enlace(Oportunidad)}
CONSIDERACIONES:
La url que guardamos en el atributo 'enlace' en el ejemplo es
http://crm-dynamic/CRM/sfa/leads/edit.aspx?id= donde crm-dynamic es el nombre de nuestro servidor CRM y CRM es el nombre de la compañía matriz (es case sensitive). El resto de la url dependerá de la entidad que vayamos a manejar, copio aquí los posibles casos:
- SFA - Sales Force Automation (accounts,contacts etc)
- CS - Customer Service (cases,contracts etc)
- MA - Marketing Automation (campaigns, marketing lists etc)
Sales Force Automation:
Accounts: http://<crm-url>/sfa/accts/edit.aspx
Contacts: http://<crm-url>/sfa/conts/edit.aspx
Leads: http://<crm-url>/sfa/leads/edit.aspx
Opportunities: http://<crm-url>/sfa/opps/edit.aspx
Marketing Automation
Campaigns: http://<crm-url>/ma/camps/edit.aspx
Marketing Lists: http://<crm-url>/ma/lists/edit.aspx
Campaign Response: http://<crm-url>/ma/campaignresponse/edit.aspx
Case Management:
Cases: http://<crm-url>/cs/cases/edit.aspx
Contracts: http://<crm-url>/cs/contracts/edit.aspx
KB Articles: http://<crm-url>cs/articles/edit.aspx
Custom Entities:
Custom: http://<crm-url>/userdefined/edit.aspx
