Microsoft Perspectives on Microsoft Technologies for the Enterprise Thu, 14 Dec 2017 20:30:10 +0000 en-US hourly 1 Microsoft 32 32 30631638 Copyright © Microsoft Community 2011 (Microsoft) (Microsoft) 1440 Microsoft 144 144 Perficient is proud to be partnered with Microsoft Microsoft Microsoft no no Sitecore Symposium 2017: Sizing Sitecore Deployments on Azure Thu, 14 Dec 2017 20:26:08 +0000 This session was lead by Ciaran McAuliffe from Sitecore. He talked about several things that impact your monthly Azure bill, how to make sure you are not over paying for services you don’t need, and getting enough server for a performant website. Here are my notes from the session:

    • Data Center Pricing
      • Not the same for every data center
      • Can get a discount with a Microsoft volume license
    • Data Center Availability
      • Not all data centers have all sitecore services
    • ARM Templates
      • Have a default topology but can be changed
      • Make sure your topology matches your needs
    • Sitecore License
      • Can limit what options are available for scaling
    • SQL Server
      • Costed by
        • DTU (data transactional unit)
          • A mix of ram, cpu, i/o
        • Storage amount
      • This is an elastic pool that can automatically scale up and down
      • Not recommended for session state management
    • Azure Search
      • Costed by
        • Storage
        • Number of index nodes
        • Queries per second
        • Search units
          • Must be a divisor of 12
          • A big cost jump between levels
    • Redis Cache
      • Costed by
        • Memory
        • Number of keys
        • Throughput
      • Recommended for session state management
    • App Insights
      • Costed
        • Per GB of data retention
        • Per GB of data exported
      • Not available in all data centers, so it can have latency getting to the nearest data center
        • You must also ensure any liability for data leaving a country if relevant
    • Calculating requests per second
      • Lots of online tools
      • Guessing can cause you to pay more money for compute power you do not use
      • Calculate based on the peak requests per second, not the average
        • Calculating based on the average will cause your site to not respond well during peak times
    • Performance
      • Create web tests in visual studio to get load testing results
      • Respond the results with changes to your environment
        • Be sure to enable caching within Sitecore for common components such as menus, nav bars, and footers.
        • Scale down your environment if caching is able to give you the performance you need.
    • Latency
      • Make sure your web tests take into account network latency and location
      • A test that is fast for you may be slow for your users if they are not close to the data center
        • This can also help you decide to put your content in multiple data centers

I didn’t hear a clear reason why to use redis cache for session state management over sql server. If you have any thoughts on this, leave me a comment below. I’d love to chat with you about it.

Find the rest of my notes from Sitecore Symposium 2017

]]> 0 37132
My Experience with the Coveo for Sitecore Dev Certification Exam Wed, 13 Dec 2017 17:55:28 +0000 I have recently passed the Coveo for Sitecore 4.0 Cloud Certified Developer Exam and I’d like to share some of my experience here.

It’s a three-hour exam but you probably won’t need that much time. It took me around two hours. You can choose to pause the exam and finish it later.

There are 90 multiple choice questions in total, and the passing mark is 70%. According to the exam guide, you can and are recommended to:

  • Install and experiment with the latest release of Coveo for Sitecore 4.0 with Coveo Cloud before taking the exam
  • Refer to the Coveo for Sitecore 4.0 developer training PDFs
  • Refer to the Coveor online documentation
  • Refer to a working instance of Sitecore with Coveo for Sitecore 4.0 already integrated

That means the exam is ‘open-book’, at least for now. That does Not mean it is an easy test. A good number of the answers don’t live directly in the PDFs and you may not even know where to find them online if you aren’t familiar with Coveo or aren’t well prepared.

Here is what I did and would suggest you do in order to get a good score on the exam:

  • Pay attention during the training session and get at least the bulk of the learning in
  • Read patiently through the 400-page training PDF before the exam
  • Have the working instance of Sitecore with Coveo integrated on the side while reading the PDF so you can refer to it/experiment with it
  • Check out the related links in the PDF and at least skim through their content
  • Check the online documentation whenever you come across concepts you don’t quite understand

I attended a live training session provided by Coveo; you can also attend a training course found here. After taking the training, you will receive a unique free exam link via email, which never expires. You do have only one attempt per link and a retake costs US$500. The trial edition Coveo you used during the training does expire but you can probably get an extension by contacting your Coveo account manager or Coveo support.

Be sure to take a look at this site, where you can find important information on the exam including the Topics Covered:

“The certification exam covers many aspects of the Coveo for Sitecore solution including installation, upgrade, features, pricing, architecture, modules, scaling, configuration, fields, search queries, debugging, Coveo Cloud Platform, Coveo Search API, external content, Underscore.js, Coveo JavaScript Search Framework, UI components, resources, and more.”

Thanks, and good luck! 🙂

]]> 0 37158
Office 365 – Microsoft Teams Adds Calling Capabilities Wed, 13 Dec 2017 15:08:39 +0000 Yesterday Microsoft announced the availability of new calling capabilities in Teams, including PSTN dialing, call history, hold/resume, speed dialing, call transfer, voicemail, and many more features. This follows Microsoft’s announcement at Ignite 2017 that Teams will replace Skype for Business as the primary communications tool in Office 365, and adding these calling capabilities moves us one step closer to that goal. In this post, I’m going to cover how to enable incoming calls to the Teams client as well as some screenshots on how the features look today.

First, in order to use the new calling capabilities in the Teams client, you will need Phone System and Calling Plans available and assigned to users in your tenant. This follows the same requirements needed for Skype for Business. If a user is already assigned these licenses and is configured with a phone number in Skype for Business, the functionality should be available in the Teams client. Of important note, hybrid voice is not supported in Teams, and Microsoft advises customers not to change any of the policies to receive calls in Teams. This will cause service interruptions. Federated calling is also not supported in Teams, meaning you cannot place Teams audio calls to other tenants or companies. Of course, these two provisions are subject to change as Microsoft continues to improve the service and enable new functionality.

Once the licensing is assigned, the user should see a new Calls tab available on the left side. Inside the Calls tab are sub-menus for viewing your contacts, call history, and voicemail along with a dial pad for placing outbound PSTN calls:

Voicemails are listed with the name/number, duration, date, and time. When selected, the voicemail will expand with a play button, playback speed menu, and a transcription of the voicemail (which is surprisingly accurate so far):

Next, incoming voice calls need to be routed to the Teams client. This is controlled via a Teams interop policy that is assigned to each user. This allows a controlled, staggered approach to rolling out PSTN calling to users to avoid potential interruptions. Here are the Teams interop policies available in my tenant:

The default Global policy does not allow end users to override their preferred client for calling and chat, and the default clients for each function is set to Default, which I assume is what the administrator will eventually set in the tenant. For now, Default means the Skype for Business client. Despite which policy is assigned, a user that has the correct licensing can always make outbound calls from the Teams client. For my testing, I assigned myself the AllowOverrideCallingDefaultChatTeams as this is the only policy that allows the end-user to change their preferred client. If none of these policies suit your needs, you can create your own using the New-CsTeamsInteropPolicy cmdlet available in Skype for Business Online PowerShell. Whether you are assigning a pre-made policy or creating your own, use the Grant-CsTeamsInteropPolicy cmdlet to assign the policy to a user.

Once I assigned the interop policy, the Teams client needs to be configured as the default calling application. If you click on your user icon in the bottom left, then Settings, then Calls, you will have several options for controlling your calling experience, such as simultaneous ringing, changing voicemail greeting, and setting the default application for incoming calls:

With Teams client select as my default app, I placed a call to my number. The incoming call window appeared in the bottom right corner of my screen with a purple Answer and red Decline button:

After answering the call, I have several in call options, including mute and hang up as well as hold, transfer, and a keypad that are available underneath the three dots or ellipses:

Clicking the gear icon in the upper right allows me to change my default audio and speaker devices:

For a first release, the options available for calling in Teams is looking really nice. I did not test and see if incoming calls from an auto attendant or call queue would function in Teams, and I have not seen any documentation or other information around this yet. As for missing features, I do not see the ability to call into your voicemail from the Calls tab to change your voicemail greeting. This only seems to appear within the Settings > Calls window. Second, there is only one option for transferring a call, I do not see options for a consult transfer. Third, from a few comments I’ve seen so far, incoming calls will not ring to third-party certified IP phones. This is on the roadmap for next year.

Microsoft Teams Blog: Intelligent Communications Takes the Next Step with Calling in Teams
Quick Start Guide: Configuring Calling Plans in Microsoft Teams

Did you find this article helpful? Leave a comment below or follow me on Twitter (@JeffWBrown) for more information on Skype for Business and Microsoft Teams.

]]> 0 37142
[Guide] Modernize Your Digital Omni-channel Contact Centers Thu, 07 Dec 2017 18:49:32 +0000 The marriage of traditional customer communication channels like phone calls and emails with modern, digital channels such as social media, mobile apps, and AI bots has created new opportunities and venues for customers to interact with businesses.

This increase in customer touchpoints can lead to more sales and brand loyalty, but it also gives businesses more opportunities to miss the mark on providing consistent, on-brand customer service experiences. You don’t have to dig far to find examples of organizations failing to provide the optimum level of customer service on Twitter or Facebook.

How can you make sure your business is providing the right message, to the right customer, at the right time, via the right channel?

Organizations are looking to technology to help address the challenge of providing consistent customer service across digital communication channels. Research firm Gartner expects that “through 2019, an ecosystem containing at least four types of product and vendor will be required to build the ideal customer engagement center, the core of which will be an intelligent system for CRM case management.”

In this guide, we’ll explore what these customer engagement centers, or omni-channel contact centers, can do to manage your customer service experience, and why multiple products – tied together with Microsoft Dynamics 365 – can help you deliver the ideal omni-channel contact center.

]]> 0 37121
Create Interactive Digital Customer Experiences with Sitecore Mon, 04 Dec 2017 17:35:32 +0000 As the volume of digital commerce increases, it becomes more and more critical to create and deliver excellent digital customer experiences. Consumers are changing the way they shop, which forces businesses to evaluate their digital storefronts. Cyber Monday recently brought record-breaking online sales totaling $6.59 billion, highlighting consumers’ shifting habits.

Gone are the days when a company simply needed a warm ambiance and smiling employees to merit a positive reputation. As technology continues to improve, consumer expectations continue to increase. An outdated or confusing site quickly causes customers to move on to the next option. This digital relationship that now exists has forced businesses to prioritize online consumer experiences.

Providing a positive digital experience is now essential to ensure that consumers are satisfied and have a favorable image of your business.

Perficient Digital and Sitecore have partnered to create beautiful, interactive digital customer experiences. Check out some of their recent projects in the video below:

Are you providing consumers with a memorable digital experience? Comment below with your ideas or questions!

]]> 0 37050
Maximize Your Healthcare Community Outreach with Dynamics 365 Fri, 01 Dec 2017 15:49:14 +0000

As healthcare providers resolve privacy and compliance challenges, they are increasingly looking for opportunities to build and improve relationships with the community. However, many healthcare providers struggle to launch outreach programs that can manage and track interactions within a cost effective solution.

Perficient’s Healthcare Community Outreach solution on Microsoft Dynamics 365 can help. Healthcare Community Outreach allows you to quickly create campaigns to promote healthcare events through email, social media, and text messages. You can also allocate funds, assign resources, maintain communication channels, track follow-up activities, and measure outreach effectiveness.

Perficient is a leader in the custom development of healthcare solutions. Contact us for a demo of Healthcare Community Outreach.

]]> 0 37048
Why Quality Sitecore Content Authoring Matters to Your Business Fri, 01 Dec 2017 15:00:52 +0000 Many factors play into a successful Sitecore implementation, but having a high quality content authoring experience is one that stands out. Because content authoring is such a fundamental, day-to-day task in Sitecore, it is crucial that the authoring and editing experience is consistently great. I’ve written before about how to improve the Sitecore editing experience, so now I am looking at why it is important for your business to invest in a well-built, high quality content authoring and editing experience.

A quality content authoring experience is the culmination of many things working well together:

  • a robust Experience Editor, free of errors and frustration
  • an intuitive information architecture, which leads to a discoverable and searchable content tree
  • permissive user roles and security settings that balance user freedom with tenant security needs

Doing all of these things well greatly contributes to happier content authors, more productive work being done, less time wasted, and content getting in front of customers quicker.

Enable Content Creativity, Ensure Brand Consistency

Creating and placing content for a webpage generally ranges between two extremes: rigid design and flexible freedom.

Rigid design limits how much of the page design content authors can affect. At a minimum, content authors will fill in predefined fields (titles, body text, images) to create content – as if filling out a form. These rigid fields are validated and used in components, and components are limited to certain regions of a page. This ensures that content authors cannot “break” a page or design by placing content where it shouldn’t exist.

Flexible freedom opens up almost all aspects of a page design (including layout). Content authors will typically have to use Sitecore components to create a page design from scratch, then use dynamic placeholders to add components to build up a structure and content.

Sitecore is capable of implementing either of these two extremes. In most cases, a great implementation falls somewhere in the middle. By striking a balance between rigidity and flexibility, content authors can create all the content they need without fear of breaking existing design rules.

Rigid design ensures your brand design remains consistent. Flexible freedom allows for creativity in content choices. If more components need to be implemented in a rigid design, or pages fixed because of errors in flexible freedom, developers, testers, and dev-ops need to be involved. Striking the correct balance during initial implementation is worth the investment to minimize the number of times these expensive resources are involved in day-to-day content updates.

Reduced Training Needs (or: Lower the Barrier for Entry)

Training costs money and time.

A well-designed, balanced authoring experience lowers the barrier to content creation. By having a capable-but-unbreakable Experience Editor in Sitecore, new content authors can come onto the platform with minimum training. While I would not advocate skipping training (this is a big no-no), providing a set of “quick start” instructions into your authoring experience is a feasible option when the whole system is well built.

Content authors will also spend less time reading through documentation to accomplish a task with a well built authoring experience. While documentation is a requirement for all Sitecore implementations, an intuitive and easy-to-use Experience Editor and well designed content tree will reduce (or ideally remove) the need for extensive documentation. This saves in more ways than one – time spent writing documentation and time spent reading documentation. Allowing content authors to get into Sitecore, make content updates, and get out quickly adds up to time saved and quicker time-to-market for business messages, content updates, and product changes.

The easier a content authoring system is to use, the greater the number of people that can partake. Technically-inclined users may have no problem writing or editing HTML snippets, but this raises the price (both monetarily and technically) for the role of a content author. By comparison, a simple-and-robust “what-you-see-is-what-you-get” authoring experience allows less technically-inclined users to use the system and confidently accomplish the same tasks as more advanced users.

Fewer Errors Going to Production

Technical errors in production are never fun. Errors caused by content are egregious.

A quality content authoring experience will never allow content errors to bring down a webpage (or a website). At worst, content might be displayed incorrectly, but there should never be a server error (HTTP 500) or “yellow screen of death” message displayed. A solid Sitecore implementation won’t just gracefully handle these errors on the website, it will actually validate all content going into Sitecore to ensure it is displayed in the right places in the correct ways.

Less Time Wasted Correcting Errors

Mistakes are part of being human. Even with a well-validated authoring experience, sometimes errors will make it to production.

Automated validation in Sitecore only goes so far. Sitecore cannot automatically validate the context of your content (example: “Save on cat treats!” being presented on a page about dogs). The same authoring experience that tried to prevent an error can also help it get fixed. Robust search tools can help editors quickly find erroneous content. Well-designed item templates and fields will allow errors to be fixed directly in the content tree, which saves time. An Experience Editor with appropriate editing controls can quickly swap content or change components if they were selected wrong.

Content Gets To Customers Quicker

Content on the web moves faster than ever before, largely thanks to social media. Opinions change. Fads come and go within weeks, not months.

Quickly getting content in front of customers is more important than ever before, and the content authoring experience is crucial to this. Entering content, uploading media, placing it on a page, reviewing the final content, pushing through workflow, QA testing, and finally publishing – these are all steps that must happen before a customer ever interacts with your latest and greatest ideas/sales/video/etc. Having content authors get stuck at the first step – entering content – is not a great start to the rest of the process. Doing content entry right the first time ensures that review processes don’t have to kick back issues and have content re-authored multiple times before going all the way to production.

]]> 0 36975
Sitecore Bootcamp for Developers: Wrapup Mon, 27 Nov 2017 14:00:10 +0000 Want To Learn More?

Welcome back to Sitecore Bootcamp for Developers! Thank you for following us along on this journey! We hope that you found this series helpful in starting your Sitecore journey.

If you are just joining us, please go back and read the introduction where you’ll also find links to each other part of the bootcamp.

Here are a few places to look if you want to learn more about Sitecore:

Thanks again for reading, and be sure to leave me comments or questions, I would love to chat with you about Sitecore.

Created by: Eric Sanner, Brandon Bruno, Alan Tibbs

]]> 0 36758
Sitecore Bootcamp for Developers: Part 6 Wed, 22 Nov 2017 13:30:16 +0000 Troubleshooting

Welcome back to Sitecore Bootcamp for Developers! In this last part, we’ll look at some common problems you may encounter while installing and setting up Sitecore 8.x.

If you are just joining us, please go back and read the introduction where you’ll also find links to each other part of the bootcamp.

Problem: Cannot build solution. Invalid reference error.

Details: Ensure the following references exist

  1. Castle.Core
  2. Glass.Mapper
  3. Glass.Mapper.Sc
  4. Glass.Mapper.Sc.Mvc
  5. Sitecore.Client
  6. Sitecore.ContentSearch
  7. Sitecore.ContentSearch.Linq
  8. Sitecore.Kernel
  9. Sitecore.Mvc
  10. System.Web.Mvc

Solution: Uninstall NuGet packages and reinstall.

Solution: Add references to NuGet packages.

Problem: Error loading assembly when viewing site.

Solution: Ensure that the assembly version defined in the web.config matches the deployed dll file in /bin

Problem: xDB or analytics error

Solution: Install MongoDB

  1. Download MongoDB
  2. Run MongoDB Installer
    1. Accept Terms
    2. Complete Install
  3. Create a Windows service for MongoDB
    1. Follow the directions on
  4. Note
    1. The pieces of Sitecore that use MongoDB are enabled by default, but can be disabled.
    2. MongoDB may not be required in production.

Problem: Permission Errors

  • Icons missing from Sitecore dashboard
  • Cannot create a layout
  • Server Error in ‘/’ Application (usually in dialogs)
  • Cannot upload files to the media library

Solution: Create missing directories and set writable permissions

  1. Create directories in ~/wwroot (if any do not exist after installing Sitecore)
    1. ~/Website/temp
    2. ~/Website/sitecore/shell/applications/debug
    3. ~/Website/sitecore/shell/controls/debug
    4. ~/Website/sitecore/shell/override/debug
    5. ~/Website/sitecore modules/debug
  2. Make directories writable in ~/wwwroot (if any are not writable after installing Sitecore)
    1. ~/Website/temp
    2. ~/Website/sitecore/shell/applications/debug
    3. ~/Website/sitecore/shell/controls/debug
    4. ~/Website/sitecore/shell/override/debug
    5. ~/Website/sitecore modules/debug
    6. ~/Website/app_data
    7. ~/Website/layouts
    8. ~/Website/upload
    9. Give modify permission to any of these accounts that exist
      1. IUSR
      3. IUSER_<machinename>
      4. IIS_IUSRS

Problem: Http error in Sitecore admin area


  • You were logged into Sitecore
  • Your session timed out
  • You log back in
  • Sitecore tries to return you to where you were with an escaped string in the address bar

Solution: Remove everything in the address bar after /sitecore

Problem: Error in Experience Editor “Failed item resolve … does not contain a property that represents the item ID”

Solution: Add the Guid ID {get, set} property to the model.

Be sure to follow me through the entire month of November 2017 and follow along with each part as they become available. Thanks for reading, and be sure to leave me comments or questions, I would love to chat with you about Sitecore.

Created by: Eric Sanner, Brandon Bruno, Alan Tibbs

]]> 0 36755
Customizing Your SharePoint Form with PowerApps is Live Tue, 21 Nov 2017 19:56:06 +0000 What We’ve All Been Waiting For.

Following the team’s Q3 update, it was only a matter of time before they turned on the power for a long awaited piece of functionality. Unfortunately, it’s only rolling out to first release tenants, but that shouldn’t stop people from starting to get their hands on it. After Ankit posted last Wednesday about updates going live, I jumped on my own tenant and started getting my hands into it.

Though not yet fully released, I’m pleased to announce it looks great, and works seamlessly within the SharePoint layout. For those that have done modern SharePoint development, It’s similar to the property pane of the SharePoint Framework (SPFX).

I’ve laid out a basic guide for how you can begin customizing your forms. The screenshots below show just how easy it is.

Customize your Forms with PowerApps

Using the modern experience, I’ve created a new list with some simple fields added for demo sake. I’ll go ahead and select PowerApps > Customize Forms, which is where the new hook is. This will take you to PowerApps online.

PowerApps – Editing the Template Form

PowerApps will setup a basic form for you to start from. You’ll notice that the look is a little different from a normal PowerApp. If you are not familiar with this view, you will notice on the left an outline view of the components you have on your form. You can access the form fields from here, as well as their sub-components such as the input box, label, etc.

Though the design looks a little different than the normal PowerApp style, all the standard customizations are still available. Here, I’ll focus on automatically calculating the Title field and setting a default value for the Request Date field. This can be handled with some simple changes to the form field properties which we will get into next.

Unlock your Form Fields

In order to access some of the inner parts of the form fields, you have to “unlock” the field. Select a field that you would like to edit either from the left-hand navigation or by clicking on it, then on the right under the “Advanced” section, unlock the title field and the requestDate fields.

NOTE: unlocking these properties can cause different behaviors that one might not expect if not familiar. Microsoft has a great guide on the form control for reviewing these properties if you would like to learn more before diving in.

Changing the Defaults

The two changes we’ll make will be dependent on each other and I’ll explain why inline.

  1. Request Date – We will set this field’s default to today’s date. By having the property unlocked, we can now change the DefaultDate property to the function Today(). This can either be accessed from the formula bar above, or the property pane on the right.
  2. Calculated Title – Instead of requireing users to manually fill in the title, let’s auto-calculate the field from the selected field values. I’ve selected the Title field and have set it to the following:
    "Request for: "&User().FullName&" ("&DataCardValue3.SelectedDate&")"


    Using some simple concatenation, this allows me to access the current user’s full name and the requestedDate value.

Saving and Publishing to SharePoint

Saving and publishing to SharePoint is as easy as ever. Go to File > Save, and after saving you’ll see the publish option appear. Select that and you are all set! You can now go back to your list and go to the new form. You will see it now embeds nicely into a side-pane for the list. No longer do you have to use a page viewer web part to recreate this functionality—the  platform handles it automatically.

and the final list form display

What’s Next?

Hopefully this guide is helpful for any individual interested in reviewing this long awaited functionality. Following this post, look forward to more details coming out about how you can make the PowerApps custom form work for you and how integrating with Flow can continue to handle ever-growing use-cases.

]]> 0 36971