In
the Contact entity, I have
the following attributes
Preferred email - A read only field of type Email
Personal email 1 - An email field
Personal email 2 - An email field
Work email 1 - An email field
Work email 2 - An email field
School email - An email field
Other email - An email field
Preferred email option - An option set with
the following values
{Personal email 1, Personal email 2, Work email 1, Work email 2,
School email and Other email).
None of
the above mentioned fields are required.
Requirement
When user picks a value from Preferred email option, we copy
the email address available in that field and apply
the same in
the Preferred email field.
Implementation
The Solution Architect suggested that we implement
the above requirement as a Workflow.
The reason he provided was - most of
the times, these values are to be populated by an external website and
the data is then fed into CRM 2011 system. So, when they update Preferred email option via a Web Service call to CRM,
the WF will run and updated
the Preferred email field.
My argument / solution
What will happen if I do not pick a value from
the Preferred email Option Set? Do I set it to any of
the email addresses that has a value in it? If so, what if there is more than one of
the email address fields are populated, i.e., what if Personal email 1 and Work email 1 is populated but no value is picked in
the Option Set?
What if a value existed in
the Preferred email Option Set and I then change it to NULL?
Should
the field Preferred email (where
the text value of email address is stored) be set to Read Only?
If not, what if I have picked Personal email 1 in
the Option Set and then edit
the Preferred email address text field with a completely new email address
If yes, then we are enforcing that
the preferred email should be one among Personal email 1, Personal email 2, Work email 1, Work email 2, School email or Other email [My preference would be this]
What if I had a value of
[email protected] in
the personal email 1 field and personal email 2 is empty and choose value of Personal email 1 in
the drop down for Preferred email (this will set
the Preferred email field to
[email protected]) and later, I change
the value to Personal email 2 in
the Preferred email. It overwrites a valid email address with nothing. I agree that it would be highly unlikely that a user will pick Preferred email as Personal email 2 and not have a value in it but nevertheless it is a possible scenario, isn’t it?
What if users typed in a value in Personal email 1 but by mistake picked Personal email 2 in
the option set and Personal email 2 field had no value in it.
Solution
The field Preferred email option should be a required field
A JS should run whenever Preferred email option is changed. That JS function should set
the relevant email field as required (based on
the option chosen) and another JS function should be called (see step 3).
A JS function should update
the value of Preferred email with
the value in
the email field (as picked in
the option set).
The JS function should also be run every time someone updates
the actual email field which is chosen in
the option set.
The guys who are managing
the external website should update
the Preferred email field - surely, if they can update Preferred email option via a Web Service call, it is easy enough to update
the Preferred email right?
Question
Which is a better method? Should it be written as a JS or a WorkFlow?
Also, whose responsibility is it to update
the Preferred email field when
the data flows from an external website?
I am new to CRM 2011 but have around 6 years of experience as a CRM consultant (with other products). I do not come from a development background as I started off as a Application Support Engineer but have picked up development in
the last couple of years.