Implementing MS Exchange Server service provider


I work as a backend developer in the application development department of the Czech Statistical Office. We use Survey Solutions for data collecting in our organization and we are very satisfied with it. However, we would like to use our MS Cloud Exchange Server for sending email notifications. But Survey Solutions supports Amazon and SendGrid service providers only. I have reviewed your code and I think adding another adapter for MS Exchange server might not be that complicated. Do you think we could somehow contribute this addition to your product? So that it becomes part of it. I suppose it would require occasional communication with your development team to ensure the result meets your standards.

Thank you in advance for your consideration.

Hello @vlastislavnovak and thank you for your inquiry and stepping forward with this initiative.

This feature is overall interesting, and there were posts previously mentioning lack of options for sending messages from Survey Solutions in the past, e.g. of the SMTP sending here:

The best way to proceed would probably be to move in small steps over this plan:

  1. Open a feature request ticket in GitHub, describe what functionality is missing currently (you can always do that regardless whether you actually plan to implement it yourself). In this process it may be useful to study other/similar existing tickets, for example, is this one close enough?
    Notifications sending using SMTP server · Issue #3008 · surveysolutions/surveysolutions · GitHub

  2. Add a strategy for solving this ticket. Ideally at the level of an overview cover as much as possible on the topics of:

  • would implementation require additional dependencies?
  • Are they free? how are they licensed?
  • Will there be a change in requirements? (version of OS, .Net, other frameworks requirements?)
  • Will the implementation be largely additive, or involve modifications of existing code?
  • Some details about what the implementation will result in (is it vanilla SMTP? some Exchange-specific version of the sending protocol? a generalization that covers both? etc).
  • Any other relevant details that are important for consideration and don’t require extensive research/experimentation investment from your side.

Mind that there may be some alternatives or trade-offs and, correspondingly, discussions on the best course of action already at this stage. This is normally talked over in our internal team meetings, but here will be useful in the ticket.

  1. At the same time we may need to align this with other developments, or even see if it is easier for us to implement the described strategy in code.

We can’t promise handholding in the process of implementation, but if I am reading your message correctly, you don’t anticipate that. Inevitably, however, the code will need to be verified by our gatekeeper to make sure it doesn’t introduce a vulnerability or any other risk. Correspondingly there may be a motivated request for a revision.

  1. It is also a good idea to be aware of the license posted in the Survey Solutions repository, and in particular 2-iii “Rights in Contributions”, and other relevant sections.

  2. After reading and agreeing on the strategy in principle, the implementation may start. And if and when the pull-request is accepted, the contributed code will become a part of the next scheduled release.

  3. There may also be a need to change documentation (more so for new features than for bug fixes, of course) to accurately reflect the new/modified functionality. If you can provide input in that (non-obvious usages, details on configuration, envisioned typical use case scenarios, etc), that is very welcomed.

Hope this helps, and do let me know if something needs to be clarified.

Hello @sergiy, we have decided that issue you mentioned (Notifications sending using SMTP server · Issue #3008 · surveysolutions/surveysolutions · GitHub) sufficiently meets our requirements. Do you have any idea when the feature might be implemented? Eventually, how could we help with its implementation?