Developing a replacement for Sharepoint “Alert Me”-function - sharepoint

I'm pretty new to sharepoint-development, so I thought I'd check real quick with the gurus in here.
I've been given the task of building a replacement for the built-in Alert Me feature. The main reason for this is to allow for alerting members of a role with a forms authenticated sharepoint.
This is where you guys come in. I know you can build an immediate Alert Me function by creating list item event receivers.
However, if I wanted to create the summary-feature (daily/weekly notifications) - what would be the best way to go about this?
With very limited knowledge, all I could think of was to create a Windows Service, which checks daily for changes to the lists, and sends notifications accordingly, in one summarized email.
Would I be wrong to assume that this is, if not the best/only way to do it, at least one way of doing it?
And could I use the SPChangeCollection to accumulate the changes?
thanks in advance :)

Don't create windows service: you have SharePoint job for scheduled tasks.
However, I would reconsider the need. SharePoint alerts already offer immediate/daily/weekly alerts. thos member of the role (group?) can perfectly choose the "Alert me" individually. i personnaly would consider otherwise as spam (how do you unsubscribe, then?)

Related

Azure alert monitor condition always stay the same

I have implemented alerting on my infrastructure. The problem is that the monitor condidition never changes to resolve. Anyone with the same problem?
Kind regards
Summarize from the comments for others' reference:
As stackoverflowusrone mentioned, different types of alerts resolve differently and also provide a sample.
Here I provide some more information about it, we can know the alert's logic by this tutorial
By the way, if you want azure develop team add some feature, you can raise a feedback ticket on this page.

Alternative to SharePoint Remote Event Receiver

I have been investigating a problem for some time in which a Remote Event Receiver I had written for an Azure hosted app was sporadically not taking effect (less than 1% of the time). I put in some serious logging but couldn't identify the issue, as far as I could tell the remote receiver wasn't being called by some actions that should have triggered it. I eventually escalated the problem to Microsoft and after some time their response was effectively that they can't guarantee the event receiver will trigger with 100% reliability.
So what I'm looking for is any suggestions on ways to improve reliability of a RER or alternatives that can be used to trigger an event each time an item is added or updated to a list in SharePoint.
Whoever first guided you toward using Remote Event Receivers should have indicated that they're not guaranteed to fire, so they're only suited for non-critical notifications and user interface improvements (like refreshing a view when an item is added to a list).
To truly guarantee the execution of some action when items are added or updated in a list, your two best options are workflows and server-side event receivers.
Since it sounds like your environment is cloud-hosted, you are likely restricted to using workflows (event receivers require deployment of custom farm solutions).
For reference on how to create a workflow, see Microsoft's documentation entitled "Creating a workflow by using SharePoint Designer 2013 and the SharePoint 2013 Workflow platform".

What's the best way to create a Gmail feature?

I want to create a "feature" for Gmail which keeps track of emails which did not get a reply. It shall check all sent emails for replies on a daily basis and list the ones which did not get a reply in a special folder/ add a tag so I can easily check them.
I have found a script out there already but it's not easy enough to add in a self serving way to unexperienced users' accounts (you have to download it and "install" it). Additionally it crashes frequently-it seems the amount of emails it may check is limited by Gmail.
I am not planning to develop it myself but am curious on you opinion of what's the best way to develop it (e.g. programming language) so I can look for the right type of developer.
Best,
Mar
It is possible to do what you describe using Google Apps Script.
Essentially, you can write a script that activates on a time-based trigger, checks your inbox using GmailApp, and locates messages and adds new labels.
Note that you would have to ensure that you don't exceed the quota limitations; there are quotas for the number of possible Gmail actions taken and maximum script execution time. If you run into problems with these quotas, try breaking the problem into smaller pieces by processing smaller batches of mails with each execution.
Alternatively, you can write an application that manipulates your inbox using the Gmail API and one of the client libraries.

Need technology recommendation/suggestion

My company is in need of a task management system to handle scenarios as simple as "Purchase a computer for X" to "Relocate a person to another country". The simple scenarios are a single tasks handled by a single person, whereas bigger tasks can be broken down into multiple sub tasks delegated to multiple people during the workflow. Additionally the clients and vendors need their own views into the process.
We are evaluating different solutions from a custom application built on Workflow Foundation to SharePoint to BPM products like Metastorm and BPM.Net.
Here's my current understanding of these solutions:
Workflow Foundation - Low level workflow designer and/or library with no host environment. It seems we would have to reinvent some wheels if we went this route such as fault tolerance and document management. Some of the answers on stack also cause concerns such as the lack of versioning and a complete overhaul for VS10/.NET 4.0
SharePoint - Built for document management and collaboration but trying to create advanced workflows and tasking on top of that seems like a hack. Plus all workflows have to be tied to either documents or lists. I cant envision how a list (or list of lists) can address this issue.
BPM products - Mature workflow engine at a seemingly high price. BPM.Net is the only solution for which I could find some level of technical detail but im still not sure how different developing against this product would be from developing against Workflow Foundation.
Are there any workflow engines dedicated to solving all the workflow pains that can be easily deployed with their own hosting environment and initiated through a webservice?
Are there any other options I am missing?
Thanks in advance.
****Edit**
To answer the questions below the workflow needs are pretty light. Basic routing of tasks to approvers and subcontractors.
Whats driving us too look deeper than PM software is the nature of the business not the need for advanced workflow. We are basically in the business of procuring goods and services through subcontractors for our clients which can also include full employee relocation. The interface of the package should reflect this by being customer branded as well as intuitive for this line of business.
Basically if im moving my family to the other side of the world Im not sure i'd want to interface with Jira or Sharepoint or any other PM software to facilitate this.
If you are on Microsoft stack I would definitely recommend SharePoint for this scenario. As it seems to be very simple you can go with Windows SharePoint Services edition because it is free and it has everything you need.
You are right when you say that ShartePoint workflow are bit limited. IMHO the best way to overcome that limitation is to purchase Nintex workflow to create your workflows. It is cost effective solution that can help you design workflows you need.
You can find workflow samples inside the product (as workflow templates) and on the web site.
Nothing you mentioned has much to do with workflow. You're just doing project management. If that's the case, a simple bug tracker (like FogBugz! ;) would work - but if you're going to show it externally, it may not be the most professional presentation.
The closest off the shelf solution I can think of would be Project Server - though, depending on the number of projects and project managers, the desktop Project with a sync to a webserver for client views may be enough.
If that's overkill - because your projects don't require a lot of resource scheduling, Gantt charts, or other PM artifacts - you can take something like Trac and replace "bug" with "task". ;) (Seriously though, that'd probably get you 90% of the way there.....)
Have you looked at RT? I believe it can handle all your requirements, including that it's designed to let customers interact with the system by email, rather than having to log into the website. If you've emailed IT support desks then you've probably interacted with it without knowing... You can also completely customise the web interface and allow customer access.
Can't vouch for the quality as I haven't used it, but I did watch an online-demo video of Intalio, which has BPM and workflow capabilities.
We use Basecamp to control this sort of "task management" stuff. I'm not sure if it fits your needs totally, as it's a little light on the document management side, but it has a web service (REST) API, customer / vendor facing components, and basic interaction / chat capabilities.
The best part about it is that the API is simple enough where you can offload a lot of the "management" for it to admin support personnel, like assistants and interns, by providing custom scripts. If you've got people who aren't programmers using it you'll probably have better luck with it than even something like Trac or FogBugz.
I have/am going through a similar process. We wanted a lightweight workflow for internal use by our sales team. Most of the third party apps we looked at ,K2 and Skelta BPM.Net in particular, looked way over the top for what we needed. I'm now 2 months into working with Windows Workflow Foundation 3.0 and I have to say it isn't the most pleasant coding experience I've had.
If your workflows will truely be simple then it is pretty easy to build a workflow and hook it up to some web pages for the UI. But if you need to be able to change it on the fly, or do versioning (ie the user says we want another step added, then its a whole lot of hacking to get it to work - and it only works if you limit your workflow to being really simple), then you are in for a fair bit of work. And forget about it if you use an Oracle database.
The next version of windows workflow will have it's own runtime environment, code name dublin, with will provide a WCF interface into the workflows.
If your timeframe allows you could use that.
For information on Dublin and the next version of WF see:
http://www.microsoft.com/net/dublin.aspx
My vote is for FogBugz. Unless I am missing something in your requirements, why would you want to reinvent the wheel by using a code based workflow solution where you have to code up the flows yourself when you can use a perfectly good project dependency solution like FB or even MS Project Server - which lets you create nice dependencies for resources and people.
Check FileNet
FileNet is expensive but makes a good job with content and process management, but I guess is not what you are looking for.
We use Captaris Workflow, it is pretty good but it may be expensive for your needs.

Dated reminders in sharepoint calendars

I have a departmental maintenance that needs to be done roughly every 3 months. The maintenance itself can't be automated (it involves physically swapping a primary and spare piece of networking hardware to verify the spare is still working correctly).
I could put this as a recurring event in Outlook and give it a two week reminder window, but I don't want it to be tied to an individual's account (if I or one of my coworkers leaves the company, I still want the reminder to go to the department).
We're working on implementing Sharepoint and my group has a maintenance calendar, which seems like a lovely place to put this. However, there don't seem to be dated notifications for the events. You can set up notifications if the event changes, and you can subscribe to the calendar and set up a notification via Outlook, but that notification is still a per-user notification.
At this point I'm probably just going to write a cronjob on a linux server that emails a reminder, but I thought I'd ask if there's a way to do it using all these expensive collab tools we're putting in place.
So, any idea how to get notifications of a dated event that is not tied to individual users? I also welcome being told that my entire take on the problem is false as long as it involves some good alternatives. Thanks!
Expanding on Andy's answer (http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx) if you just put code to send an email in the Execute method of the timer job this doesn't give you anything more than cron.
What you could do is to write code to iterate through the Calendar (actually an Event List) finding any events due soon and sending email to whomever is in the Assigned To field. This could then be called from the Timer Jobs Execute method or using a normal scheduled task. This will be easier to administer changes than cron and could be used for other types of tasks.
A link to get you started - Iterate through Items in a List
Another option would be to use Workflow to send out emails from the calendar
EDIT - Since SharePoint SP2 this no longer works as is as workflows can no longer start themselves (loop) - explanation and workaround
This CodeProject article shows how to develop a feature to send scheduled reminders
Yet another option would be to use one of the 3rd party tools that do this (disclaimer - I work for the first company)
Pentalogic - SharePoint Reminder
Bamboo - Alert Plus
BoostSolutions - Alert Reminder Boost
Finally - whichever method you choose (custom code/workflow/3rd party) you will likely run into trouble with recurring events as SharePoint doesn't provide a way to get an 'expanded' list of all occurrences.
The best way to do this would be using a Timer Job - see Andrew Connell's blog here: http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx

Resources