Sharepoint Archives | DMC, Inc. https://www.dmcinfo.com/blog/tag/sharepoint/ Tue, 23 Dec 2025 16:08:41 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.3 https://cdn.dmcinfo.com/wp-content/uploads/2025/04/17193803/site-icon-150x150.png Sharepoint Archives | DMC, Inc. https://www.dmcinfo.com/blog/tag/sharepoint/ 32 32 Monday versus SharePoint Lists https://www.dmcinfo.com/blog/17687/monday-versus-sharepoint-lists/ Wed, 15 Mar 2023 11:00:39 +0000 https://www.dmcinfo.com/blog/17687/monday-versus-sharepoint-lists/ If you are paying for Monday to manage your tasks, issues, and/or milestones, you should know that you may already have a tool in your toolbox you could be utilizing for free instead. As a Microsoft Office 365 user, the suite of products in a basic license includes many hidden gems, and one of them is SharePoint Lists. […]

The post Monday versus SharePoint Lists appeared first on DMC, Inc..

]]>
If you are paying for Monday to manage your tasks, issues, and/or milestones, you should know that you may already have a tool in your toolbox you could be utilizing for free instead. As a Microsoft Office 365 user, the suite of products in a basic license includes many hidden gems, and one of them is SharePoint Lists. SharePoint has evolved substantially in its online versions, so if you haven’t looked in a while, the features you are looking for from Monday might already exist in SharePoint online.  Modern SharePoint Lists and Monday offer extremely similar capabilities. 

Templates

Both tools have templates available out of the box to get you started.

SharePoint:

SharePoint Templates

Monday:

You can choose to work from a template or start with a blank list with either tool. Let’s go over some basic features that you might be looking for:

Adding/Modifying a Column

You can easily add a column directly from either user interface. Previous iterations of SharePoint required configuration knowledge to set up a SharePoint list. With the modern list, a lot of settings are easily found on the user interface. You can also move around columns and change the size of them in both tools easily.

SharePoint:

SharePoint Adding Columns

Monday:

Monday Adding column

Adding Comments

Both tools allow you to easily thread comments regarding a specific item and tag users; however, in SharePoint Lists, since your users are already present in the Office 365 suite, they will be more likely to have the ability to access your list. The SharePoint user experience did notify us that Natalie did not have access and allowed me to grant it to her.

SharePoint:

SharePoint Adding comments

Monday:

Monday Adding comments

Version History

This is used if you want the ability to see how the item has changed, who changed it, and when you would utilize the version history.

SharePoint:

SharePoint Version History

Monday:

Monday Version History

Many other features have parity between the two:

  • Custom permissions levels and access for internal and external users per board
  • No code is required for automations (send emails on triggers, update items)
  • No code forms for inputting data
  • Data visualization within a click of a button
  • Creating views with filters, sorting, and summing
  • Bulk or Batching Editing
  • Attachments

When you complete your board, you will have a professional-looking board that you can use for a variety of purposes.

SharePoint:

SharePoint Board

Monday:

Monday Board

So, Why Choose SharePoint?

SharePoint is a great software tool to use for integration with other Microsoft platforms. You are already in Office 365, so you can easily integrate your data, documents, and users right into the boards without additional configuration. For example, Microsoft Teams integrates with Microsoft Lists seamlessly so you can keep the conversation and the items in the same user interface.

Teams

You can hover over an individual and automatically pull in their photo, contact information, title, and other important information right from Active Directory without advanced configuration since we are in the Office 365 suite.

Active Directory

Depending on how many columns you have, you might need to display them in a way that is more digestible to your users.  For example, here is an example of an onboarding process that is used to see where a new client is within the stages using advanced formatting.

Advanced Formatting

Once you need SharePoint for advanced configurations that are beyond the scope of what an individual can do, DMC can help!

Customization possibilities are endless in SharePoint. Using either advanced configuration or complete custom application development, with SharePoint, anything is possible. DMC is a leading expert in SharePoint and can help with these advanced needs like creating advanced custom forms, implementing complex workflow management, and complicated data analytics.

One of the most overwhelming differences between SharePoint and Monday is the price. Following the trial period, the price of Monday significantly increases as they use a tiered, per-user pricing method. This can become especially expensive for larger companies. Monday may start free, but it does not stay free if you want to use the platform for your business.

Regardless of how you are using either tool, you want to keep permissions in mind and think about your governance. To prevent people from editing your lists or making other changes, you should create a plan for how you are going to maintain your content moving forward.

Microsoft is always working to update the platform and keep it modern, and the added feature in Modern SharePoint Lists has brought it to the next level.

As a Microsoft Solutions Partner, we pride ourselves in our SharePoint expertise and want to help you organize your company’s information in the best way possible.

Learn more about DMC’s SharePoint expertise and contact us today for your next project.

The post Monday versus SharePoint Lists appeared first on DMC, Inc..

]]>
Easily Access SharePoint Content Using @pnp/sp https://www.dmcinfo.com/blog/19408/easily-access-sharepoint-content-using-pnp-sp/ Wed, 24 Mar 2021 12:32:42 +0000 https://www.dmcinfo.com/blog/19408/easily-access-sharepoint-content-using-pnp-sp/ DMC has previously covered how to utilize SharePoint’s REST API for building workflows, creating list items and folders, and additional tips. In this blog, I’ll discuss an easy way to consume the SharePoint REST APIs using @pnp/sp in a typesafe way. I recently utilized @pnp/sp in a React SPFx web part over direct queries, which simplified […]

The post Easily Access SharePoint Content Using @pnp/sp appeared first on DMC, Inc..

]]>
DMC has previously covered how to utilize SharePoint’s REST API for building workflows, creating list items and folders, and additional tips. In this blog, I’ll discuss an easy way to consume the SharePoint REST APIs using @pnp/sp in a typesafe way. I recently utilized @pnp/sp in a React SPFx web part over direct queries, which simplified much of the development and made my life a whole lot easier.

What is @pnp/sp?

@pnp is an open-source library that can be utilized in JavaScript, NodeJS, and SharePoint Framework projects to accomplish many things that we would need to write custom REST requests for. @pnp/sp pertains specifically to SharePoint and is one part of the @pnp collection. 

Why Use @pnp/sp?

Using a library is advantageous because it abstracts the REST queries and puts them in readable, understandable code. We also get the benefits of type-checking as @pnp returns defined objects, as well as abstracting some of the nitty-gritty of REST Requests away.

Simply put, @pnp/sp makes performing requests a lot easier and should be utilized if available. A major advantage of this library is that it also offers IntelliSense, a robust code-completion aid developed by Microsoft. This means we can quickly see many different properties and methods, as opposed to looking up every single command and object in the documentation.

For example, VSCode IntelliSense allows for autocomplete in the image below.

It also shows the annotated documentation for functions.

Examples and Use Cases

1. Retrieving a List of Site Users From SharePoint

Let’s say we need to retrieve a list of all users for a given SharePoint site. We can utilize the @pnp/sp/webs in conjunction with @pnp/sp/site-users to retrieve a list of siteUsers for a given site:

const users = await web.siteUsers();

const usersFiltered = await web.siteUsers.filter(`startswith(LoginName, '${encodeURIComponent("i:0#.f|m")}')`)();

2. Getting the Current User’s Groups

We can use @pnp/sp/site-groups to easily find, delete, update, or even add a site group to a user. In this example, we’ll retrieve a list of groups the current user belongs to.

As we can see in the IntelliSense, it provides us with some properties of each group, such as ID or description, which we can then use for our code.

3. Adding a File to a Folder in SharePoint

If we need to add files, we can do so by first using a combination of @pnp/sp/folders to navigate to the folder we want to use. Once we’ve found the correct folder, we can simply use @pnp/sp/files to add the files.

const result = await web
                    .getFolderByServerRelativeUrl("https://myExample.sharepoint.come/myFiles")
                    .files.add("MyNewFile.txt", file, false);
                return result;

These are three basic examples of some common use cases in development. However, there are plenty of other libraries in @pnp/sp that can achieve many things that we would otherwise have to create our own queries for. @pnp/sp is a great resource with a wide variety of functionalities offered to SharePoint Framework developers. I suggest visiting their documentation for more examples and uses of this library.

Learn more about DMC’s SharePoint expertise and contact us to get started on your next project.

The post Easily Access SharePoint Content Using @pnp/sp appeared first on DMC, Inc..

]]>
Two Opportunities to Attend SharePoint Intranet in a Day https://www.dmcinfo.com/blog/19959/two-opportunities-to-attend-sharepoint-intranet-in-a-day/ Mon, 04 May 2020 16:21:33 +0000 https://www.dmcinfo.com/blog/19959/two-opportunities-to-attend-sharepoint-intranet-in-a-day/ What is Intranet in a Day? On May 14 and May 28, participants in Intranet in a Day will create a slick company intranet and content management system using SharePoint Online with Communication Sites. Register here today! Course Description: SharePoint Online has introduced many new features that make it easy to configure a well-designed Intranet for […]

The post Two Opportunities to Attend SharePoint Intranet in a Day appeared first on DMC, Inc..

]]>
What is Intranet in a Day?

On May 14 and May 28, participants in Intranet in a Day will create a slick company intranet and content management system using SharePoint Online with Communication SitesRegister here today!

Course Description:

SharePoint Online has introduced many new features that make it easy to configure a well-designed Intranet for your organization with no custom development. Without a plan in place it can be overwhelming to get started and be confident that you are setting it up correctly.

Whether you are trying to get your SharePoint off the ground for the first time or you already have one that could be improved, this class is for you. Join Anjali Bharadwa, SharePoint Expert, to guide you through the steps to ensure that you are making smart decisions and following best practices.

At the end of the training, you will have built a visually appealing intranet home page and one department site. You will also possess the tools and know-how required to complete the design, implement permissions, and train users in order to complete your intranet.

communications intranet
Example Communications Site

During the day, we will complete the following objectives:

  • Create a company landing page where employees can find important resources and information about what's new
  • Start a content management system for employees to collaborate and share documents and tasks with automatic version history
  • Utilize Teams alongside a SharePoint intranet
  • Review how to manage and maintain SharePoint permissions
  • Learn how to train users on basic SharePoint functions

Class will be held over virtual video conferencing via Microsoft Teams with the option to share your designs with the instructor. Each class will have a limited capacity (no more than 5 participants) to allow you to get feedback and help as needed.

Agenda:

  • Review Microsoft 365 Tools and Goals
  • Plan Site Structure of Site and how to integrate Teams
  • Finalize Intranet Home Page Format
  • Add Content to the Intranet Home Page
  • Review Department Site Options
  • Plan the Structure of a Department Site (Metadata vs Folders)
  • Buildout a Department Structure
  • Define and Implement Permissions
  • Train your Users
  • Learn about SharePoint Advanced Features
  • Q&A

Who:

Anyone is welcome to join. Typically, intranet designers include HR, Marketing, IT or other Business Leaders. No technical background is required since this is a no-code solution.

When:

Attend one of DMC's May 2020 workshops:

  • Thursday, May 14, 2020 9 a.m. – 5 p.m. CT
  • Thursday, May 28, 2020 9 a.m. – 5 p.m. CT

Requirements:

  • Office 365 Tenant with SharePoint Online
  • SharePoint Administrator
  • PC with Internet Access

How:

Register here and DMC will contact you for payment details. This day-long course will cost $395. Once registered you will be contacted by the instructor for guidance on pre-work and review of your current Intranet situation.

Testimonials:

Here is what recent Intranet in a Day attendees had to say about the course:

  • "The class was exactly as advertised. I gained enough knowledge to confidently set up our internal intranet and team sites."
  • "I really liked that it was a small group and the presenter was able to give guidance to the questions as they came up during the training. I also liked that I got to perform the task at hand and not just watch a presenter do it."
  • "The class structure and instruction from Anjali was a perfect introduction in creating your first intranet page."

Questions before registering? Feel free to contact Anjali at anjali.bharadwa@dmcinfo.com.

The post Two Opportunities to Attend SharePoint Intranet in a Day appeared first on DMC, Inc..

]]>
DMC’s SharePoint Intranet in a Day https://www.dmcinfo.com/blog/20012/dmcs-sharepoint-intranet-in-a-day/ Tue, 14 Apr 2020 12:41:27 +0000 https://www.dmcinfo.com/blog/20012/dmcs-sharepoint-intranet-in-a-day/ What is Intranet in a Day? Participants in Intranet in a Day will create a slick company intranet and content management system using SharePoint Online with Communication Sites. Course Description: SharePoint Online has introduced many new features that make it easy to configure a well-designed Intranet for your organization with no custom development. Without a […]

The post DMC’s SharePoint Intranet in a Day appeared first on DMC, Inc..

]]>
What is Intranet in a Day?

Participants in Intranet in a Day will create a slick company intranet and content management system using SharePoint Online with Communication Sites.

Course Description:

SharePoint Online has introduced many new features that make it easy to configure a well-designed Intranet for your organization with no custom development. Without a plan in place it can be overwhelming to get started and be confident that you are setting it up correctly.

Whether you are trying to get your SharePoint off the ground for the first time or you already have one that could be improved, this class is for you. Join Anjali Bharadwa, SharePoint Expert, to guide you through the steps to ensure that you are making smart decisions and following best practices.

At the end of the training, you will have built a visually appealing intranet home page and one department site. You will also possess the tools and know-how required to complete the design, implement permissions, and train users in order to complete your intranet.

communications intranet
Example Communications Site

During the day, we will complete the following objectives:

  • Create a company landing page where employees can find important resources and information about what's new
  • Start a content management system for employees to collaborate and share documents and tasks with automatic version history
  • Utilize Teams alongside a SharePoint intranet
  • Review how to manage and maintain SharePoint permissions
  • Learn how to train users on basic SharePoint functions

Class will be held over virtual video conferencing via Microsoft Teams with the option to share your designs with the instructor. Each class will have a limited capacity (no more than 5 participants) to allow you to get feedback and help as needed.

Agenda:

  • Review Microsoft 365 Tools and Goals
  • Plan Site Structure of Site and how to integrate Teams
  • Finalize Intranet Home Page Format
  • Add Content to the Intranet Home Page
  • Review Department Site Options
  • Plan the Structure of a Department Site (Metadata vs Folders)
  • Buildout a Department Structure
  • Define and Implement Permissions
  • Train your Users
  • Learn about SharePoint Advanced Features
  • Q&A

Who:

Anyone is welcome to join. Typically, intranet designers include HR, Marketing, IT or other Business Leaders. No technical background is required since this is a no-code solution.

When:

Thursday, April 30, 2020 9 A.M. – 5 P.M. CST

Requirements:

  • Office 365 Tenant with SharePoint Online
  • SharePoint Administrator
  • PC with Internet Access

How:

Register here and DMC will contact you for payment details. This day-long course will cost $395. Once registered you will be contacted by the instructor for guidance on pre-work and review of your current Intranet situation.

Questions before registering? Feel free to contact Anjali at anjali.bharadwa@dmcinfo.com.

The post DMC’s SharePoint Intranet in a Day appeared first on DMC, Inc..

]]>
Create Site From Template using SharePoint 2013 Workflow https://www.dmcinfo.com/blog/28017/create-site-from-template-using-sharepoint-2013-workflow/ Mon, 04 Nov 2013 16:51:13 +0000 https://www.dmcinfo.com/blog/28017/create-site-from-template-using-sharepoint-2013-workflow/ SharePoint sites are often created for new customers, projects, and events. While it is possible to create each new site manually, having an automated process greatly reduces user training and effort. In previous versions of SharePoint, creating sites from a workflow required deploying custom actions. However, with the new Call HTTP Web Service action in […]

The post Create Site From Template using SharePoint 2013 Workflow appeared first on DMC, Inc..

]]>
SharePoint sites are often created for new customers, projects, and events. While it is possible to create each new site manually, having an automated process greatly reduces user training and effort.

In previous versions of SharePoint, creating sites from a workflow required deploying custom actions. However, with the new Call HTTP Web Service action in SharePoint 2013, it is possible to apply some tricks and achieve the same result using only SharePoint Designer.

Creating a new site using only 2013 SharePoint Designer

Follow the tutorial below to deploy a “no-code” site creation workflow to your on-premise or SharePoint Online / Office 365 environment.

The steps look technical, but it is not necessary to understand all the details to make it work.

  1. Create a new SharePoint 2013 workflow. It is best to create this as a list workflow.

    For example, you could have the workflow create a new site every time a new customer is added to a customer list.
  1. Create the following string variables:
  • RequestURL – set this to the following: https://<parent_site_url>/_api/web/webinfos/add (replace <parent_site_url> with the URL where you want to create the subsite):
  • Title – the title of the new site. This could come from the list item.
  • Description – description of the new site.
  • SiteURL – URL stub of the new site. Your new site will be created at https://<parent_site_url>/<SiteUrl>/
  • SiteTemplate – GUID of the site template. To use the default team template, set this to 'sts'. To use a custom template, see the bottom of this post.
  1. Build the following dictionary variables: (using the Build Dictionary action).

There are four dictionaries; you should build them in the order below.

Note that each entry within a dictionary is in the form of Name = Value.

You must set the correct ‘Type’ for each of these Name-Value pairs, otherwise the action will not work.


requestHeaders

Name Type Value
Accept String application/json;odata=verbose
Content-Type String application/json;odata=verbose


metadata

Name Type Value
Type String SP.WebInfoCreation


parameters (Screenshot for this one is below. Language 1033 is for English)

Name Type Value
__metadata Dictionary Variable: metadata
Url String Variable: SiteURL
Title String Variable: Title
Description String Variable: Description
Language Number 1033
WebTemplate String Variable: SiteTemplate
UseUniquePermissions Boolean False



requestDictionary

Name Type Value
parameters Dictionary Variable: parameters


These dictionary definitions come from the SharePoint REST API.

See the end of this MSDN page which includes a similar example in JavaScript.

  1. Publish the Workflow and exit SharePoint Designer.
  1. Enable App Permissions by going to Site->Site Settings->Site Actions->Site Features.

    Find the feature "Workflows can use app permissions" and click Activate.
  1. Get the App Identifier. Goto the Site->Site Settings->App Permissions.

    Copy everything between the last | and the first @.
  1. Set App Permissions.

    Append /_layouts/15/appinv.aspx to your site URL to visit the hidden App Permissions page.

    Enter the App ID from above and click lookup.

    Then, enter the following permission Request XML.

    Click Create, and when prompted, Trust It.

    This will give your workflow full control over the entire site collection.

<AppPermissionRequests><AppPermissionRequest Scope=”http://sharepoint/content/sitecollection” Right=”FullControl”/></AppPermissionRequests>

  1. Create an App Step.

    Re-open the workflow in SharePoint designer and you should see that "App Step" is now available.

    Add an App Step at the end of the workflow.
  1. Add the Call HTTP Web Service Action within the App Step.

    Right-click on the action and set the properties as shown below.

    Create the new variable ResponseContent.
  1. Publish the workflow a final time.

    Run your workflow and your site should be created at the URL you defined above.

    Once you've successfully tested it, you can modify the rest of the workflow to include the correct title, add approval tasks, etc.

Finding the SiteTemplate GUID

The quickest way to get the GUID of a site template is to start creating a new site. When prompted to select the template open the “Custom” tab so that your template is shown. Press F12 in IE to open the developer bar and search for the template name.

You want the option value that looks like {84659096-89AD-4CC4-B1E2-5048DE9EDA46}#ProjectSiteTemplate.

Troubleshooting

If you have trouble making the HTTP call work, I recommend the following troubleshooting tactics:

  1. Log the RequestURL immediately before you make the HTTP request.
  1. Log the ResponseCode immediately after the HTTP request.
  1. Email yourself the ReponseContent. (Note: you must email it to yourself, as the ResponseContent is usually too long for the workflow history list).

Learn more about DMC’s SharePoint Workflow services.

Contact Us for help on implementing your own workflow processes with SharePoint. 

The post Create Site From Template using SharePoint 2013 Workflow appeared first on DMC, Inc..

]]>
Fix SharePoint 2013 Distributed Cache Timeouts https://www.dmcinfo.com/blog/28028/fix-sharepoint-2013-distributed-cache-timeouts/ Wed, 30 Oct 2013 13:09:31 +0000 https://www.dmcinfo.com/blog/28028/fix-sharepoint-2013-distributed-cache-timeouts/ SharePoint 2013 uses the AppFabric Caching Service to centralize all caches that are used by SharePoint. The distributed cache is used by many features including Authentication, Newsfeed, Security, Page Loading, Workflows, and more. While Microsoft claims that SharePoint’s use of the Distributed Cache greatly increases performance, the service is also quite unreliable and difficult to […]

The post Fix SharePoint 2013 Distributed Cache Timeouts appeared first on DMC, Inc..

]]>
SharePoint 2013 uses the AppFabric Caching Service to centralize all caches that are used by SharePoint. The distributed cache is used by many features including Authentication, Newsfeed, Security, Page Loading, Workflows, and more. While Microsoft claims that SharePoint’s use of the Distributed Cache greatly increases performance, the service is also quite unreliable and difficult to troubleshoot. Hopefully they will write more documentation and improve the product with the release of SP1.

There is a good TechNet guide with Powershell commands that you might find useful if you ever need to change any of the AppFabric configuration. The article does not cover increasing Request Timeouts so I will review that in this blog post.

A few weeks ago we ran into a problem where one of our web parts stopped working when users were not on the local network. After investigating ULS logs we tracked down the issue to Distributed Cache timeouts.

The web part, a timer application, was developed with heavy use of the View State. As a result, as the View State Cache continued to grow, we began seeing intermittent Timeout errors in the logs.

Unexpected error occurred in method ‘Put’ , usage ‘SPViewStateCache’ – Exception ‘Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode:SubStatus:The request timed out.. Additional Information : The client was trying to communicate with the server : net.tcp://SP2013Dev.DMC.local:22233 at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody, RequestBody reqBody) at Microsoft.ApplicationServer.Caching.DataCache.InternalPut(String key, Object value, DataCacheItemVersion oldVersion, TimeSpan timeout, DataCacheTag[] tags, String region, IMonitoringListener listener) at Microsoft.ApplicationServer.Caching.DataCache.<>c__DisplayClass25. b__24() at Microsoft.ApplicationServer.Caching.DataCache.Put(String key, Object value, TimeSpan timeout) at Microsoft.SharePoint.DistributedCaching.SPDistributedCache.Put(String key, Object value)’. Unexpected error occurred in method ‘Put’ , usage ‘SPViewStateCache’ – Exception ‘Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode:SubStatus:The connection was terminated, possibly due to server or network problems or serialized Object size is greater than MaxBufferSize on server. Result of the request is unknown. —> System.TimeoutException: The socket was aborted because an asynchronous receive from the socket did not complete within the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. —> System.IO.IOException: The read operation failed, see inner exception. —> System.TimeoutException: The socket was aborted because an asynchronous receive from the socket did not complete within the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. —> System.Net.Sockets.SocketException: The I/O operation has been aborted because of either a thread exit or an application request at System.ServiceModel.Channels.SocketConnection.HandleReceiveAsyncCompleted() at System.ServiceModel.Channels.SocketConnection.OnReceiveAsync(Object sender, SocketAsyncEventArgs eventArgs) –

We also had a problem with starting SP 2013 workflows which we were able to trace down to Distributed Logon Token Cache timeouts.

Unexpected error occurred in method ‘GetObject’ , usage ‘Distributed Logon Token Cache’ – Exception ‘Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode:SubStatus:The request timed out.. Additional Information : The client was trying to communicate with the server : net.tcp://SP2013Dev.DMC.local:22233 at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody, RequestBody reqBody) at Microsoft.ApplicationServer.Caching.DataCache.InternalGet(String key, DataCacheItemVersion& version, String region, IMonitoringListener listener) at Microsoft.ApplicationServer.Caching.DataCache.<>c__DisplayClass49.b__48() at Microsoft.SharePoint.DistributedCaching.SPDistributedCache.GetObject(String key)’.

To fix these errors, you need to increase the Request Timeout limit for the relevant cache. You can do so using the following commands.

$LogonTokenCache = Get-SPDistributedCacheClientSetting -ContainerType DistributedLogonTokenCache $LogonTokenCache.RequestTimeout = 300 Set-SPDistributedCacheClientSetting -ContainerType DistributedLogonTokenCache -DistributedCacheClientSettings $LogonTokenCache 

$ViewStateCache = Get-SPDistributedCacheClientSetting -ContainerType DistributedViewStateCache $ViewStateCache.RequestTimeout = 300 Set-SPDistributedCacheClientSetting -ContainerType DistributedViewStateCache -DistributedCacheClientSettings $ViewStateCache

By running Get-SPDistributedCacheClientSetting -ContainerType CacheName you are able to see what the current request timeout is set to. By default, Microsoft sets the value of the RequestTimeout to 20 milliseconds. As a result, if the server is under any significant stress you will start seeing a lot of misses on calls to the cache.

PS C:\Users\user> $viewstatecache ChannelInitializationTimeout : 60000 ConnectionBufferSize : 131072 MaxBufferPoolSize : 268435456 MaxBufferSize : 8388608 MaxOutputDelay : 2 ReceiveTimeout : 60000 ChannelOpenTimeOut : 20 RequestTimeout : 300 MaxConnectionsToServer : 99

Learn more about DMC’s SharePoint Consulting Services and Digital Workplace Solutions team. Contact us for your next custom SharePoint project.

The post Fix SharePoint 2013 Distributed Cache Timeouts appeared first on DMC, Inc..

]]>
Building Workflows with New Features of SharePoint 2013 https://www.dmcinfo.com/blog/28243/building-workflows-with-new-features-of-sharepoint-2013/ Fri, 19 Jul 2013 11:09:53 +0000 https://www.dmcinfo.com/blog/28243/building-workflows-with-new-features-of-sharepoint-2013/ What is different between the SharePoint 2010 and 2013 workflow engines?  Here are a few new features we find most relevant to our clients.  With the 2013 designer, we can now:  In a previous SharePoint 2013 Workflow blog post, I described how DMC onboards new employees using SharePoint.  Now I will show you how to build parts […]

The post Building Workflows with New Features of SharePoint 2013 appeared first on DMC, Inc..

]]>
What is different between the SharePoint 2010 and 2013 workflow engines?  Here are a few new features we find most relevant to our clients. 

With the 2013 designer, we can now: 

  • Query almost anything:   The addition of Call HTTP web service as a designer action extends the reach of workflows without resorting to custom code.  Within SharePoint, an HTTP call can query or change list data even on other sites.  Externally, we can interface with other applications that support a REST API, including line of business applications or public services.
  • Enhance workflow logic:  Workflows created with the 2010 designer tended to be very linear – it was difficult or impossible to handle more complex scenarios.  There are several logic enhancements in 2013 that clear this up.  The big changes are loops (for repeated actions or continuous monitoring of conditions), parallel block completion condition (allows the workflow wait for one action OR another action) and stages (makes it easy to return to an earlier step).    
  • Improve task assignments:  SharePoint 2013 brings more and better options for assigning tasks, collecting responses from users, and customizing the emails. 

In a previous SharePoint 2013 Workflow blog post, I described how DMC onboards new employees using SharePoint.  Now I will show you how to build parts of the same workflow using these new features.

SharePoint 2013 Workflow for Onboarding New Employees

To build the workflow, we first created three lists to store all the data:

  • New employees – custom list used to track the status all new employees and their start date
  • New employee tasks template – checklist of all items that must be completed for a new employee. 
  • Onboarding tasks – standard tasks list with a few custom fields

When each new employee is added to SharePoint, they start the onboarding process which we divided into multiple phases:

  • Future hire – employee has accepted an offer but start date is in the future
  • Pre hire – start is within 30 days, requests for information should be sent out
  • Onboarding – preparation process before start date
  • Start week – activities to be completed in the first week
  • Active employee – follow up activities more than a week after the start date

The progression of an employee through the phases is controlled by a single workflow defined by two workflow Stages.  The first stage copies the checklist items into actual SharePoint tasks tagged with a specific new employee’s name.  The second waits until it is time for the next phase in the onboarding process.  These stages are outlined in the diagram below:

SharePoint REST API

The first step in our workflow is to query relevant tasks from New employee tasks template.  There is no native action for reading all items in a list, so we turn to the new Call HTTP web service action to get data from SharePoint REST API. 

What is a REST service?  It is a method of retrieving data using only a formatted URL.  For an example, look at the URL “http://dev.markitondemand.com/Api/Quote/?Symbol=MSFT”.  The link is structured with Symbol=MSFT at the end.  Clicking it will show you quote data for MSFT (Microsoft).  But change the Symbol parameter to another ticker and you will get a different quote.  

SharePoint’s API allows you to read and update data from a SharePoint Site.  The URL format to get all items from a SharePoint list is: 

http://<site>/_api/web/lists/getbytitle(‘<list title>’)/items

For the onboarding workflow, we need to get all items from the list New employee tasks template and filter the results using two columns as criteria:  the column ‘Active’ and the column ‘Task Stage’.  Luckily the API also has a filter option.  

http://<site>/_api/web/lists/getbytitle(‘New Employee Tasks Template’)/items?filter=Active eq 1 and Task_x0020_Stage eq ‘<current state>’

The final URL outputs data in the following format.  Under d/results we will see one entry per list item. 

JSON Formatted SharePoint API response

To practice using the API, you can create and test URLs in your own site using a web browser.  Here are a few tips to help you along.

  • Use Google Chrome or Firefox rather than IE for testing the API URLs.  This is not a requirement but will make the process easier. 
  • By default, the API returns data in XML format which can be difficult for us to read and work with.  You should switch the format of returned data to JSON by adding two HTTP request headers with Names = ‘Accept’ and ‘Content-Type’, and Values = ‘application/json;odata=verbose’.  These headers tell SharePoint we want JSON.  Download the ModHeader extension to add them in Chrome. 
  • Special characters (e.g. spaces and quote marks) can cause you trouble.  They are encoded by the browser and not always in a way you expect.  I got the smoothest results by creating my URLs in notepad and then pasting directly into Chrome
  • To format the JSON data nicely, try downloading the JSONView Chrome extension. 
HTTP Request Headers for JSON SharePoint API

For a more in depth discussion of the operations available in with the SharePoint REST API, see this article.

Call HTTP web service

Just viewing the data in a browser doesn’t do our workflow much good.  To access the API from Designer, we need to build the same URL as a string variable and pass it to the Call HTTP web service action.

Call HTTP web service from designer

You should also switch the format of returned data to JSON.  To do this in Designer, tweak the HTTP request headers by adding the below name/value pairs to a dictionary object and setting the advanced properties of the Call HTTP web service action (right click on the action–> properties):

Add HTTP Request headers to Dictionary variable
Set properties in Call HTTP Web Service action

Dictionaries and Loops

Now that we’ve got access to the data from within designer, the next step in our workflow is to copy the checklist into actual tasks. 

Call HTTP web service action outputs the variable ResponseContent which contains the entire JSON response.  ResponseContent is a dictionary variable – dictionaries are a new concept in 2013 with several  uses.  To work with them, we’re going to use a few new actions:

  • Get Item From Dictionary – we use this to retrieve data from a specific JSON path.  For our API request, we find the results set under d/results.  To retrieve a specific attribute from the results set, the path is (<index>)/<field name>.   Take a look at the sample output above to see where these values are coming from. 
  • Count Items in Dictionary – used to count all the items in our results set
  • Loop – used to loop through all items in our results set

The steps to create the tasks are:

  • Get the results set from our HTTP call and store it as dictionary responseItems
  • Count the number of items in responseItems and store it as count
  • Create the index variable and set it to zero
  • Loop while index is less than count
    • Get the item GUID of the next item from responseItems
    • Use the item GUID to retrieve details from New employee tasks list
    • Calculate the task due date
    • Create the task
    • Increment index by 1

 

Assign a task

After copying the tasks, the workflow enters the waiting stage.  For some of the phases, we trigger on a certain date, like one month before employee start.  In other cases we trigger the phase by the completion of a task.  With the improved task assignment action we choose to pause the workflow, customize the task email, and automate overdue reminders from a single dialog.   

Assign a task

Parallel block completion

We also need to consider a scenario in which the start date changes, otherwise the workflow might trigger too late.  Here, the parallel block completion condition lets us wait until the next phase OR wait until the list item is changed so that we can recalculate the pause time.  The completion condition is set in the advanced properties of a parallel block. 

Parallel CompletionCondition

Conclusion

Together these new features have enabled us to quickly create a code-free solution.

For help creating workflows to improve the efficiency and effectiveness of your business, please contact us.  We would welcome an opportunity to make your SharePoint or Office 365 initiative a success!

Additional Resources

Learn more about DMC’s SharePoint Workflow services.

The post Building Workflows with New Features of SharePoint 2013 appeared first on DMC, Inc..

]]>
Onboarding Employees using SharePoint Workflow https://www.dmcinfo.com/blog/28274/onboarding-employees-using-sharepoint-workflow/ Mon, 08 Jul 2013 14:08:09 +0000 https://www.dmcinfo.com/blog/28274/onboarding-employees-using-sharepoint-workflow/ Click here to see our latest onboarding workflow solution. Here at DMC, we take great pride in our onboarding process for new employees. We love that all new hires feel welcome and hit the ground running their first week. Have you ever arrived at a job and spent the first few days waiting for system […]

The post Onboarding Employees using SharePoint Workflow appeared first on DMC, Inc..

]]>
Click here to see our latest onboarding workflow solution.

Here at DMC, we take great pride in our onboarding process for new employees. We love that all new hires feel welcome and hit the ground running their first week. Have you ever arrived at a job and spent the first few days waiting for system access? Or for a manager to figure out what to do with you? That doesn’t happen here.

But as our company continues to expand the process is becoming difficult to manage. With each new employee, there are large numbers of tasks to be completed by various members of Management, HR, and IT. We decided to address this issue by automating the process management with SharePoint workflow. So far we’ve noticed two real benefits:

  1. No task gets forgotten
  2. We spend less time tracking down status and more time doing real work

Below I outline our process and how we implemented it using SharePoint.

The Onboarding Process

Onboarding is a long-term process that begins before an employee starts and continues well into their first few months. To model it in SharePoint we created a custom list that tracks the status of each new employee. We add candidates to this list as soon as they accept an offer, and then the SharePoint workflow is automatically started.

New Employees List

From here the process is divided into several time-based phases. Every organization is different, but the following worked well for us:

Onboarding-workflow-process-flow-diagram

At the start of each phase, tasks are assigned to the appropriate person and SharePoint sends an email to everyone involved.  The email includes a link leading directly to a view of their tasks. Users can sort/filter the view at their convenience and mark complete when done.  Additional views allow anyone to see all pending tasks for a high-level perspective.

 

Configurable Onboarding Checklist

There are many small details in the onboarding process, and these details are constantly changing.  So we also created a configurable checklist that allows the business team to update the process on the fly.

This checklist is simply a SharePoint list that contains all tasks for a new employee. It acts as a “template” from which the workflow copies specific details. Below is a sample:

Our template includes a column to mark the task as ‘Active’ as well as fields for task name, assigned to, relative due date, and task phase.  In the future we may add more columns to further differentiate tasks, for example by office location or employee role. 

Now whenever we need to re-distribute work or start tracking a new part of the process, anyone can make the change without going back into designer and modifying the workflow definition.

Building the workflow

We built the workflow in our SharePoint environment using only SharePoint Designer. No custom code – just some clever use of new 2013 workflow features. For a step-by-step of how to build this workflow, check out my next blog: Demonstrating New Features of SharePoint 2013 Workflow Manager.

For help on implementing your own workflow processes with SharePoint, please Contact Us.  We would welcome the opportunity to make your workflow project successful.

Learn more about DMC’s SharePoint Workflow services.

The post Onboarding Employees using SharePoint Workflow appeared first on DMC, Inc..

]]>
SharePoint 2013: Access Denied to Root Site of Web Application https://www.dmcinfo.com/blog/28318/sharepoint-2013-access-denied-to-root-site-of-web-application/ Tue, 02 Jul 2013 12:49:08 +0000 https://www.dmcinfo.com/blog/28318/sharepoint-2013-access-denied-to-root-site-of-web-application/ Recently, I encountered a very frustrating issue with SharePoint 2013. I had a working web application and everything was running fine. After configuring a few sites in my web application, I started getting emails from other users of the site saying that they were getting Access Denied errors whenever they tried to access the root […]

The post SharePoint 2013: Access Denied to Root Site of Web Application appeared first on DMC, Inc..

]]>
Recently, I encountered a very frustrating issue with SharePoint 2013. I had a working web application and everything was running fine. After configuring a few sites in my web application, I started getting emails from other users of the site saying that they were getting Access Denied errors whenever they tried to access the root site collection (ex. https://sharepoint2013/).

I went to that path and was very surprised to find that I, a site collection administrator with Full Control permissions given through the web application user policy, was getting sent to the Access Denied screen as well. After looking around some more, I figured out that only that root site path was throwing the Access Denied error, and that any other path (ex. https://sharepoint2013/default.aspx or https://sharepoint2013/main/default.aspx) was working as expected. I also was able to access Central Administration just fine.

It turns out this problem is a result of the Web Application Authentication settings getting corrupted and can be remedied by enabling and then disabling Anonymous Authentication. This recycles Web Application Authentication settings and clears out the corruption.

To do so, follow these steps:

  • Log into the SharePoint 2013 Central Administration site.
  • Open Application Management.
  • Open Manage web applications.
  • Select the web application that has the problem and open Authentication Providers from the ribbon bar.
  • Open the authentication provider zone that you are using (it is probably just Default).
  • Check the Enable anonymous access option and then Save the Authentication settings. It can take a minute or two to save the settings, so after you click Save just wait for the Authentication Setting window to close.
  • After the Authentication settings window closes and you can see the Authentication Providers window again then try to access your root site again and now you should be able to get to the home page without any Access Denied errors.
  • Now we don't want to leave anonymous access enabled so once again open the authentication provider zone that you are using and now uncheck Enable anonymous access and then Save the Authentication settings.
  • You should now still be able to access the root site of your web application and the issue has been fixed.

Contact us today to learn more about our digital workplace solutions.  

The post SharePoint 2013: Access Denied to Root Site of Web Application appeared first on DMC, Inc..

]]>
Open a Popup Window from a SharePoint Web Part https://www.dmcinfo.com/blog/29667/open-a-popup-window-from-a-sharepoint-web-part/ Thu, 16 Dec 2010 11:12:02 +0000 https://www.dmcinfo.com/blog/29667/open-a-popup-window-from-a-sharepoint-web-part/ Recently as I was creating a SharePoint web part for a DMC client I ran across a problem which really stumped me. At first, I thought what I had was an easy problem to solve: how does one open a popup window from C# in a web part? I did a lot of research regarding […]

The post Open a Popup Window from a SharePoint Web Part appeared first on DMC, Inc..

]]>
Recently as I was creating a SharePoint web part for a DMC client I ran across a problem which really stumped me. At first, I thought what I had was an easy problem to solve: how does one open a popup window from C# in a web part? I did a lot of research regarding the popup window problem and I discovered that the problem was not addressed in the manner which I needed literally anywhere on the Internet. So after a lot of time spent, energy wasted, and coffee drank I finally was able to engineer a solution, and it is a little trickier than expected.

Now I know what you’re thinking “That’s easy, I have been doing that in HTML since 1999.” Well, that’s what I thought too, but it was not quite that easy and requires a little bit of work. Just to review, it is easy to add a hyperlink in HTML which launches in a popup window:

HTML
<a href = "http://servername.com" target = "_blank">Link to text</a>

Now that’s about as simple as it gets in computers, but what about doing the same thing via JavaScript? Well, that is also pretty straightforward:

JavaScript
<script language = "javascript" type = "text/javascript">

    window.open('http://servername.com', 'windowname', 'width=XXX, height=YYY');

</script>

Once again, not too bad right? So if we have a click event procedure in a C# code behind file such as:

C#
///<summary>
/// btn click handler
///</summary>
///<param name="sender">Sender</param>
///<param name="e">Event Args</param>
protected void _btn_Click(object sender, EventArgs e)
{
	//some code executes here

	//launch popup window, BUT HOW?
}

How do we launch a popup window when the web part’s HTML is loaded? I tried several ideas such as rendering the JavaScript code above into the web part’s HTML. However, the JavaScript was rendered well above the HTML for the surrounding SharePoint web page, which caused it to fail. So, obviously, this wouldn’t work, so how exactly does one get this to work?

The answer actually is a combination of C# code and JavaScript. What we need to do is pass the web address in the query string to the page via a Response.Redirect statement, then parse the query string in JavaScript code, and launch a popup window. To do this we must first insert the following code in to our ASCX file for the web part:

JavaScript
<script language = "javascript" type = "text/javascript">
    function getQueryVariable(variable) {
        var query = window.location.search.substring(1);
        var vars = query.split("&");
        var ret = "";
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            if (pair[0] == variable) {
                ret = pair[1];
                break;
            }
        }
        return ret;
    }

    var popupurl = getQueryVariable("popupurl");
    if (popupurl != "") {
        window.open(popupurl, "mypopup_window", "width=500, height=500");

        //cleanses querystring
        if (window.location.href.indexOf("popupurl") >= 0) {
            var posqs = window.location.href.indexOf("?");
            if (posqs >= 0) {
                var refreshurl = window.location.href.substring(0, posqs);
                window.location.href = refreshurl;
            }
        }
    }
</script>

Then we need to do a redirect in the C# file this way:

C#
///<summary>
/// btn click handler
///</summary>
///<param name="sender">Sender</param>
///<param name="e">Event Args</param>
protected void _btn_Click(object sender, EventArgs e)
{
	//some code executes here

	//launch popup window
	string URL_TO_POPUP = "http://servername.com";
        string szQSParameter = "popupurl=" + URL_TO_POPUP;
	string szRedirect = Request.Url.Scheme + "://" +
                            Request.Url.Host + ":" + 
			    Request.Url.Port.ToString() +
                            Request.Url.AbsolutePath;
	if (szRedirect.Contains('?') == true)
	{
		szRedirect += "&" + szQSParameter;
	}
	else
	{
		szRedirect += "?" + szQSParameter;
	}
	Response.Redirect(szRedirect);
}

Doing this makes it easy for our web part to pop up windows from the C# code behind file when needed.

I hope this helps you on your way to developing compelling web parts for SharePoint 2010. We here at DMC are experts with SharePoint and Microsoft technologies, and would love to help you implement whatever solution your business needs.

Don’t hesitate to contact DMC if you need some help on a SharePoint project (we are especially good at helping our clients integrate data from other systems into SharePoint dashboards).

Learn more about DMC’s SharePoint consulting services.

The post Open a Popup Window from a SharePoint Web Part appeared first on DMC, Inc..

]]>