CRM 2011, service calendar delayed refresh - calendar

In CRM 2011, if I create a new service and assign resources to it, then I change the resource on the service and refresh, I still see the old version of the service calendar.
In short - it does not get updated immediately.
Is this a general problem with the CRM 2011 service calendar or something specific to our organization?

What sort of time lag are you experiencing? Does it get refreshed at all?
From memory, I think the refresh is handled by the Async service. You should check that that the service is started and running. If it is running, you should check if the load on your server suggests that the Async service is too busy (e.g. do you have lots of workflows running?).

Related

How to dispose existing services instances and inject new service instances in AngularJS?

I'm working on an AngularJS 1.6 web application.
There are a number of AngularJS services in the web application. I'm beginning to implement features that use the services to persist state between views.
However, this is becoming problematic when the user logs off and another user logs on. When the new user logs on, the services persist state from the previously user. I know that I can theoretically write code to put the application in a specific state when a user logs in, but it seems to me like it would be easier to simply dispose the stateful services and instantiate new ones when a new user logs on.
Is there an expedient way to do this?
The expedient way to do this would be when a user logs out, do a hard refresh and send them to the login page. This should wipe data that is stored in memory across the whole application.
If you dont want to perform a hard refresh, you're just going to have to clear out the data manually for each service, which depending on the amount, could be a fair bit of work and most definitely not expedient.

Integrating notifications/messages to the client in an AngularJS + ASP.NET Web API app

I'm creating a SPA application with AngularJS at the client side and ASP.NET Web API as backend. My database is SQL Server 2012. There will be users which have a favourite sports team and a simple icon in the UI displaying the number of new articles/news/comments added or whatever connected to their favourite teams.
What I'd like to achieve is the following: Whenever a record about their team is inserted (record with TeamID column value for example equal to the user's favourite team ID), that notifications count icon should be updated immediately (just like Facebook's notifications - it's updated when a friend has posted on your wall or has tagged you and so on). How can I best achieve this?
What I'm thinking of for now is just setting an interval function in AngularJS to check every 30 seconds, let's say, if there are new records in the database making a request to a Web API controller. Of course this suggests a lot of checking for when the user is logging out - when was the last check, what will be the date to check against next time he/she logs in and so on.
You can use signalR for this. It's a framework for real time communication. Check out this to get if you want to get started. It can easily be used together with angularJS.
What you are looking for is push
Sadly i never used it so i don't know much about it, but i think you should use technologies like pusher

AngularJS + Socket.IO + Authentication

I am curious how others are solving the following problem...
I have an angular application that requires user authentication. The user must log in to the system to make requests. The user must also be authorized to create a socket.io connection.
When the application first starts up I must determine if the user is already authorized. I was planning on looking in sessionStorage for a user object/token. Does that make sense? And if the user is not authorized, the application will make a request to get the current user. If/When that fails, a 401 error is returned and angular intercepts/prompts for a username/password.
Given that there are two different code paths for authentication (check sesssionStorage vs make a request and wait for the response) how do you trigger the requests for all the other information that is required for the application? Do you emit/listen to a LOGIN event that gets broadcast in both scenarios?
My plan was to wrap the socket.io connection attempt and the ".on(...)" calls inside of the LOGIN event, does that make sense?
And if you want to listen to socket.io events or grab information from the server in a controller that is loaded after the LOGIN event has fired, how do you trigger the data from being retrieved from the server?
Sorry for the long winded questions, but I've hit a road block and I'm wondering how others are managing all the authentication and different pieces of information that is required to get from the server.
Ok, I guess let's go in order of question asked.
Does it make sense to use sessionStorage to hold user auth info?
Yes. You will need to decide between local/session Storage depending on how you want it to work. We decided we wanted the session to still be active for the time period that the backend recognizes, so even if the user closes the browser and reopens it, they will be logged in, and so we opted for localStorage instead of sessionStorage.
How do you trigger the requests for all the other information that is required for the application? Do you emit/listen to a LOGIN event that gets broadcast in both scenarios?
After login, we redirect the user to the "landing" page (route). All of our route/state changes wait on a resolve function which is doing the session auth. We only store the session id in localStorage. After the successful state change, the controllers that go with the newly loaded views start requesting data from our services. All of our controllers are designed to load data on init. So no, we do not use events. It feels like events should be used only as a last resort - and that is also the impression I get from core Angular devs since I get chastised for event usage in pull requests :)
My plan was to wrap the socket.io connection attempt and the ".on(...)" calls inside of the LOGIN event, does that make sense?
Maybe. I am not using socket.io outright, but instead have been experimenting with atmosphere (mainly because we had a java backend requirement). I do initiate the connection in the login success handler. But the general atmosphere event handling I have put into an application-level controller that is on <body>.
And if you want to listen to socket.io events or grab information from the server in a controller that is loaded after the LOGIN event has fired, how do you trigger the data from being retrieved from the server?
I could imagine (again using an app-level controller, or a service, or in my case, likely both) a function that returns the socket.io connection. A controller that has come into being could grab the socket.io stuff on init, and setup the listeners for the events that it is interested in.
My advice is to get all of your session and auth stuff worked out first, especially with regard to how you are going to do routing. Once all of it is working to your satisfaction, then add the socket.io stuff in. I realize that this might not be possible in all cases because perhaps you need something from the socket.io connection that is critical to your app even at an early stage.

exchange web services with calendar appointments

I'm trying to use exchange web services impersonation to add appointments into calendars. I am using Exchange Web Service Manager API and it worked fine when I tested with one account. Since my application will have to do this operation with about 20 000 accounts I am wondering what is the most efficient way to do it? (if it's possible)
Thanks in advance.
Only option you have is to call CreateAppointment in loop. Each iteration has to have the appropriate user impersonation before creating the appointment using Appointment class
Check this URL for more details: http://msdn.microsoft.com/en-us/library/dd633661%28v=exchg.80%29.aspx

How do I create an Outlook calendar subscription from my web/app server?

I have a website that is a calendar with all the basic features (ASP.NET MVC and SQL Server). People can enter events, view others events, etc. One person asked me if there was a way they can see these events in their Outlook calendar - as a second calendar.
I have all of the data on the server. Is there a recommended way to have Outlook point to my web server or DB for a calendar? I see there are ways to generate iCal files from C#.
If so, how would this data stay in sync as new events are created, deleted, etc? A one time dump would be ok but the concern would be that the data would get stale. Is there a solution that would keep the reference dynamic to keep them in sync. (it would only need to be a one way transfer, i don't expect the need to create or delete from Outlook, so outlook is just read only)
I think you can create iCalendar file,then publish it ,so let clients subscribe your internet calendar because internet calendar subscription is periodically synchronized with a calendar that is saved on a web server,and any updates to the internet calendar are downloaded automatically into MS Outlook.
You can use DDay.Ical library for creating (.ics) files using C#.
assuming your question is about how to keep the client and server side synched, and since you only mention outlook as client, there is a custom way to control the update frequency: microsoft has a custom calendar property: X-PUBLISHED-TTL (see microsoft msdn calendar)
2.1.3.1.1.15 Property: X-PUBLISHED-TTL
Brief Description: Specifies a suggested iCalendar file download frequency for clients and servers with sync capabilities.
however note that this property being custom will be ignored by other calendars
You could try to keep track of the SEQUENCE of updates to each calendar entry in your database, and add a trigger on your table of calendar events so that it would automatically send event updates when something changes. Each update would have a higher SEQUENCE property than the updates that came before it, but the UID (the event's unique identifier) would remain the same.
For this to work, though, you'd need to be able to send iCalendar events from within your SQL Server, which can be possible using the following CLR project:
github.com/EitanBlumin/sql-clr-ics

Resources