Microsoft Archives | DMC, Inc. https://www.dmcinfo.com/blog/tag/microsoft/ Tue, 23 Dec 2025 16:03:36 +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 Microsoft Archives | DMC, Inc. https://www.dmcinfo.com/blog/tag/microsoft/ 32 32 DMC Earns Microsoft’s Gold Application Integration Competency https://www.dmcinfo.com/blog/18693/dmc-earns-microsofts-gold-application-integration-competency/ Mon, 07 Mar 2022 09:41:34 +0000 https://www.dmcinfo.com/blog/18693/dmc-earns-microsofts-gold-application-integration-competency-2/ DMC is proud to announce the achievement of its seventh Microsoft Gold certified competency for Application Integration. Microsoft awarded this Gold competency in recognition of DMC’s expertise in advanced integration and configuration tasks, which demonstrates DMC’s ability to integrate applications and data running on Azure/Windows servers to increase efficiency and drive business results.  To achieve […]

The post DMC Earns Microsoft’s Gold Application Integration Competency appeared first on DMC, Inc..

]]>
DMC is proud to announce the achievement of its seventh Microsoft Gold certified competency for Application Integration.

Microsoft awarded this Gold competency in recognition of DMC’s expertise in advanced integration and configuration tasks, which demonstrates DMC’s ability to integrate applications and data running on Azure/Windows servers to increase efficiency and drive business results. 

To achieve this certification, four DMC consultants proved their expertise in Microsoft Azure, Windows Server, SQL Server, and C# programming by passing a series of Microsoft certification exams. Achieving this certification reflects DMC’s dedication to providing clients with the most effective solutions to their application integration challenges.

DMC has been a Microsoft Certified Gold Level Partner for more than 12 years. Maintaining a Gold Level partnership requires our Digital Workplace Solutions and Application Development teams to consistently meet Microsoft’s high standards of knowledge and proficiency in Microsoft technologies. 

Rick Rietz, DMC’s Director of Digital Workplace Solutions, recognizes how special this achievement is for a Microsoft Partner.

“Less than 1% of Microsoft partners earn multiple Gold level competencies, and it is extremely rare for a Microsoft partner to earn seven Microsoft Gold level competencies,” Rietz said. “DMC’s continued partnership gives us access to exclusive training, tools, and support — all of which help us to provide the most effective workplace solutions to our clients.”

DMC's Gold level Microsoft Partner competencies

DMC’s Application Integration Services

  • Custom programming and database services
  • Building system interfaces
  • Implementing Azure and Windows infrastructure to provide the foundation for integrating applications
  • Advising on ways to use application development and disparate system platforms to connect business processes

DMC’s Microsoft Certifications

Learn more about DMC’s Digital Workplace Solutions and Application Integration expertise, and contact us for your next project. 

The post DMC Earns Microsoft’s Gold Application Integration Competency appeared first on DMC, Inc..

]]>
Save Money with Microsoft Azure Reserved Instances https://www.dmcinfo.com/blog/18898/save-money-with-microsoft-azure-reserved-instances/ Wed, 01 Dec 2021 17:00:50 +0000 https://www.dmcinfo.com/blog/18898/save-money-with-microsoft-azure-reserved-instances/ In 2020, many companies were forced to make sudden, dramatic, and enduring changes to their IT environments. A global switch to remote work made On-Premises servers inconvenient to access for users, and even more difficult for IT staff to maintain while working remotely. Many companies found that the best solution for these issues was to […]

The post Save Money with Microsoft Azure Reserved Instances appeared first on DMC, Inc..

]]>
In 2020, many companies were forced to make sudden, dramatic, and enduring changes to their IT environments. A global switch to remote work made On-Premises servers inconvenient to access for users, and even more difficult for IT staff to maintain while working remotely. Many companies found that the best solution for these issues was to move the workload to a cloud platform. However, they soon discovered that the ongoing monthly costs were much higher than expected. Microsoft's Azure cloud platform now offers a way for customers like these to reduce their cloud spend by up to 72%  compared to pay-as-you-go options. 
 

Azure Reserved Instances

Microsoft Azure is an enterprise-grade cloud service platform: a complete set of secure application services for computing, storage, data, networking, and app development. Azure Reserved Instances allows companies with stable and predictable workloads to pre-purchase a set amount of Azure usage for time periods of 1 or 3 years. Monthly payments remain an option. Users can also pay the entire amount upfront.
 

Program Flexibility

Azure Reserved Instances is flexible. Customers who find they need to increase the compute power of some of their Azure Reserved Instances can do so without issue, as long as they maintain the same type of reservations. Companies also have the option of cancelling their entire Azure Reserved Instance with payment of a 12% early termination fee.
 
Used strategically, Azure Reserved Instances can greatly reduce a company's overall cloud spend. With an increasing number of workloads being moved to the cloud at an accelerated rate, this tool is something that should be considered closely by all companies.
 
If you would like to learn more about how Azure Reserved Instances can work for your company, please feel free to reach out to Sales@dmcinfo.com. We will be happy to schedule a call to discuss your needs. 

Learn more about DMC’s Microsoft Azure expertise
 

The post Save Money with Microsoft Azure Reserved Instances appeared first on DMC, Inc..

]]>
Configuring Azure AD Authentication for a React/ASP.NET Core 5.0 Web App https://www.dmcinfo.com/blog/19314/configuring-azure-ad-authentication-for-a-react-asp-net-core-5-0-web-app/ Mon, 07 Jun 2021 16:54:06 +0000 https://www.dmcinfo.com/blog/19314/configuring-azure-ad-authentication-for-a-react-asp-net-core-5-0-web-app/ Azure Active Directory (Azure AD) is Microsoft’s enterprise cloud-based platform to secure and manage users. As a Microsoft Solutions Partner, DMC has extensive experience integrating this platform with web applications to ensure security and privacy. This blog will explain how to properly configure a React/ASP.NET Core 5.0 web app to use Azure AD authentication/authorization. Note: This […]

The post Configuring Azure AD Authentication for a React/ASP.NET Core 5.0 Web App appeared first on DMC, Inc..

]]>
Azure Active Directory (Azure AD) is Microsoft’s enterprise cloud-based platform to secure and manage users. As a Microsoft Solutions Partner, DMC has extensive experience integrating this platform with web applications to ensure security and privacy. This blog will explain how to properly configure a React/ASP.NET Core 5.0 web app to use Azure AD authentication/authorization.

Note: This blog assumes you have already created an ASP.NET Core 5.0 API. 

1. Register the Client and Server Apps in Azure

To start, we will register the two parts of our web app in Azure. We will also assign permissions to different roles for our application.

Client App Registration

  1. In the Azure portal, navigate to “App Registrations” and create a new app registration. You my also be asked for a redirect URL. Leave this blank for now (it will be addressed in a later step).
  2. Click into the new registration and select Manage > Authentication.
  3. Under Platform Configurations, select “Add a platform” and add a single-page application platform.
    1. For a redirect URI, use http://localhost/auth.html. This will be the local development redirect URI.
    2. When configuring a production registration, you will need to use https://[productionURL]/auth.html instead.
  4. Under “Implicit grant and hybrid flows,” enable access tokens and ID tokens.
  1. Click “Overview” and copy the value of application (client) ID. It will be used in the next step.

Note: You can have multiple redirect URIs for one site. If you need to deploy your development app to a test site, simply add a redirect URI https://[testSiteUrl]/auth.html to this registration. When configuring a production version of your application, you should set up separate app registrations.

Note: auth.html is necessary because the javascript package we use for Azure AD Authentication automatically includes auth.html in its authentication request. If this package is not used, you are able to choose anything as your redirect URI.

For more on redirect URIs, see the official Microsoft documentation.

Server (API) App Registration

Expose the API

  1. In the Azure portal, create another app registration. Leave “Redirect URI” blank.
  2. Click Manage > Expose an API and select “Add a scope.” This scope will be used to give the client application (not users) access to your API (roles will be used to authorize individual users).

Note: This feature was in preview at the time this blog was written. If this option does not appear, you can edit the app manifest directly.

  1. Name your scope (e.g. Data.Access) and fill out the remaining fields with descriptions relevant to your selected name. Leave the field “Who can consent” as admins only. Then, enable and add the scope.
  2. Under authorized client applications, click “Add a client application.” Select your scope and paste the application ID from the previous section into the field “Client ID.”
Azure expose an api user interface screenshot
Azure expose an api user interface screenshot

Note: this gives our client (React) app access to this scope without consent being explicitly given by a user/admin. To require consent from users, skip this step and review the value of “Who can consent?” in step 4 and change it to include users.

Create Roles

  1. Click into the new registration and select Manage > App Roles.
  2. Add the necessary app roles for your application (I used admin and user). The value will be used by the server application to check if the user has the appropriate role. Select that the role is valid for users/groups.

Note: To assign these roles to users/groups in the Azure portal, navigate to Enterprise applications > Manage > All Applications and find your server app. Click the server app, and select Manage > Users and Groups. From here, you can add the appropriate users and groups for your app.

2. Configure API to use Azure AD Auth

In this step, we will configure the ASP.NET Core backend to use Azure AD Authentication. We will need the following values from Azure to do this:

  • azureAdDomain – can be found in the Azure portal by searching for Azure Active Directory and looking at the Primary domain under Overview > Tenant Information.
  • APIClientId – can be found in the Overview section of the API app registration, under the name Application (client) ID.
  • azureTenantId – can also be found in the Overview section of the API app registration, under the name Directory (tenant) ID.

Note: This section assumes that you have scaffolded an ASP.NET Core 5.0 API.

Configuring the API to use Azure AD Authentication is a relatively simple process. The authentication requests to Azure are handled on the front end, so we just need to configure the API to check that the request is authenticated.

  1. Add the following to appsettings.Development.json (using the values mentioned above):

 

 	"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "[azureAdDomain]",
    "ClientId": "[APIClientId]",
    "TenantId": "[azureTenantId]"
},
  1. Add the following to the beginning of ConfigureServices in Startup.cs:

 

 services
	.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
	.AddMicrosoftIdentityWebApi(Configuration.GetSection('AzureAd"));
	
	services.AddAuthentication(options =>
	{
		options.DefaultPolicy = 
			new AuthorizationPolicyBuilder()
				.RequireAuthenticatedUser()
				.RequireClaim(
			"http://schemas.microsoft.com/identity/claims/scope","[scopeName]"
			)
			.Build();
		});
        

This code will use the values from appsettings.Development.json to authenticate requests (using the values included in a JWT with the request).

Additionally, it sets up a default authorization policy that requires your scope ([scopeName]) for all requests. This is the scope we configured in step 1, which will be used by our client application. This scope is not used to authorize specific users. Instead, it is used to authorize the client application itself. Roles (see step 4) will be used to authorize specific users.

  1. Add the following code after app.UseCors() in Startup.Configure:

 

app.UseAuthentication();
            app.UseAuthorization();

The order of the methods determines when each piece of middleware runs in the HTTP request pipeline.

  1. Add the “Authorize” attribute to any endpoints/controllers you would like to use Azure AD Auth to secure. To authorize for specific roles, use the following syntax:

 

 	    [Authorize(Roles = "[roleName]")]

“roleName” should correspond to the value of the appropriate app role defined on the API app registration. I.e., an app role named Users defined with value Role.Users would have a roleName of Role.Users.

Conclusion

Your API is now integrated with Azure AD authentication! In general, the React app will request tokens from Azure AD, which it will include with requests to our API. The code we just set up will authenticate and authorize requests using the values in these tokens.

Read more about DMC’s Microsoft Consulting Services and contact us today to get started on your next project.

The post Configuring Azure AD Authentication for a React/ASP.NET Core 5.0 Web App 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..

]]>
Dynamics 365 Sales Pro: Get Your Business on Track with Four Months Free https://www.dmcinfo.com/blog/19608/dynamics-365-sales-pro-get-your-business-on-track-with-four-months-free/ Mon, 30 Nov 2020 09:44:23 +0000 https://www.dmcinfo.com/blog/19608/dynamics-365-sales-pro-get-your-business-on-track-with-four-months-free/ Even in today’s unprecedented and uncertain economy, sales are still the number one priority for businesses. To adjust to this new economic landscape, a sudden increase in remote work, and less personal oversight, companies need to create a well-defined sales process. Dynamics 365 Sales Pro helps these businesses establish their sales process, win deals, and […]

The post Dynamics 365 Sales Pro: Get Your Business on Track with Four Months Free appeared first on DMC, Inc..

]]>
Even in today’s unprecedented and uncertain economy, sales are still the number one priority for businesses. To adjust to this new economic landscape, a sudden increase in remote work, and less personal oversight, companies need to create a well-defined sales process. Dynamics 365 Sales Pro helps these businesses establish their sales process, win deals, and track future sales projections.

Features

Dynamics 365 Sales Pro gives SMB users an enterprise quality Customer Relation Management (CRM) tool to help manage their sales processes. Companies can organize leads, opportunities, accounts, and contacts all in a single application that integrates seamlessly with the rest of Microsoft's cloud-based applications.

Microsoft Dynamics 365 Sales Pro dashboard

Image Source

Licensing Offer

While Dynamics 365 Sales Pro offers functionality and capabilities that are vitally important for a business’s success, it is not a cheap license. Especially in our current economic environment, many companies simply cannot afford it. Microsoft recognized this and has come out with a great new offer for their customers. Any new Dynamics 365 users who purchase an annual subscription of Dynamics 365 through Microsoft's Cloud Solution Provider program between now and June 30, 2021 is eligible for four months of free licenses.

If you are interested in taking advantage of this offer or would just like to hear more about Dynamics 365 Sales Pro, please reach out to the DMC CRM team.

Learn more about DMC’s CRM services.

The post Dynamics 365 Sales Pro: Get Your Business on Track with Four Months Free appeared first on DMC, Inc..

]]>
Microsoft Windows Virtual Desktop is Now Available https://www.dmcinfo.com/blog/20880/microsoft-windows-virtual-desktop-is-now-available/ Wed, 02 Oct 2019 12:16:41 +0000 https://www.dmcinfo.com/blog/20880/microsoft-windows-virtual-desktop-is-now-available/ Six months after Windows Virtual Desktops (WVD) went to public preview, Microsoft announced on Monday, September 30th that WVD is now generally available worldwide!  If you are not familiar, Microsoft now provides customers with the ability to host a virtual desktop environment within Azure that will allow users to connect to a guest OS that has been […]

The post Microsoft Windows Virtual Desktop is Now Available appeared first on DMC, Inc..

]]>
Six months after Windows Virtual Desktops (WVD) went to public preview, Microsoft announced on Monday, September 30th that WVD is now generally available worldwide! 

If you are not familiar, Microsoft now provides customers with the ability to host a virtual desktop environment within Azure that will allow users to connect to a guest OS that has been preconfigured with applications mandated by IT.

DMC has already had the opportunity to assist with the implementation of WVD in production for one of our top clients – which is going quite well.

WVD Overview

This technology, which was mastered by Citrix 20 years ago for on-premise environments, is a game-changer now hosted in the cloud. No longer will you need to set up on-premise resources to build & host what was a fairly complex farm needing lots of horsepower (RAM/CPU) and large amounts of storage.

This can all be done within a secure environment in the cloud, which is important, that allows you to use Microsoft services such as Intune, Information Rights Management (IRM), Conditional Access, Sensitivity Labels — in other words, everything that Microsoft has done to make Office 365 and Azure secure, can be leveraged within your secure Virtual Desktops your users are logging into.

Benefits & Features

Let’s break down some of my favorite benefits and features of WVD:

  • WVD can use Azure Active Directory (AAD) as the identity provider. This gives you the ability to use features like MFA and SSO.
     
  • This is one of my favorites — No inbound ports need to be opened! Because it is using “reverse connect technology”, an outbound agent creates a secure outbound connection over TCP/443 into the WVD management environment. Because of this, you do NOT need to allow TCP/3389 (RDP port) on the firewall for your users to connect to their desktops.
     
  • Traditional on-premise RDS (Remote Desktop Services) Roles such as the RDS Gateway, Broker, Licensing and Diagnostics are now provided to you by Azure meaning that you do not need to manage any of it!
     
  • Virtual machines hosting the WVD environment are not exposed to the Internet directly. Again, reverse connect technology allows the VMs to be accessed.
     
  • The service supports multiple OS platforms, such as Windows 10 Multi-Session, Windows 10 Single-session, Windows 7 Single Session and Windows Server 2012 R2 and newer operating systems.
     
  • IT gets full control over software, and businesses will not need to purchase expensive traditional desktops. The only requirement is a device that has an HTML 5 capable browser, which could be a company-owned device or a personally owned device.
     
  • Once logged into the Remote Desktop URL where the desktop is hosted, users simply just need to double-click the desktop that is assigned to them, and they are in (see below screenshots)!

Conclusion

This technology really is a game-changer in the IT world. I’m expecting a good portion of small and mid-size businesses, as well as Fortune 500 companies, to start using WVD over the next 12 months. And with Microsoft’s partnership with Citrix whereby they have announced Day 1 support for WVD, they are getting support from the people that know this technology the best.

If you are interested in starting a WVD deployment at your organization or want to learn more about Microsoft’s Virtual Desktop solution, contact us today!

Tim Johnson
Senior Systems Consultant

Learn more about DMC's Digital Workplace Solution services.

The post Microsoft Windows Virtual Desktop is Now Available appeared first on DMC, Inc..

]]>
Solutions For Common Problems in Outlook 2013 https://www.dmcinfo.com/blog/27694/solutions-for-common-problems-in-outlook-2013/ Tue, 25 Mar 2014 12:30:42 +0000 https://www.dmcinfo.com/blog/27694/solutions-for-common-problems-in-outlook-2013/ In my experience, the most widespread issues that occur for both DMC users and our external customers, happen while using Microsoft Outlook. This is partially due to the fact that Outlook is quite possibly, the most important application and definitely the most used application in the office. Outlook may live locally or in the cloud […]

The post Solutions For Common Problems in Outlook 2013 appeared first on DMC, Inc..

]]>
In my experience, the most widespread issues that occur for both DMC users and our external customers, happen while using Microsoft Outlook. This is partially due to the fact that Outlook is quite possibly, the most important application and definitely the most used application in the office. Outlook may live locally or in the cloud via Office 365, which offers access to Outlook, Word, Excel, and other Microsoft Office tools from anywhere you can get a Web connection and from virtually any device. The main focus of this blog is to have one place to document some of the more common Outlook start up errors. 

The majority of the issues that I’ve fixed have been startup related. Usually, if it’s an error while already inside of Outlook, it’s because you lost the network connection mid-session or your .ost file (outlook mail profile) temporarily became inaccessible. A restart of Outlook usually will fix this. However, it’s the Outlook start-up issues that plague and ANNOY us the most, and a simple reboot of your computer, doesn’t always fix these issues. Nonetheless, definitely try restarting your computer first before trying anything below!

A couple of side notes: While this is more specific to Outlook 2013 running on Windows 8, most of these fixes apply to the older versions as well. Also, these are very specific fixes to the problems I’ve encountered. This blog does not include the obvious, time consuming, and perhaps more risky fixes of completely uninstalling/repairing Outlook, running a scan on your OST file or deleting and recreating your profile from scratch.

Here are some of the most common errors I’ve encountered since I’ve been at DMC:

Problem One: Outlook Not Responding

When attempting to start Outlook, the splash screen comes up; however, your mouse cursor just spins and when clicking anywhere on the screen, it will tell you “Outlook is Not Responding.” Eventually, if you wait long enough, you may get an error that tells you it will close and send an error report to Microsoft. Otherwise, the only thing you can do is kill the outlook.exe process in Task Manager.

This is most likely an add-in issue. Outlook opens checked add-ins (such as CRM, GoToMeeting, etc.) every time it starts. If one of those plug-ins becomes corrupt, your Outlook application will hang.

  1. Open Outlook in Safe Mode. There are two ways to do this.
    1. While holding CTRL, click the Outlook shortcut until it prompts you to open in safe mode.
    2. Type “Outlook /safe” in the Windows Start Menu – Run Application.
  2. Once in Outlook, open the File Menu, click Options, Add-Ins.
  3. Select COM Add-ins and click GO
  4. Clear out all add-in in the list (this disables the Add-In’s) and click OK.
  5. Restart Outlook
  6. If it opens successfully, then you know it was an add-in that was the problem. Follow steps 2-4 above and enable each add-in one at a time (remembering to restart Outlook after each one) to find out which one was the culprit. Once you nail down which add-in it is, reinstall the add-in software. You may need to go to the third party application’s software for tips on doing this.

Problem Two: Outlook hangs on “Loading Profile”

This is probably the most common Outlook issue. When attempting to open Outlook, the splash screen stays static with the status “Loading Profile”. You can try the steps above to fix it; however, it most likely is an issue with a driver or application and not an add-in. So far, I’ve seen two applications/drivers that have been the culprit. The first is Abbyy PDF Transformer, a built-in PDF creator that installs by default with most Epson Scanners. Basically, this comes with the software suite that Epson printers/scanners will install along with the printer driver. The fix here is to simply remove the Abbyy software from your computer if you have it. Or, the second is Built in Graphics Card Driver. You would need to look up your graphics card model and go to the graphic card’s website to find the latest driver. For example, www.nvidia.com for NVidia drivers. If you’ve done this, the fix that I think will take care of this issue involves disabling your hardware acceleration. Follow the steps below to fix the problem. As a reminder, if you are not comfortable working in the registry, always back it up before making any changes.

  1. Run regedit (Win + R ; “regedit”)
  2. Browse to HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common
  3. Create a New Key and name it “Graphics”
  4. Select Graphics, right-click on the right panel and create a New DWORD (32-bit) Value and name itDisableHardwareAcceleration.
  5. Enter Value data as 1

Try to run Outlook 2013 normally now.

Problem Three: Outlook and Lync cannot be run at the same time

When attempting to start Outlook, with Microsoft Lync open in the background, you receive an error, “cannot open the Outlook window. The set of folders cannot be opened. The information store could not be opened”. In both instances that I’ve seen, you can temporally get around this by ending both the Outlook.exe and Lync.exe processes. Then, start Outlook first. Next, open Lync. While you may still get the error above, both programs will function correctly after closing the error. I’ve seen this twice now, and both times the issue required a different procedure to fix it. You may ultimately need to completely uninstall Office 2013 to fix the problem; however, the (hopefully) quick fix here is to just uninstall Lync and reinstall it. Lync is most likely bundled in your Office 2013 suite, so to remove it, you must go to the Control Panel – Programs & Features and click on “Change” to your Microsoft Office 2013 install. Click “Add or Remove Features” and place a red box (not available) next to “Lync.” Click continue, and then reboot your computer. To reinstall, follow the exact same process, except change the Lync status from “not available” to “run from my computer.” Then attempt to start both Lync and Outlook, and hopefully your error will go away. The other option, if that does not work, is to install Lync Basic, which runs as a separate program (links below). Make sure to remove Lync as described above before reinstalling it.
32 Bit 
64 Bit

Obviously, there are plenty of other Outlook 2013 annoyances/bugs that I could write about here, but that would take us up until Christmas….. of 2015 to write. I tried to mention the ones that I’ve experienced most frequently since I’ve started to support Outlook at DMC over the last 5 months. My hope is that someone will stumble upon this blog, and it will help them fix one of the problems above.

Contact us today for more Office 365 solutions. Learn more about our Digital Workplace Solutions team and service offerings.

The post Solutions For Common Problems in Outlook 2013 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..

]]>