<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>IanC</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/ianragusa/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/ianragusa/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:02:15 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>SharePoint Virtualization Support and Third Party Products</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/sharepoint-virtualization-support-and-third-party-products</link>
      <pubDate>Mon, 10 Nov 2014 08:34:56 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/11/10/sharepoint-virtualization-support-and-third-party-products/</guid>
      <description><![CDATA[I've seen this question come up a few times and I decided to do a little digging of my own to help...]]></description>
      <content:encoded><![CDATA[<p>I've seen this question come up a few times and I decided to do a little digging of my own to help resolve the answers once and for all.&nbsp; It's important to note that whatever virtualization product you use to host your operating systems and their respective applications, that virtualization product is providing an answer for those of us that do not have the hardware configurations necessary for a complete physical implementation.&nbsp;&nbsp;We are essentially tricking the operating systems and their applications into thinking they exist on physical machines.&nbsp; With that said we have to keep in mind that if our installation of Windows Server 2012 R2 (for example) was installed on a physical server with all the hardware that typically comes with said server we would expect that the installation would run smoothly.&nbsp; Now what if we installed a new piece of hardware into that server and our Windows software did not recognize it or worse yet it installed what it thought were the correct drivers but the device did not function as expected?</p>
<p>Would you call Microsoft to find out why the device wasn't working or would you call the vendor of the hardware piece you just installed?&nbsp; You'd call the hardware vendor of course since it is up to them to provide the necessary testing needed to make sure it worked with your Microsoft product and make the correct drivers and software available for you to install.&nbsp; Sound about right so far? Well this same scenario can be applied to your virtual environments.&nbsp; All the virtual hardware is being provided by the vendor of the virtual software.&nbsp; Microsoft's operating systems and applications, for the most part, are not cognizant of the existence of the virtual devices and treat them as if they are the real deal.&nbsp; In some cases where the software or OS is aware of the virtual environment it will still treat it as physical.</p>
<p>So what does this have to do with my question regarding how SharePoint is supported in a virtual environment?&nbsp; Well if you've seen the TechNet article on best practices you'll see part of the answer to that question.&nbsp;See <a href="https://support.microsoft.com/kb/2764086">https://support.microsoft.com/kb/2764086</a> as well as <a href="https://technet.microsoft.com/en-US/library/ff621103(v=office.15).aspx#ConfigMem">https://technet.microsoft.com/en-US/library/ff621103(v=office.15).aspx#ConfigMem</a></p>
<p>In that article it addresses how to setup the different virtual hardware devices such as your NIC, CPU, hard disk space and even memory.&nbsp;&nbsp; For the most part it seems pretty standard until you get to features unique to&nbsp;the virtual software itself.&nbsp; Which leads me to Dynamic Memory a feature you'll find in Hyper-V as well as VMware.&nbsp; Even though both Hyper-V and VMware implement the use of Dynamic Memory in different ways neither of them is supported for SharePoint installations.&nbsp;&nbsp;The reason is that this implementation of dynamic memory does not work with every SharePoint feature. For example, Distributed Cache and Search do not resize their caches when the allocated memory for a virtual machine is dynamically changed. This can cause performance degradation, especially when assigned memory is reduced.&nbsp;</p>
<p>The official documentation on using a Microsoft product within a virtualized environment is this:<a href="https://www.windowsservercatalog.com/svvp.aspx?svvppage=svvpwizard.htm">https://www.windowsservercatalog.com/svvp.aspx?svvppage=svvpwizard.htm</a>&nbsp;</p>
<p><em>There are no industry standards to follow in implementing such features, and since 'by design' the operating system [whether that be Windows Server or some other OS] or application are not cognizant of such virtualization product functionality, <span style="background-color: #ffff00;">there is no practical method of testing these virtualization product features using Microsoft-developed tests and tools</span>. The SVVP program does not test these features or functions, and the virtualization product vendor is solely responsible for testing and supporting such features. However, unless otherwise stated in articles or documents for Windows Server operating systems or for Microsoft Server-focused applications, Microsoft does not preclude their use by customers. If a customer running a supported version of Windows Server on a validated virtualization solution experiences issues after using such third party virtualization features (such as live migration) that operate independently of Microsoft products, then the customer should contact the virtualization&nbsp; vendor for assistance in resolving the issue.</em>&nbsp;</p>
<p>Long story short?&nbsp; Microsoft does not support a SharePoint 2013 installation when any form of dynamic memory is enabled within the virtual product.&nbsp;&nbsp; Read the Microsoft documentation on the topic found here and make note of page 17.&nbsp; <a title="https://download.microsoft.com/download/Best_Practices_for_Virtualizing_and_Managing_SharePoint_2013.pdf" href="https://download.microsoft.com/download/0/0/1/001ADCCC-A45B-47E3-8DA4-ED51E3208021/Best_Practices_for_Virtualizing_and_Managing_SharePoint_2013.pdf">&nbsp;https://download.microsoft.com/download/0/0/1/001ADCCC-A45B-47E3-8DA4-ED51E3208021/Best_Practices_for_Virtualizing_and_Managing_SharePoint_2013.pdf</a></p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2013 Custom List displaying duplicate(?) modification entries</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/sharepoint-2013-custom-list-displaying-duplicate-modification-entries</link>
      <pubDate>Fri, 05 Sep 2014 13:38:00 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/09/05/sharepoint-2013-custom-list-displaying-duplicate-modification-entries/</guid>
      <description><![CDATA[This article was written to help explain the behavior seen by some when the "perfect storm" occurs...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: times new roman,times; font-size: small;">This article was written to help explain the behavior seen by some when the "perfect storm" occurs in their SharePoint Custom List or Document Library. What do I mean by the "perfect storm"? In this scenario I'm referring to what occurs when a SharePoint site admin applies the following settings/configuration to either a Custom List site or to a Document Library. If you've experienced this scenario in your own environment or have had to help someone resolve this then you know how difficult it is to even explain when this happens. So I'm going to do my best to outline a real world scenario where this occurred, why it occurred and how best to get around it.</span></p>
<p><span style="font-family: times new roman,times; font-size: small;">As a SharePoint Site administrator you've been given the task of finding a solution for the following request:</span></p>
<p><span style="font-family: times new roman,times; font-size: small;">You've been dubbed the resident SharePoint guru&nbsp;of Contoso University's literature department.&nbsp; Russell Johnson, one of the professors, has asked you to add a new sub site under the site <span style="color: blue; text-decoration: underline;">https://ContosoUniversity.edu/Liter8r/101</span>.&nbsp; Your job is to evaluate Professor Johnson's expectations from the site and&nbsp;provide a solution.</span></p>
<p><span style="font-family: times new roman,times; font-size: small;">The professor and the rest of his team are planning to&nbsp;host a 'Short Stories' competition for their young authors.&nbsp; The students are expected to register on your new SharePoint site,&nbsp;upload a copy of&nbsp;their&nbsp;original short story and then each teacher will&nbsp;critique the students&nbsp;work and elect a winner.</span></p>
<p><span style="font-family: times new roman,times; font-size: small;">After (not so much) deliberation you come up with the following sub site setting for Professor Johnson's upcoming competition:</span></p>
<ul>
<li><span style="font-family: times new roman,times; font-size: small;">First you decide to create a Custom List site under the https://cu/Liter8r/101 master site.</span></li>
<li><span style="font-family: times new roman,times; font-size: small;">Second, you go to the new sites List Settings and you enable versioning on the site in order to keep track of any changes being made to the items throughout the competition. Just the minimum setting to allow a new version each time an item is edited.</span></li>
</ul>
<p style="text-align: justify;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/8054.Blog01_VersioningSettings%20(1).jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/8054.Blog01_5F00_VersioningSettings-_2800_1_2900_.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/8054.Blog01_VersioningSettings%20(1).jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/8054.Blog01_5F00_VersioningSettings-_2800_1_2900_.jpg" alt="" border="0" /></a></p>
<ul>
<li><span style="font-family: times new roman,times; font-size: small;">Then, while you're in the list settings, you add a new column so that all new items added can have their own comments field. You set it up for multiple lines of text and since you have versioning enabled the option to append changes to existing text is available so you add that in there too. </span></li>
</ul>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/0702.Blog01_ColumnSettings.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/0702.Blog01_5F00_ColumnSettings.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/0702.Blog01_ColumnSettings.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/0702.Blog01_5F00_ColumnSettings.jpg" alt="" border="0" /></a></p>
<ul>
<li><span style="font-family: times new roman,times; font-size: small;">Add each of the students from the Literature classes involved to the site permissions so they may create their own Items. </span></li>
<li>
<p>&nbsp;<span style="font-family: times new roman,times; font-size: small;">At this point you explain to the students and teachers involved with the competition how to use the site. </span></p>
<ul>
<li><span style="font-family: times new roman,times; font-size: small;">Student goes to the new SharePoint site and selects +New Item. </span></li>
<li><span style="font-family: times new roman,times; font-size: small;">As part of the new item creation process the student gives it a name that includes the student name and the title of the short story then click OK to create. </span></li>
<li><span style="font-family: times new roman,times; font-size: small;">The student can now click on their new item to open it up and add any comments to the new Multi Text column field that you added to the Custom List sites configuration. </span></li>
<li><span style="font-family: times new roman,times; font-size: small;">From the tools ribbon at the top of the now open item the student can select to edit the item further or attach a file. In this case the student will select to attach a file and they will upload their short story in Word format to the item and click OK. </span></li>
</ul>
<p><span style="font-family: times new roman,times; font-size: small;">As all students continue to follow these steps the professor and his team can open up the newly added items, open the attached Word document, read it and add their own annotations in edit mode. They can choose to add a comment to the item and move on to the next students listed item. </span></p>
<p><span style="font-family: times new roman,times; font-size: small;">Make sense so far? Does it sound like a good solution for this projects requirements? Well this is what actually happens&hellip;.. </span></p>
<p><span style="font-family: times new roman,times; font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Users, both student and teacher in this case, will observe what appears to be duplicate entries in all these items.&nbsp;</span><span style="font-family: times new roman,times; font-size: small;">Trouble is that they aren't duplicates. This behavior is actually by design. It's a normal behavior when both the versioning and append features fulfill their designed roles.&nbsp;</span><span style="font-family: times new roman,times; font-size: small;">When a custom column with the append option is added to the site design any data that is placed into this column will populate BOTH the items field itself as well as one of the metadata fields of the attached document. </span></p>
<p><span style="font-family: times new roman,times; font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Since appending is not tracked like versioning is it will maintain whatever data is in its comment field until it is manually changed during an edit of the item or otherwise removed. So each iteration within the items modification list will appear to be duplicating the comments added by the last user. In fact it is just appending whatever the last update was to the comments field. Add to the confusion by editing the attachment and making changes or modifications of any kind and you'll see what appears to be multiple duplicates. Why? Because the item having been opened for editing now places a new modification entry in the list showing the users name, date and time of enabled edit (appending the latest comment to it&hellip;even if the comment was not made by the current user). It will then add another modification entry to the list of changes whenever the attachment (currently opened for editing) had modifications made to it and the attachment is saved. It doesn't have to be closed at this point for the new modification entry to appear. As long as a change is made and the document is saved EITHER MANUALLY or with AUTOSAVE. So depending on how long the document is open for editing and changes are made and saves of an auto or manual nature are occuring you will see what would otherwise look like duplicate modification entries in the modifications list. Now that was a mouthful! See why I thought it was best to describe a scenario with a complete implementation of this configuration? Try explaining this in two sentences or less to a support engineer and expect to get assistance that actually addresses your problem. </span></p>
<p><span style="font-family: times new roman,times; font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;One other thing to take note of in order to debunk the idea that these are bugged duplicate entries is to look closely at the modification date/time stamps for each entry. If you are trying to test your theory you are likely running through these steps quickly to see if it duplicates. If so&hellip;.then yes it will look like a duplicate because the time it took you to run through the steps was likely within a minute. If you go through each step slowly&hellip;.even waiting a full sixty seconds between steps you will see that each entry in your modifications list is taking place at very different times. Thus&hellip;.<span style="text-decoration: underline;"><em>not duplicated</em></span>&hellip;.but behavior <em>completely natural for the versioning and append features to display under these circumstances. </em></span></p>
<p><span style="font-family: times new roman,times; font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: times new roman,times; font-size: small;">&nbsp;So now what? How do I get around this behavior? In my experience you have a couple options. You can remove the append option from the custom column you created to hold comments. Now you won't get a quick and easy modifications list to reference by simply opening the Custom List item but you can open the item and select Version History from the tools ribbon. This way you can still maintain a list of any changes to the document, including comments, but without the appearance of duplicate entries because the comments will no longer be required as an appended item. You will get a list of strictly changed/modified occurrences, by who and at what date/time.<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5315.Blog1_VersionHistory.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5315.Blog1_5F00_VersionHistory.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5315.Blog1_VersionHistory.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5315.Blog1_5F00_VersionHistory.jpg" alt="" border="0" /></a><br />The other option? You can basically use any of the multiple SharePoint templates that suit this process&hellip;.just don't use versioning AND append to track changes. </span></p>
<p><span style="font-family: times new roman,times; font-size: small;">I hope this proves helpful to some of you out there struggling with this scenario and tricked into thinking it's a bug or that something in your configuration is "broken". It's not broken. Just not a great combination of functions. </span></p>
<p>&nbsp;</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint E-Mail Confirmations and Alerts (under the hood)</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/sharepoint-e-mail-confirmations-and-alerts-under-the-hood</link>
      <pubDate>Tue, 19 Aug 2014 11:26:00 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/08/19/sharepoint-e-mail-confirmations-and-alerts-under-the-hood/</guid>
      <description><![CDATA[After spending way too much time looking for documentation explaining exactly how SharePoint e-mail...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #000000; font-family: helvetica; font-size: small;">After spending way too much time looking for documentation explaining exactly how SharePoint e-mail worked <span style="text-decoration: underline;"><strong>under the hood</strong></span> I decided to bring some of my findings together and associate the many tags I used in hopes that it will save others time.&nbsp; </span></p>
<p><span style="color: #000000; font-family: helvetica; font-size: small;">Now I'm not just talking about how to configure Outgoing or Incoming e-mail in SharePoint.&nbsp; I'm talking about how an email is triggered, generated and then sent to a recipient(s) when someone clicks on (e.g) <em>Follow</em> when visiting a users profile or blog.&nbsp; E-mail alerts is one thing...there are timer jobs and SQL tables and drop folders involved to make e-mail alerts work.&nbsp; The simpler confirmation emails were what was troubling me.&nbsp; After much digging it appeared to be much simpler than I imaged.</span></p>
<p><span style="color: #000000; font-family: helvetica; font-size: small;">First off...a lot of what you will read below was gathered from TechNet articles and other MS resources after much digging.</span></p>
<p><span style="color: #000000; font-family: helvetica; font-size: small;">This TechNet article helped better explain the Alert portion of e-mail generation quite well.&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000; font-family: helvetica; font-size: small;"><a href="https://msdn.microsoft.com/en-us/library/office/hh161512(v=office.14).aspx">https://msdn.microsoft.com/en-us/library/office/hh161512(v=office.14).aspx</a></span></p>
<p>&nbsp;</p>
<p><span style="font-family: helvetica; font-size: small;"><span style="color: #339966; text-decoration: underline;"><strong><span style="font-size: medium;">Confirmation Emails</span></strong></span> </span></p>
<p><span style="font-family: helvetica; font-size: small;">These emails are actually sent by the SharePoint Web Front End server that is serving up the SharePoint page at the time it is generated. These emails are sent under the identity that the IIS worker process is using (w3wp.exe)</span></p>
<p><span style="text-decoration: underline;"><span style="font-family: helvetica;">CONFIRMATION EMAIL PROCESSING</span></span><br /><span style="font-family: helvetica; font-size: small;">When outgoing email is enabled through the Central Admin dashboard the ability to set confirmation emails for web applications becomes available. All that this configuration does is provide the needed properties for generating an .eml file.&nbsp; The process could almost be compared to clicking an email link in a web page and being taken to your mail client where it automatically populates the address of the recipient.&nbsp; Only in this case the contents of the Outgoing Email configuration are used as a reference and then whatever profile you trigger during email generation provides the needed field for the rest of the SMTP packet.&nbsp; Namely the Work email property in your user properties for UPA configuration.&nbsp; As long as the Work email is linked to a valid AD account and the property configured contains an email address then it will send out a packet to whatever SMTP relay you setup <span style="color: #3366ff;">.&nbsp; &lt;- And this is all I really learned about confirmation e-mail generation.&nbsp; I'm sure there are steps I'm missing but this was the&nbsp;gist of it&nbsp;and it helped resolve an ongoing issue for me.</span></span></p>
<p><span style="color: #339966;"><strong><span style="text-decoration: underline;"><span style="font-family: helvetica; font-size: large;">Alert Emails</span></span></strong></span></p>
<p><span style="font-family: helvetica; font-size: small;">Require the existence of a Timer Job &lt;Immediate Alerts&gt; This Timer Job runs under the credentials of an account that needs to be a member of the SharePoint Administrators Group and that it also has access to the Content Database in SQL. When an alert is triggered the email is not immediately sent (as one might expect) but rather is queue for delivery when the Time Job runs (typically every 5 minutes) and is sent under the credentials of the job account</span></p>
<p><span style="text-decoration: underline;"><span style="font-family: helvetica;">ALERT EMAIL GENERATION</span></span><br /><span style="font-family: helvetica; font-size: small;">The following is the procedure for processing alerts:</span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">1. The timer job calls the SharePoint Foundation alert handler every five minutes. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">2. The SharePoint Foundation alert handler scans the SchedSubscriptions table to identify which alerts to process. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">3. The SharePoint Foundation alert handler creates a query object from the information and calls the Execute() method on the SharePoint Server Query object model. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">4. The alerts handler returns the results from the query to the SharePoint Foundation alert handler, which sends an alert with the results to the user.</span></p>
<p><span style="font-family: helvetica; font-size: small;">These scheduled subscriptions will fire and execute the next time the SharePoint Foundation Timer service (owstime.exe) processes the default and custom timer jobs.</span><br /><span style="font-family: helvetica; font-size: small;">This Timer service executes at a predetermined time interval. Timer jobs are the SharePoint-specific way to perform a specific task on a scheduled basis.</span><br /><span style="font-family: helvetica; font-size: small;">Windows SharePoint Services enables support for users to create alerts for other users. The user with these privileges can customize the trigger for an alert, and customize the alert notification. This functionality is exposed in the SharePoint Foundation object model, enabling programmatic manipulation of alerts.</span></p>
<p><span style="font-family: helvetica; font-size: small;">The SharePoint Foundation alert framework has multiple tables for storing information. The alert framework manipulates the following key database tables:</span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">&middot; EventCache</span><br /><span style="font-family: helvetica; font-size: small;">&middot; EventLog &middot; ImmedSubscriptions</span><br /><span style="font-family: helvetica; font-size: small;">&middot; SchedSubscriptions &middot; EventsSubsMatches</span></p>
<p><span style="font-family: helvetica; font-size: small;">A timer job [inappropriately named] Job- immediate-alerts runs (because it processes both immediate and scheduled subscriptions) at intervals of every five minutes (the default). All events that occurred after the last run are picked up (in batches of 10,000 events), and both immediate and scheduled subscriptions are picked up. </span></p>
<p><span style="font-family: helvetica; font-size: small;">Each event is compared with each subscription to find a match (same siteID, same listID and, if itemID is specified, same itemID). If there is a match, the subscription filter is run on the event data to find a match if there are any filters specified on the fields such as "tasks assigned to me filter". If there is a match, security trimming is done for the user who is the owner of the alert. For example, if the user did not have permissions to read the list items, he will not get the alert. If the match between event a nd subscription passes security trimming, what happens next depends on whether it matched to an immediate subscription or to a scheduled subscription. </span></p>
<p><span style="font-family: helvetica; font-size: small;">If the event matched an immediate subscription, the event and subscription are added to an in - memory junction list consisting of subID -eventID, which is processed later to build the alert email or message and send it out. Otherwise, if the event matched a scheduled subscription, the event and subscription it matched is added to EventsSubMatches table to be picked up again when that subscription is actually due. </span><br /><span style="font-family: helvetica; font-size: small;">After all the events are processed, the matches between events and immediate subscriptions are built into alert messages and sent. The matches between events and scheduled subscriptions are added to the EventsSubMatches table. Then, the scheduled subscriptions that are due are picked up with event-subscription junction entries for each subscription that is due. All the events for each subscription are rolled up and sent as an alert. </span></p>
<p><span style="text-decoration: underline;"><span style="font-family: helvetica; font-size: small;">Three Steps of SharePoint Alert Subscription Processing</span></span></p>
<p><span style="font-family: helvetica; font-size: small;">The processing of changes to send out alerts occurs mainly in three steps:</span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">1. Perform filtering and security trimming. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">2. Process immediate subscriptions. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">3. Process scheduled subscriptions.</span></p>
<p><span style="text-decoration: underline;"><span style="font-family: helvetica; font-size: small;">Filtering and Security Trimming for SharePoint Alerts</span></span></p>
<p><span style="font-family: helvetica; font-size: small;">The proc_GetEventDataAndSubscriptionFilters procedure is first called to get the latest top 10,000 events that have not been processed yet, that are visible to alerts (EventType &amp; 0x0FFF != 0), and that have at least one subscription with the same siteId and listId in the subscription tables. This is an event batch. </span></p>
<p><span style="font-family: helvetica; font-size: small;">The proc_GetEventDataAndSubscriptionFilters procedure also selects all the subscriptions from both the Immedsubscriptions and Scheduledsubscriptions tables that have at least one event with the same SiteId and ListId. Both the event batch and the list of subscriptions are sorted by SiteId and ListId. </span></p>
<p><span style="font-family: helvetica; font-size: small;">The procedure also marks the ID and event time of the last event so that it can start from there the next time(EventBatch table). Finally, it moves all the events that were picked up in this batch to the EventLog table and sets the EventData and Acl columns of the events that were picked up to NULL in the EventCache table. This is done for performance reasons because the EventCache table is highly used. The entries in the EventLog table will be used in the processing of scheduled subscriptions. </span></p>
<p><span style="font-family: helvetica; font-size: small;">For each subscription in the subscriptions list, all the matching events are found. Matching implies having the same site ID and list ID. Because the list of subscriptions and the list of events are sorted by site ID, list ID, the matching consists of just wa lking over the ordered lists. </span><br /><span style="font-family: helvetica; font-size: small;">When there is a match, further checking is performed to determine whether itemID is the same (if itemID is not NULL in the subscription, that is, it is an item - level alert). If it is, the filter as specified in the binaryfilter column (which is a binary form of filter column) is run on the event data. If the event passes the filter, security trimming is performed on the user of that alert. </span></p>
<p><span style="font-family: helvetica; font-size: small;">NOTE</span><br /><span style="font-family: helvetica; font-size: small;">If it is a dynamic alert, the user to whom the alert will be sent will be picked up from the field specified by DynamicRecipient property in the alerts property bag. If the alert is assigned to a SharePoint group, the group is expanded for the individual u sers and security trimming is performed for each user.</span></p>
<p><span style="font-family: helvetica; font-size: small;">After security trimming is performed, all the matches between events and scheduled subscription are entered in the EventsSubMatches table as junction entries by using the proc_InsertEventSubscriptionJunctionEntries procedure. Each junction entry consists of an eventid, a subscription ID and lookupfieldpermissionresults, which are the results of security trimming on lookup fields for the event.</span></p>
<p><span style="text-decoration: underline;"><span style="font-family: helvetica; font-size: small;">Processing SharePoint Alerts That Are Scheduled for Immediate Execution</span></span></p>
<p><span style="font-family: helvetica; font-size: small;">The proc_GetEventDataAndSubscriptionFilters procedure does not get all the columns in the subscriptions tables. As a result, now proc_GetMatchingSubscriptionsData is called in batches of 256 subscriptions for all subscriptions in the memory junction of event -subscription. This gets all the data for each subscription. Then, for each subscription, the alert email or message is built by using the template that is specified by the AlertTemplateName column. </span></p>
<p><span style="text-decoration: underline;"><span style="font-family: helvetica; font-size: small;">Processing Scheduled SharePoint Alert Subscriptions</span></span></p>
<p><span style="font-family: helvetica; font-size: small;">Scheduled subscriptions can be either daily or weekly regular alerts or daily or weekly always- notify alerts. Always notify alerts are alerts that fire without any matching event. </span><br /><span style="font-family: helvetica; font-size: small;">Each of the following steps happen serially for each type of scheduled subscription. Processing of scheduled subscriptions starts by getting a list of site collections that have at least one daily or weekly alert. </span></p>
<p><strong><span style="text-decoration: underline;"><span style="font-family: helvetica; font-size: small;">Scheduled SharePoint Alert Subscription Process</span></span></strong></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">1. The proc_EnumSubscribedSites procedure is called to get a list of all site collections that have at least one daily regular alert in the schedsubscriptions table; actually, all site collections that have at least one daily regular alert and at least one event in the event log table, to eliminate sites that have a very low volume of events. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">2. The proc_MatchSchedSubscriptions procedure is called for each SiteId in the list of site collections. It gets the list of daily alerts for that site collection, all the events-subscriptions junction entries for that site collection, and all the events from the EventLog table. It also checks the NotifyTime and gets only those subscriptions that are due, meaning that NotifyTime is earlier than the current time. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">3. For each subscription, all the events are rolled up into one digest and the alert is sent out. The lookup permissions results are useful in building the alert because those lookup fields that the user is not authorized to see should not be rendered in the alert. </span></p>
<p style="padding-left: 30px;"><span style="font-family: helvetica; font-size: small;">4. The proc_DeleteEventLog procedure is called to delete all the entries in EventLog that are older than one week because they will not be used in any subscription.</span></p>
<p><span style="font-family: helvetica; font-size: small;">The previous steps are performed for each type of scheduled subscription: daily or weekly regular alerts and daily or weekly always notify alerts. Most of the time, always notify alerts do not have to have an email built and sent. Next, the proc_DeleteSubscriptionJunctionEntries procedure is called to delete all the junction entries for each subscription that was processed. This is done in batches of 256 subscriptions so that the database server is not overloaded. The proc_UpdateSchedSubscriptionTimes procedure is then called to update all the subscriptions whose NotifyTimeUtc is earlier than the current time. It adds a day to all the daily subscriptions and a week to all the scheduled subscriptions.</span></p>
<p>&nbsp;</p>
<p><span style="font-family: helvetica; font-size: small;">I hope that the above gathered information provided some help to those looking for resources on this topic!</span></p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2013 Incoming E-Mail Feature Troubles Configuring SMTP Services</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/sharepoint-2013-incoming-e-mail-feature-troubles-configuring-smtp-services</link>
      <pubDate>Wed, 23 Jul 2014 11:20:00 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/07/23/sharepoint-2013-incoming-e-mail-feature-troubles-configuring-smtp-services/</guid>
      <description><![CDATA[What is the SharePoint incoming e-mail feature?
The incoming e-mail feature in SharePoint enables...]]></description>
      <content:encoded><![CDATA[<p><br /><span style="font-family: georgia,palatino; font-size: medium;"><strong>What is the SharePoint incoming e-mail feature?</strong></span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;">The incoming e-mail feature in SharePoint enables sites to receive and </span><span style="font-family: georgia,palatino; font-size: medium;">store e-mail messages and attachments within SharePoint lists and libraries. &nbsp;Making it possible for teams to store the e-mail that they </span><span style="font-family: georgia,palatino; font-size: medium;">send to other team members without needing to go to the SharePoint site and </span><span style="font-family: georgia,palatino; font-size: medium;">upload the content that was sent in e-mail. What makes this possible is the </span><span style="font-family: georgia,palatino; font-size: medium;">ability for lists and libraries to be assigned a unique e-mail address.&nbsp; <br /><br /></span><span style="font-family: georgia,palatino; font-size: medium;">Before configuring </span><span style="font-family: georgia,palatino; font-size: medium;">incoming e-mail, you must perform the following tasks (depending on the type of </span><span style="font-family: georgia,palatino; font-size: medium;">implementation you choose)</span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;"></span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;"><strong>Incoming e-mail service timer job</strong></span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;">Back in SharePoint 2010, the Incoming e-mail </span><span style="font-family: georgia,palatino; font-size: medium;">service timer job had an SPJobLockType of <span style="text-decoration: underline;">None</span>, which meant that the job </span><span style="font-family: georgia,palatino; font-size: medium;">ran on all servers in the farm, as long as the Incoming E-mail service was deployed. </span><br /><br /><span style="font-family: georgia,palatino; font-size: medium;">TechNet Article:&nbsp; <a href="https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.administration.spjoblocktype(v=office.15).aspx">SharePoint Administration SPJobLock Types Defined</a></span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;">When SharePoint 2013 was released </span><span style="font-family: georgia,palatino; font-size: medium;">that SPJobLockType had changed to <span style="text-decoration: underline;">Job</span>, which meant it could only run on </span><span style="font-family: georgia,palatino; font-size: medium;">a single member server in the farm. &nbsp;This presented a problem for </span><span style="font-family: georgia,palatino; font-size: medium;">SharePoint administrators upgrading from SharePoint 2010 that intended to use </span><span style="font-family: georgia,palatino; font-size: medium;">round-robin MX records. &nbsp;Administrators had to disable the Incoming E-mail </span><span style="font-family: georgia,palatino; font-size: medium;">service on all SharePoint 2013 servers except the one designated by the MX </span><span style="font-family: georgia,palatino; font-size: medium;">record. &nbsp;By doing this it prevented the Incoming e-mail service timer job </span><span style="font-family: georgia,palatino; font-size: medium;">from running on a server that didn&rsquo;t actually contain e-mail.</span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;"><strong>SharePoint 2013 Incoming e-mail service changed!</strong></span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;">In December of 2013 Microsoft </span><span style="font-family: georgia,palatino; font-size: medium;">released a cumulative update for SharePoint 2013 Foundations that included a </span><span style="font-family: georgia,palatino; font-size: medium;">change to the Incoming E-mail service timer job.&nbsp; Essentially it set the SPJobLockType back to </span><span style="font-family: georgia,palatino; font-size: medium;">None allowing administrators to take advantage of the multi-server Incoming </span><span style="font-family: georgia,palatino; font-size: medium;">E-mail service deployment option.</span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;"><strong>But the December 2013 CU didn&rsquo;t help?</strong></span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;">In some cases when an </span><span style="font-family: georgia,palatino; font-size: medium;">administrator applied the December 2013 CU they did not see the expected change </span><span style="font-family: georgia,palatino; font-size: medium;">in the SPJobLockType.&nbsp; In these cases the </span><span style="font-family: georgia,palatino; font-size: medium;">problem occurred because the Internal E-mail service was already in place prior </span><span style="font-family: georgia,palatino; font-size: medium;">to the application of the December 2013 CU.&nbsp; </span><span style="font-family: georgia,palatino; font-size: medium;">So the SPJobLockType remained the same (in Job state).&nbsp; What the administrators in this case needed </span><span style="font-family: georgia,palatino; font-size: medium;">to do was to remove the existing Internal E-mail service feature and it&rsquo;s timer </span><span style="font-family: georgia,palatino; font-size: medium;">job and then add them back again after the December 2013 CU was applied.&nbsp; When these steps were followed the problem </span><span style="font-family: georgia,palatino; font-size: medium;">went away.</span></p>
<ol>
<li><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">Delete the Job:</span><br /><br /><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">$job = Get-Sptimerjob | ? {$_.Name -eq "job-email-delivery"}</span><br /><br /><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">$job.Delete()</span><br /><br /></li>
<li><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">Re-enable the &ldquo;Incoming E-mail&rdquo;, this will recreate the job </span><br /><br /><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">- Central Admin-&gt;System Settings</span><br /><br /><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">- Configure incoming e-mail settings</span><br /><br /><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">- Configure all option as necessary </span><br /><br /><br /></li>
<li><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">Confirm the Locktype : None for job-email-delivery</span><br /><br /><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">get-sptimerjob job-email-delivery | fl</span><br /><br /></li>
<li><span style="color: #339966; font-family: georgia,palatino; font-size: medium;">Restart the timer job across all servers.</span></li>
</ol>
<p>&nbsp;</p>
<p>TechNet Articles:</p>
<ul>
<li><span style="font-family: georgia,palatino; font-size: medium;"><a href="https://technet.microsoft.com/en-us/library/cc263260(v=office.15).aspx">Plan incoming e-mail for a SharePoint farm in SharePoint 2013</a></span></li>
<li><span style="font-family: georgia,palatino; font-size: medium;"><a href="https://technet.microsoft.com/en-us/library/cc262947(v=office.15).aspx">Configure incoming e-mail for a SharePoint 2013 farm</a></span></li>
</ul>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Configuring SharePoint 2013 ECT &amp; BCS for SQL Connectivity</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/configuring-sharepoint-2013-ect-bcs-for-sql-connectivity</link>
      <pubDate>Sat, 19 Jul 2014 17:07:00 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/07/19/configuring-sharepoint-2013-ect-bcs-for-sql-connectivity/</guid>
      <description><![CDATA[After having to walk through these setup steps recently for the first time with SQL and the...]]></description>
      <content:encoded><![CDATA[<p style="background: white;"><span style="color: #373737; font-size: medium;">After having to walk through these setup steps recently for the first time with SQL and the impersonated windows ID I thought I'd post these steps for later reference and hopefully some of you will find them helpful.</span></p>
<p style="background: white;"><span style="color: #373737; font-size: medium;"> There are several authentication options when configuring an External Content Type to point to a SQL server list. </span></p>
<p style="background: white;"><span style="font-size: medium;">Connect with User's Identity</span></p>
<p style="background: white;"><span style="color: #373737; font-size: medium;">Connect with Impersonated Windows Identity</span></p>
<p style="background: white;"><span style="color: #373737; font-size: medium;">Connect with Impersonated Custom Identity</span></p>
<p style="background: white;">&nbsp;</p>
<p style="background: white;"><span style="font-size: medium;">The steps for each method above are outlined here:&nbsp;</span></p>
<p style="background: white;"><span style="color: #538135; font-size: medium;"><strong>Connect with User's Identity </strong></span></p>
<p style="background: white;"><span style="color: #373737; font-size: medium;"><em>Use this for authenticating with the credentials from SQL itself when a user visits SharePoint to view the <strong>SQL list content</strong> </em></span></p>
<p style="background: white;">&nbsp;</p>
<h4><span style="font-size: medium;"><span style="font-family: 'courier new', courier;">I.</span>SharePoint Designer</span></h4>
<ol>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create new External Content Type </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create new database connection. Use Connect with User's Identity </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create Read Item and Read List operation at the very least </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Save External Content Type </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Right-click newly created ECT and create External List<br /> </em></span></div>
</li>
</ol>
<p style="background: white;"><span style="color: #538135; font-size: medium;"><strong>Connect with Impersonated <span style="text-decoration: underline;">Windows</span> Identity </strong></span></p>
<p style="background: white;"><span style="color: #373737; font-size: medium;"><em>Use this option for SQL authentication when you want your user accounts hidden behind a single Windows alias. The alias account credentials are kept in the Secure Store Service Application. </em></span></p>
<h4><span style="color: #373737; font-size: medium;"><span style="font-family: 'courier new', courier;">I. &nbsp;</span>SharePoint Central Admin </span></h4>
<ol>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Central Admin &gt; Manage Service Application. Create a new Secure Store Service Application and edit it. </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create a new target application using the Group type. </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Enter all the accounts that require access on the next screen. </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Once the Target Application has been created open the associated drop down list and select Set Credentials and enter the Username/Password of the AD alias account. </em></span></div>
</li>
</ol>
<h4><span style="color: #373737; font-size: medium;"><span style="font-family: 'courier new', courier;">II.&nbsp;</span>SharePoint Designer </span></h4>
<ol>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create new External Content Type </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create new connection and use the Connect with Impersonated Windows Identity option and enter the Secure Store Application ID you just created in Central Admin above </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create a Read List and Read Item operation at the very least </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Save the External Content Type</em></span></div>
</li>
<li>
<div style="background: white;"><span style="font-size: medium;"><em style="color: #373737;">Open up the options menu of the newly created ECT to create an External List</em></span></div>
</li>
</ol>
<h4 style="font-size: 12px;"><span style="color: #373737; font-size: medium;"><span style="font-family: 'courier new', courier;">III.&nbsp;</span>SharePoint Central Admin </span></h4>
<ol>
<li><span style="font-size: medium;"><em>Once you are finished with the previous step in SharePoint designer it automatically creates your External Content Type </em></span></li>
<li><span style="font-size: medium;"><em>From the Business Data Connectivity Service Application find the new ECT, select the box next to it, and go to Set Object Permissions located on the command ribbon. </em></span></li>
<li><span style="font-size: medium;"><em>Select a user or group with access to the ECT and grant at least Execute permissions to it. </em></span></li>
<li><span style="font-size: medium;"><em>Select Set Metadata<strong> Store Permissions</strong> located on the command ribbon</em></span></li>
</ol>
<p style="background: white;"><span style="color: black; font-size: medium;"><strong> <span style="color: #538135;">Connect with Impersonated <span style="text-decoration: underline;">Custom</span> Identity </span></strong></span></p>
<p style="background: white;"><span style="font-size: medium;"><span style="color: #373737;"><em>This option is very much like the Impersonate Windows Identity selection but the configuration uses an account created in SQL as opposed to an AD account as was used&nbsp;</em></span><em style="color: #373737;">In the Windows Identity section above.</em></span></p>
<p style="background: white;">&nbsp;</p>
<h4><span style="color: #373737; font-size: medium;"><span style="font-family: 'courier new', courier;">I. &nbsp;&nbsp;</span>SharePoint Central Admin </span></h4>
<ol>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Central Admin &gt; Manage Service Application and select or create a new Secure Store Service Application and edit it. Create a new target application using the Group type. </em></span></div>
</li>
<li><span style="font-size: medium;"><em>After the Target Application has been created select Set Credentials from the dropdown and <span style="color: #2f5496;">enter the Username/Password of a SQL account</span></em></span></li>
</ol>
<h4><span style="color: #373737; font-size: medium;"><span style="font-family: 'courier new', courier;">II. &nbsp;</span>SharePoint Designer </span></h4>
<ol>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create a new External Content Type </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create a NEW connection, or use one that you know was setup w/ a SQL login. Use the Connect with Impersonated Custom Identity option and enter the Secure Store Application ID created in the previous steps. </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Create a Read Item and Read List operation at the very least </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Save the External Content Type </em></span></div>
</li>
<li>
<div style="background: white;"><span style="color: #373737; font-size: medium;"><em>Open up the options menu of the newly created ECT to create an External List </em></span></div>
</li>
</ol>
<h4><span style="color: #373737; font-size: medium;"><span style="font-family: 'courier new', courier;">III.&nbsp;</span>SharePoint Central Admin </span></h4>
<ol>
<li><span style="font-size: medium;"><em>Once you are finished with the previous step in SharePoint designer it automatically creates your External Content Type </em></span></li>
<li><span style="font-size: medium;"><em>From the Business Data Connectivity Service Application find the new ECT, select the box next to it, and go to <strong>Set Object Permissions</strong> located on the command ribbon. </em></span></li>
<li><span style="font-size: medium;"><em>Select a user or group with access to the ECT and grant at least Execute permissions to it. </em></span></li>
<li><span style="font-size: medium;"><em>Select <strong>Set Metadata Store Permissions</strong> located on the command ribbon</em></span></li>
</ol>
<p style="background: white;">&nbsp;</p>
<p style="background: white;"><span style="font-size: medium;">Hope you find this useful.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>How to configure blog post approval in SharePoint 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/how-to-configure-blog-post-approval-in-sharepoint-2013</link>
      <pubDate>Tue, 15 Jul 2014 11:39:00 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/07/15/how-to-configure-blog-post-approval-in-sharepoint-2013/</guid>
      <description><![CDATA[How to configure blog post approval in SharePoint 2013
&nbsp;
I've seen several blogs addressing...]]></description>
      <content:encoded><![CDATA[<h1><strong>How to configure blog post approval in SharePoint 2013</strong></h1>
<p>&nbsp;</p>
<p>I've seen several blogs addressing the need for SharePoint blog sites to require an approval process<br />before posts are published and made visible to the rest of the blog site members.&nbsp; Unfortunately <br />the majority of them answer this need with a less than easy set of instructions for creating a <br />custom workflow.&nbsp; Workflows are great solutions for so many function driven needs in SharePoint<br /> but this particular topic can be handled quite easily with an OOB solution.</p>
<p>If you look at a SharePoint 2013 blog site it&rsquo;s essentially just another way of presenting the <br />contents of a separate set of list objects.&nbsp; One list that contains each post that is created and a <br />second list that is used to store the various comments created for each post.&nbsp;</p>
<p>If you go to either of the links under your Blog tools for Manage posts or Manage comments <br />these links will bring you to the List site that holds each post or comment respectfully.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/1220.1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/1220.1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/1220.1.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/1220.1.jpg" alt="" border="0" /></a><br />Let&rsquo;s focus on the approval process for blog posts.&nbsp; So from your main blog site you click your <br />Manage posts link and see the posts in list format.&nbsp; A freshly created OOB blog site includes the initial<br />sample post &ldquo;Welcome to my blog!&rdquo; as you can see.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/2843.2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/2843.2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/2843.2.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/2843.2.jpg" alt="" border="0" /></a></p>
<p>This is where you need to configure your versioning settings in order to prevent new posts from being<br />published and hence visible to the rest of the blog members.&nbsp; Open up the LIST tab at the top of your<br />list site and under the Settings section select List Settings.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5504.3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5504.3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5504.3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5504.3.png" alt="" border="0" /></a></p>
<p>Under the General Settings you will see the Versioning settings link. Click the Versioning settings link <br />and select <strong>Yes</strong> under the Content Approval option [Require content approval for submitted items?] <br />and select &ldquo;Only users who can approve items (and the author of the item)&rdquo; under the Draft Item Security<br />option [Who should see the draft items in this list?].&nbsp; Click OK.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/6813.4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/6813.4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/6813.4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/6813.4.png" alt="" border="0" /></a></p>
<p>Now if you go back to your blog sites home page select &lsquo;Create a post&rsquo; under your Blog tools section.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/4101.5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/4101.5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/4101.5.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/4101.5.png" alt="" border="0" /></a></p>
<p>As you can see an Information ribbon is presented to users creating the new post explaining that<br />approval is required and that their post submission will not be visible in public views until someone with the<br />proper rights approves it.</p>
<p>In the case where a member of an administrative group creates a new post they are automatically given the option to publish the post<br />upon completion.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5684.6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5684.6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5684.6.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5684.6.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>Here is an example of the post creation console when opened by a user in the members group.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5504.7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5504.7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/5504.7.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/5504.7.png" alt="" border="0" /></a></p>
<p>This next part is where many people get confused.&nbsp; The newly created post will be visible on the blog site <br />home page to the person that posted it as well as to the members of the approval group.&nbsp; The post will NOT<br /> be visible to the rest of the blog site community until it has been approved.</p>
<ol>
<li>Post Creators View</li>
</ol>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/8875.8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/8875.8.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/8875.8.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/8875.8.png" alt="" border="0" /></a></p>
<ol>
<li>Approvers View</li>
</ol>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/2047.9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/2047.9.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/2047.9.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/2047.9.png" alt="" border="0" /></a></p>
<ol>
<li>Public View</li>
</ol>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/3487.10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/3487.10.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/65/04/3487.10.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-65-04/3487.10.png" alt="" border="0" /></a><br />&nbsp;</p>
<p>Once a member of the approvers group sees the new post they can go to the Manage posts link<br />under the Blog tools and approve or reject the new post.&nbsp; Email notification is not part of the <br />versioning content approval process but you can easily set this up by using either SharePoint <br />alerting or by creating a simple workflow to notify members of the approval group whenever a<br />new list item is created with Pending as the approval status.&nbsp; Of course if you&rsquo;re taking the route<br />listed in this post then you&rsquo;re probably trying to avoid workflows all together so the alerting feature may best suit<br />your needs when it comes to generating an email alert to the members of your approval group.</p>
<p>Here's a good Technet article on configuring Alerting:&nbsp;<a href="https://technet.microsoft.com/en-us/library/cc287751(v=office.14).aspx">https://technet.microsoft.com/en-us/library/cc287751(v=office.14).aspx</a></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2013: Unable to Start the User Profile Synchronization Service</title>
      <link>https://docs.microsoft.com/archive/blogs/ianragusa/sharepoint-2013-unable-to-start-the-user-profile-synchronization-service</link>
      <pubDate>Mon, 23 Jun 2014 05:20:00 GMT</pubDate>
      <dc:creator><![CDATA[CharlottesWeb]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ianragusa/2014/06/23/sharepoint-2013-unable-to-start-the-user-profile-synchronization-service/</guid>
      <description><![CDATA[There are lots of articles and blogs out there explaining various ways to correct this...]]></description>
      <content:encoded><![CDATA[<p>There are lots of articles and blogs out there explaining various ways to correct this problem.&nbsp; The reason I'm writing this small post is because I've seen and heard of many (recently) that have been trying to resolve this very problem in their SharePoint 2013 environment and have been through most of the common resolutions but one thing managed to elude many.&nbsp; The reason this problem has been coming to the forefront lately is because many are now migrating their SQL implementation to SQL Server 2014.&nbsp; SQL Server 2014 opens up many new features and amazing improvements which I won't even begin to touch on here but interaction between SharePoint 2013 and SQL Server 2014 is a little rocky out of the box.&nbsp; In order to get the two of them to play nicely you'll need to install the April 2014 Cumulative Update full package (be sure to get all 3 files or it will fail) during install. &nbsp;Remove your User Profile Application and the database associated with it and recreate UPA. &nbsp; OR....install the June CU which includes a fix for an issue the April CU creates related to authentication.&nbsp; I'll let you do the research on that.&nbsp;</p>
<p>&nbsp;</p>
<p>Hopefully this will at least provide admins with the elusive fix for SharePoint 2013's inability to start up it's User Profile Synchronization service after installing or migrating to SQL Server 2014.</p>
<p>&nbsp;</p>
<p>What's new in SQL Server 2014 <a title="https://msdn.microsoft.com/en-us/library/bb500435(v=sql.120).aspx" href="https://msdn.microsoft.com/en-us/library/bb500435(v=sql.120).aspx">[https://msdn.microsoft.com/en-us/library/bb500435(v=sql.120).aspx</a>]</p>
<p>SQL Server 2014 Home Page [<a title="https://www.microsoft.com/en-us/server-cloud/products/sql-server/" href="https://www.microsoft.com/en-us/server-cloud/products/sql-server/">https://www.microsoft.com/en-us/server-cloud/products/sql-server/</a>]</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>