Custom Footer tab for Emails

We have a requirement to display all the emails sent on a case in a separate footer tab in 360 views of the case. This should most likely be a table with some basic details of the email as columns like Subject, To, From and Email Sent datetime. Additionally, a column with option to view or download the email sent. We initially planned to fetch the details from Data-Corr-Email class and show the details but this feature to view/download the email is becoming the tricky part. We don’t want to use the OOTB widget to view the emails because the case is prone to have lot of attachments hence business needs a separate view for the emails sent out. We will most likely remove the widget from utilities as documents already have a view. We just need now one for emails/correspondence. Any suggestions on how to make a hyperlink/option to view/download would help. This requirement in Pega Constellation in 25.1.2
Thanks in advance.

Just so I get this right

Business Problem

The utilities widget for attachments is getting overcrowded with the sent emails. Users would like to see actual case documents, not the emails.

“View all” has no grouping ability, so this doesn’t really overcome the problem either?

Potential Solution

I have only implemented solution 1 and 5, so would be keen to see others experiences here.

Are 2, 3 or 4 viable? Or did you go a DX Component route?

Approaches

  1. Hide emails: I had this in '23 days, we opted to hide emails from all persona’s except our business admins
    1. Modifed pyGetAllAtachment to hide emails for certain access groups
    2. You could expand this concept and have a case toggle to turn this on/off (defaulted off)
  2. List View: You could create a List View based on a data page for Link-Attachment class (e.g. D_AttachmentList).
  3. Attachments on Work: You could create attachments field on your case, these allow multiple and when you drop that into a Partial View it will show the list of those attachments. In this approach you’d need to copy the metadata and attachment into that field.
  4. Embedded Data attachments: You could created your own embedded data property in your case. Data Level Attachments are supported from 24.2. In this approach you’d need to copy the metadata and attachment into that field.
  5. Embedded data (no attachment): Copy the email details into your own embedded data, forget the pega generated attachment. The important thing is the email content and metadata, which can be easily copied into your own list of embedded data. You can even show this in a nice timelines view with expand/collapse:

Challenges/Issues

  • Option 2, list view.
    • Assumes: the datapage is queryable and you are returned a URL field that would open/download the attachment.
    • A cursory review of Link-Attachment class and data page, doesn’t seem to be made for Constellation apps (nothing relevant, no views, datapage I mention is not queryable)
  • Option 3 / 4, your own fields in the case
    • Requires you to physically copy the attachment from the email into your own fields. The benefit here is attachments have an ability to open natively AND in '26 get an upgrade with the ability to see attachments side-by-side with your case.
    • You might be able to utilise Rendering Image Attachments in a View (Infinity '25) from @machp to enhance this
  • Option 5, embedded data on case but no attachment
    • Is far cleaner as you don’t try to intercept anything Pega is doing, you could even turn off the generation of the email attachment I believe.

As I say, I have not done 2, 3 or 4, so would really like some expertise from the community, someone who has exhausted those options to find the bet one for you!

I tried both 3 and 4 options and it works well for attachments of class Data-WorkAttach-File. But, somehow it does not support email attachments that are instances of class Data-Corr-Email. For normal attachments, when we just copy the attachment key into these attachment properties, they automatically get all the required details. But, when I do the same for Email instances, it simply won’t fetch the details. Even if I try to manually copy all the fields, it won’t allow. It clears them automatically. So, as far as Email instances are considered, these both approaches won’t work.

So, I believe the way would be to use approach 5 and if we really need the attachment, write a small custom component that allows us to download the content.