We want to update an envelope property to signify It has been downloaded by our application at least once before. What is the best practice for that? I tried to use a custom field for that purpose but since custom fields can't be updated once the envelopes are completed is not a feasible option, is there a way to add a custom status to the envelopes?
Another option is to store the last date we downloaded envelopes and start downloading from that date the next time, but it's not ideal.
Thank you for reaching out.
When do you need to download the document exactly? I presume you only want to download the documents when the envelope is complete (and you're looking to set a flag somewhere to indicate that documents are downloaded).
In that case, I would suggest you look into DocuSign connect (https://developers.docusign.com/platform/webhooks/connect/)
When the completed event comes in, you can go ahead and download the documents. You don't need to set a flag anywhere as the event is fired only once when the envelope is complete.
If flagging the download is a strict requirement for some reason, then you can look into setting up DocuSign Connect with a queueing system such as Azure service bus or other cloud provider equivalents ( https://github.com/docusign/connect-node-listener-azure). In this case, if the queue pointer is pointing to the next completion event where documents need to be download. Anything prior is already downloaded.
Related
I am currently opening xAPI content in our own LMS. We do not use a LRS but store statements in our own database. This will change soon as we want to build our own LRS.
When opening content, I build a string comprising the content, endpoint auth token and actor.
This will always open the content at the beginning.
If I connect to a LRS, the content is opened at the last bookmarked slide, and shows the percentage of progression.
On looking at calls made in Fiddler I can see 3 main calls being made to the LRS where the state_Id passed in is suspend_data, cumulative_time or bookmark.
Bookmark returns the Id of the last slide, and suspend data returns a load of numbers in json format.
My issue is that I can easily get the last slide Id from my database, but I cannot get the percentage or set the completed items in the package as complete (with the tick). I'm guessing the returned values from suspend_data may have something to do with setting these.
Can anyone advise on what I should be doing to open the content properly at it's bookmark?
The content itself would be in charge of opening itself to the right place based on the returned values from the queries. The content is using the State API document resources to capture those values, see https://xapi.com/blog/deep-dive-state-activity/, and then to read them back at launch so that it can set the correct state for the learner. This will also be specific to the type of content that is being run, in this case likely from a major authoring tool which has determined how it wants to store those values. Content from other authoring tools will not necessarily use those same methods. xAPI does not provide for any specifics around these details, it only defines what the LRS must support, so you will be best off implementing the LRS endpoints in the way they were intended or you'll be customizing for every kind of content you have. Also, you likely should be providing more information to the content at launch time, for instance a base activity id and a registration value.
https://xapi.com/building-a-learning-record-store/ may be a good resource to review before creating an LRS.
I am trying to make a small library that uses service bus API client.
I followed this tutorial for achieving this goal and I manage to do almost every thing I needed except one thing, add AutoDeleteOnIdle property for newly created subscriptions.
Thing is, on the tutorial, the author uses xml body to send to the API and it works well, but I want to add inside the xlm SubscriptionDescription the property AutoDeleteOnIdle, but I keep receiving bad request with the response «The specified resource description is invalid».
I attempted to search on the net about this xml structure and how to find it.. But I can't find any doc!! Even if I check the shema specified in the xml, I get redirected to an unexisting page (for http://schemas.microsoft.com/netservices/2010/10/servicebus/connect).
I am using Microsoft.Azure.ServiceBus v.3.4.0 NuGet, visual studio 2017.
This is the subscription description I've been trying to add AutoDeleteOnIdle property.
Encoding.UTF8.GetBytes("<entry xmlns='http://www.w3.org/2005/Atom'><content type='application/xml'>"
+ "<SubscriptionDescription xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.microsoft.com/netservices/2010/10/servicebus/connect\">"
+ "</SubscriptionDescription></content></entry>");
The code is on this page: https://code.msdn.microsoft.com/Service-Bus-HTTP-client-fe7da74a
Thank you for your help,
Phil
I found out what was the problem, I didn't know that I needed to type a special format XSD dates for xml body.
I was adding <AutoDeleteOnIdle>00:10:00</AutoDeleteOnIdle> because the doc says that they need a ISO format, but it was actually:
<AutoDeleteOnIdle>PT10M</AutoDeleteOnIdle> I should have sent.
I'd like to perform some operation in mscrm plugin, if a new record is created automatically by CRM client for Outlook. Eg. it can be a contact or an incident created from an email.
Is there way to check this condition?
We have contact's first name and last name filled oppositely and incident without the caseorigincode field filled, when created from an email in Outlook. Maybe there is a better workarround to solve these two issues. But still I am wondering about the original question.
According to the sources available online, there is really no reliable way to solve this.
There was property CallerOrigin until CRM 4. Then it got deprecated, but continued working for some time, as state in another answer (https://stackoverflow.com/a/14812885/1474519). But it doesn’t seem to be working anymore in CRM 2015.
I found couple advices with IsExecutingOffline and IsOfflinePlayback, but it is really not solving the problem.
I also found a tip to check this code HttpContext.Current.Request.Url.ToString();. This doesn’t work for me.
I found the most complete information here: http://blog.simpletrees.com/2012/03/executioncontextcallerorigin-in.html
According to this article, I am sending a value in a hidden field from my form (or thru API, from plugin, from workflow). As this field is not set when a record is created from outlook, I can recognize the record being created from Outlook. There is of course problem, this field might not be set when importing records or when using mobile app. But I don’t see a better way to go.
Therefore, I started request on Microsoft Connect to add this functionality. You can vote for it here: https://connect.microsoft.com/dynamicssuggestions/feedback/details/1776771
You could add an attribute to the contact and incident to save the origin of the creation.
Then you add a plugin that listens to the Create event of the entities and register it only for client side (offline) execution.
Or you check the PluginExecutionContext for the IsExecutingOffline and IsOfflinePlayback properties to check if the creation was initiated from outlook and store the appropriate value.
https://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.ipluginexecutioncontext_members.aspx
I am looking for a solution to the following problem:
My manager wants to automatically send a second message when he sends an email to X and there is no response in two days. If there is no further response in 2 more days, send another message.
Before I start building anything, I wonder if there is already a product/solution that does that? Can anybody recommend an already existing tool?
We use MS Exchange and he uses Outlook 2007.
Auto Follow Up is a tool I've used in the past for this specific purpose. Also, always check www.slipstick.com for listings of Outlook/Exchange add-ins - they seem to be the best source (disclaimer: I have no affiliation with that site or any of its add-ins)
It's not an existing solution, but in case you don't get any answers:
You can use Exchange Web Services to do this: pointing it at his Sent Items folder. So this is basically what you would do:
Use SyncFolderItems against his Sent Items, say every 1 hour. The first time you do this use null as the SyncState, thereafter use the last SyncState the server sent you.
Write them to a SQL table: { ItemId NVARCHAR(MAX), ChangeKey NVARCHAR(MAX), MessageID NVARCHAR(MAX), Sent DATETIME }. MessageID would be the Message-ID header from the message.
Run a query (say once a day) that selects the rows where the Sent value is more than 2 days ago.
Use GetItem to retrieve the original mail and resend (first clearing/deleting Message-ID) it using SendItem.
Delete the selected rows.
These items will land up in the Sent Items folder and will be picked up by your application (as they are actually new mails); and re-processed in 2 days.
Use SyncFolderItems against his Inbox, again maybe every hour (maybe immediately after the first operation against Sent Items). Keep a unique SyncState for this operation.
Grab the In-Reply-To header. Delete any rows with a maching MessageID.
Grab the References header; and split it into a list. Delete any rows with a matching MessageID.
Would this solve your problem:
http://www.followupthen.com/
Perhaps not exactly what you want and it isn't integrated into Outlook.
I don't think you will find exactly what you want. This is functionality which belongs to a CRM, not to email software.
Having said that, the Getting Things Done Outlook Add-In will get you in that direction. It won't automatically send a follow up mail, but it can take care of a notification so you send it yourself. (but this plugin is not free - $75 - you have to decide yourself if that's worth it)
With the GTD add-in you can send a mail, and select the option "Send and Action". After pressing send mail, you can select the action "#Waiting For", and press ok. Now it will create an outlook task, with the subject and contents of the email you sent automatically filled. You can set all the task properties, like end date and notification time.
After two days at the notification time, you get a (default) outlook popup, where you can open the task. With one click you can open the corresponding email and use reply or forward to send your followup. You can create a new task or modify the existing task for the next followup.
If you receive a reply in the mean time, and open the mail, you can use the "related task" button to find the corresponding task to mark it as complete. It also adds buttons like defer and delegate to your mail.
There is a 30-day trial. I am not connected to netcentrics, but I have bought and use this plugin.
Have you looked into automating Outlook using Visual Basic for Applications? If you aren't familiar with VBA, or if the thought of writing VBA gives you nightmares (I've had a few), then you might find some example VBA code on the web that accomplishes something similar to what you are trying to do, and then you could just tweak it. I know you said that you wanted an existing tool, but I thought I would throw this out there as a sort of last resort. It's not ideal, but I'm pretty sure it would solve your problem.
What I'm trying to do is create an asp.net page that runs a random number generator, displays the random number, and writes it to a text file. That part is no worries, the issues is I want the number generation and file writing to continue while the page is live - ie if no one is actually viewing the page, it's just sitting on the server, the process should continue.
Is this possible?
EDIT: Foolishly overlooked using a webservice to generate the number - I've knocked up a basic service that generates a number and writes it to a text file. Can't work out how to schedule/automate it - could I set up a timer, with a given interval, then use timer_Tick?
Scheduling is new to me, any advice is appreciated.
You can use Window Service to work in backgroud, please see below link:
http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx
http://www.codeguru.com/columns/dotnet/article.php/c6919
Have you considered the use of scheduled tasks? So, rather than the page calling the updates, the scheduled task does that, and the page viewer is just seeing "latest results" at any specific point. Of course, that may not be feasible, but by the sounds of it, you're after a constantly working service/task with an ability to view the latest number, a little like an RSA token which shows new numebrs even if you dont need one.
Not sure if this is what you want. But if you are interested in using a scheduler for this task, you can try Quartz.Net. It is a very popular, full-featured and open source sheduling system.
Please describe what you are trying to achieve. There might be a better way than writing random numbers to a file.
I would not use a service (web or winservice) for this. There is no benefit to use a webservice since it will just do exactly the same as your web would do. A windows service will continue to run independent of your web, and you need to create some kind of IPC and to keep track of several timers/files.
The easiest way to do this is to use a System.Threading.Timer and keep it in a session variable. Also note that you need to kill it when the user session expires.
You should also be aware of that one timer will be created per user that uses the page.
Update
Create a Windows Service application and add a System.Threading.Timer to it. Write to the file in the timer callback.
Then open the textfile in your web app (using FileShare.ReadWrite + FileMode.Read)