Value Objects Vs Entities - domain-driven-design

Quick question... When approaching something like an email address the immediate idea is to treat this as a value object.
If we have a number of entities though, say a customer, a contact, and a supplier that are referencing the same email address, it is conceivable that when we change a customer's email address we may want the customer's contact, and they may be a supplier too, have that email change reflected with those entities as well. Am I correct in thinking this is giving the email address identity so it should now be represented as an entity?
Cheers,
Steve

Yes, I believe you're on the right lines. See my previous answer here.

Related

How can I use PowerBI's Row Level Security to implement an employee filter on a website?

I have to embed a PowerBI scorecard visual on a website. I've set up the scorecard in PowerBI Desktop, and it looks fine; the slicer for the scorecard filters the employee name.
I'd like for the employee that visits the company website to see only their data in the scorecard- in other words, their presence on the website would automatically filter the scorecard to reveal their statistics only. Fortunately, they have to login to the company's website by providing their Windows credentials.
I'm not sure how to go about doing this. I understand that I have to use the "Security" portion of the "Modeling" tab, and I've (successfully) created an explicit role for one viewer by using the following code:
'Table1'[Employee Name] = "John Smith"
Of course, this only reflects John Smith's statistics when I click "View as Roles." I don't think it's practical to explicitly write a DAX code snippet for every single employee, since my company has 3000+ employees.
Can anyone share any instructions, or lead me to some?
Thank you in advance.
I had to deal with a similar issue, though we view our dashboards within the Power BI service, so that is the authentication I am familiar with. The basis for this form of dynamic row level security is that the expression written is evaluated for each row in the indicated table to either True or False.
If your user has signed in to the you will be able to determine the identity using USERPRINCIPALNAME(). This is the email address they use to sign into the service.
Since you are displaying data specific to that user, it is possible you already have their email in your data. If that is the case, and it is simply another field in your table your validation line would look something like:
'Table1'[Email] = USERPRINCIPALNAME()
The left side of the expression refers to the row you are referencing, while the right will supply the name of the authenticated user. If you don't have that available in your existing data, you could use a DAX expression to lookup the Employee name from a list of emails and their associated names.
In this case, you only have one role which everyone needs to be assigned to, and the logic above will determine which rows they can see.
This is a simple example in which each employee can only see their own data. The model can be extended by creating 'security tables' with users and their associated records, and then utilizing the CONTAINS() function to check authorization, but it sounds like you have a 1-to-1 relationship with what individuals should be able to see.

How can I create a connection/link between Excel and an Outlook email?

I've been sending Outlook emails from Excel for a while, using it to manage my sales and project management activities at work. I've been enjoying increased productivity from it, so I want to do some more advanced things. For example, I think I have the code worked out, probably in a crude way, to have Excel help keep track of emails that have not been replied to. (I simply have Outlook, for each new email, open a workbook, and create a record in a new row, then have Excel attempt to match it to an email I previously sent.)
But once I have a record in Excel of such an email, it has no link or connection to the actual email. I want to be able to click on the Excel icon or link for the email, and then pull up the actual email.
I have found possibilities in using EntryIDs and MessageIDs, Outlook URLs and GUIDs,and even good-old AdvancedSearch (but I think having Excel search for an email that it initiated seems pretty clunky; there should be a way to create a hard link to the email).
Relatedly, and also probably just as clunky, but I've pondered "embedding" a unique identifier in each Excel-initiated email, that could be used to find it and link it back to a record in Excel. In an HTML email, I can add a string of numbers under my signature, in white text on a white background, and it's not perfect but in most cases should go unnoticed, and would allow my spreadsheet to positively identify it (as a reply to a particular email, etc.)
I know we're not supposed to ask for "advice" but I am hoping someone can point me in the right direction to something that may work for what I hope to accomplish.
Why not use the email's time sent (TIMESTAMP - MMDDYYYYHHSS), Recipient, and Subject Line as unique, identifying markers? Add these fields to your row data. Then, after email is sent, create a macro event that will:
Launch the Outlook App
Open the Sent Folder
Loop through all items
Filter email to the markers (Time, Recipient, Subject Line) of the active Excel row
Open the Email Item
Aside, my personal advice is to use a database like MS Access which works great with its siblings, Excel and Outlook. Also, it is designed to maintain relationships between data elements. Access could hold all the needed email content (emailID, recipient, subject, body, date, emailsent?) and with forms can provide AfterUpdate, ButtonClick, OnOpen events to manage the process of data entry, email process, data update, so on. If only you knew the increased productivity that comes with a relational database!
You can add a user property to the MailItem class. See the UserProperties collection for more information.
The automated systems add an ID to the end if the Subject line.

Automatic Email Tracking in CRM 2011

In CRM 2011 I have the option to give the subject of the email a number. Can I use the number from the subject for Unique?
Not clear from your question exactly what you're trying to achieve.
The CRM email subject tracking tokens are not necessarily unique. They will be unique to that conversation within your CRM organisation until the numbers run out and it starts over.
Every record on CRM has a truly unique GUID which should be used if you need a unique identifier. If you don't like the long and complex format of the GUID (your unique reference will be human facing) there are a number of automatic numbering solutions available for CRM which will generate friendlier unique ids for records.
Hope this helps,
Tony

Extracting full name from Person or Group type?

How can I get the fullname (firstname, lastname) of a user so I can place it in a email through a workflow. The only fields I can identify that might help are those of type Person or Group (Modifiedby, CreatedBy, etc.), but they all return domain/username. Any solution must be applicable to Sharepoint 2007.
Thanks,
George
This is an old thread, but others may benefit from one possible solution.
IF you have a small & known user base, you can cross reference a secondary list that has (First, Last, Person (object)). Set local variables in the workflow to first/last based on corresponding Person (as String or Display name typically) and reference in the dynamic email. (Works for 2010, but am unable to verify for 2007)
With Sharepoint 2010 you can choose how the workflow will return it (Name, email, username, etc), but not with Sharepoint 2007. So I think you're stuck with domain/username until you upgrade Sharepoint.

Sharepoint: Person column in custom list

I have a Person field in my custom list. I want to have a view that will show multiple fields from that Person instead of the one I had to choose when creating the Person column.
So basically I want to have one column for Person and then in the view see Name, title, email, phone. All of those are valid choices but I can only pick one right now.
I really want to avoid typing in the username lookup for each column I choose to display.
This is SP 2007
It sounds like you need to create a custom fieldtype (with a fieldcontrol) that inherits from the userfield but in viewmode renders out the different columns you need. Is that something along the lines you are looking for?
http://www.sharepointblogs.com/nicksevens/archive/2007/08/31/create-custom-field-types-for-sharepoint.aspx
Note: This link is broken
You probably want a Computed Field. Note that this is not a Calculated Column. A Computed Field is what is used to display the same data is different ways. In SharePoint there is a Title field, but there is also a "Title (linked to item with edit menu)" computed field as well as a "Title (linked to item)" computed field.
See midway down this link for more details. I'm not sure if it will have all of the power that you need, but if it does it is almost certainly what you are looking for if you don't mind getting into the Schema XML file a little.
Could you use a DataView web part for this? If it's just a question of viewing the data that might be suitable.
Came across this thread and thought I'd add a tip. This suggestion is clearly not for every use case, but may work well in situations where you're managing a list rather than allowing manual inputs (verified to work with SP 2013):
Create a spreadsheet with columns to match your SharePoint list that contains multiple profile fields. (for example: name, phone number, email address)
In the spreadsheet, enter the same email address in all of the person/group field types in that row. (e.g., boss#company.com, boss#company.com, boss#company.com)
Select and copy the row(s) you wish to transfer to SharePoint.
In SharePoint, change the list view to "Quick Edit" and paste the row(s) into the grid.
SharePoint will process each field and convert the email address to the profile value you selected during the list setup.

Resources