Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Challenge Objectives

Our client wants to implement an Outlook Web Add-in to apply the following limitations for outgoing emails: 

To: limited to maximum 20 recipients

Cc: limited to maximum 20 recipients 

Bcc: no limitation

The requirement is to have this limitation on external mail only.

Technology Stack

  • Office 365/Outlook

  • Javascript

  • XML

  • CSS

Individual requirements

In the previous challenge, we implemented the Outlook Web Add-in. Now we want to make it support the Desktop version Outlook.

The following version of Outlook are in scope:

  • MS Outlook 2013, Windows 10

  • MS Outlook 2016, Windows 10

As per the Microsoft official document, Outlook add-ins are supported in both Outlook 365 (Web) and Outlook 2013 or later (Desktop) intrinsically. So in this challenge, you are required to tweak the existing code of the web add-in to make it support Desktop version, and don’t break any existing functionalities of the web add-in.

The existing codebase is: https://gitlab.com/email-id-limitation/outlook-addin/tree/master

You can grant yourself access via a Topcoder-X link in the forum, if you don’t have access.

Here are the details requirement

(1) Email ID limitation (Already implemented, tweak it to support the Desktop version)

Development an Outlook Web Add-in that apply the following limitations for external email IDs:

  1. To: limited to maximum 20 recipients

  2. Cc: limited to maximum 20 recipients

  3. Bcc: no limitation

 

For internal email IDs, there is no such limitation.

 

We can distinguish whether an email ID is internal or external by its domain. For example, xxx@topcoder.com is an internal email ID, xxx@gmail.com is an external email ID. There might be multiple internal email ID domains. Like xxx@topcoder.com, yyy@topcoder.co.jp, abc@topcoder.co.my, xxx@Topcoder.au, xxx@topcoder.ie, xxx@topcoderna.com, billsedison@topcoderservices.com can all be internal email IDs.

 

In the “To:” or “Cc:” field, we can put 20 external email IDs at maximum, but an unlimited number of internal email IDs.

 

(2) User notification message (Already implemented, need to tweak the message text and support the Desktop version)
User notification message when a user puts more than 20 E-Mail addresses in the “To:” or “Cc:” field.

 

In case a user puts more than 20 E-Mail addresses in the “To:” or “Cc:” field, the user should receive a notification message with the appropriate text.

 

The message should display in the following 4 languages:

  • English

  • German

  • French

  • Italian

The text of the message is

  • English: Sorry, you can't put more than 20 external Email IDs in To/Cc field.

  • German: Es tut uns leid, Sie können nicht mehr als 20 externe E-Mail-IDs in das Feld An/Cc eingeben.

  • French: Désolé, vous ne pouvez pas mettre plus de 20 ID de messagerie externes dans le champ À/Cc.

  • Italian: Spiacenti, non puoi inserire più di 20 ID email esterni nel campo A/Cc.

 

Note, 

  • If the user enters more than 20 external IDs in To field, then the message text should be “Sorry, you can't put more than 20 external Email IDs in To field”.

  • If the user enters more than 20 external IDs in Cc field, then the message text should be “Sorry, you can't put more than 20 external Email IDs in Cc field”.

  • If the user enters more than 20 external IDs in both To and Cc field, then the message text should be “Sorry, you can't put more than 20 external Email IDs in To & Cc field”.

 

The language of the message depends on the current language of the Outlook. So if the Outlook is in English, display the message in English, if the Outlook is in German, then display the message in German, etc.

 

If the current language of Outlook is not in the list, then display the message in English. For example, if the Outlook is in Chinese, then display the message in English.

 

(3) Configuration (Already implemented, tweak it to support the Desktop version)

You should make the following items configurable.

1. Internal email ID domains.

  • You should support multiple internal email ID domains.

  • The number of email ID domains is arbitrary, can be varying from 0 to unlimited.

  • You can configure them in a Javascript array.

 

2. User notification message content

  • The text of the user notification message should be configurable.

  • It allows to add more languages in the configuration.

  • You can configure them in a Javascript object (map).

(4) Fix small issues

 

Now we have an issue that the error message might be in the wrong language after we changed the Outlook language.

 

Steps to reproduce

1. Change the config.js to make maximumExternalEmailIDs be 2.

2. Change the language of Outlook to German

3. Add 3 external email IDs and 1 internal email ID to To field

4. Click Send and see the error message, it's in German language, this is expected.

5. Don’t click the button to ignore these error messages, keep them. Then change the language of Outlook to French

6. Click Send and see the error message, it's still in German language, it should be in French

 

Here is a screenshot: https://monosnap.com/file/TzGnn2ZtoOKe4VA25oQ2QQ1dgYeIv4

 

This issue should be fixed, and you need to ensure this issue won’t happen on the Desktop version.

 

(5) Add linting to Javascript code

Add an npm command npm run lint, it should follow the Javascript standard style. You need to ensure the code is lint-error free.

Important notes

  • Ensuring programmatic secrets (sensitive information) are not stored along with, or as part of, the source code (e.g. encryption keys, SFA components, MFA components, etc.)

  • At a minimum, verification mechanisms must be employed to ensure common security vulnerabilities, as provided in the 'OWASP Top 10' list, are addressed at the time of development.

  • Feel free to ask any questions in the forum, any assumption without approval won’t be accepted.



Final Submission Guidelines

  • A git patch against the latest commit hash of https://gitlab.com/email-id-limitation/outlook-addin/tree/master, please mention the target commit hash of your git patch in a separate txt file. Double-check your git patch works after you submitted, otherwise your submission might be disqualified.
  • A detailed deployment guide about how to build and deploy your Desktop Add-in, please update the existing documentation, and add a new section in the existing documentation.

  • A detailed verification document, please update the existing documentation, and add a new section for the Desktop version add-in.

  • A short video to demonstrate your Outlook Desktop Add-in and verify it meets all the requirements. Please include the link in the docs/Verification.md.

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30112025