"Mr Sharepoint" is a blog based on RSS for everything related to sharepoint, it collects its posts from many sites in order to facilitate the updating to the latest technology
Thursday, November 30, 2017
Latest AWS IoT Services to Address Device Management and Security
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
Changes in the Windows Insider Program with Redstone 4
by Richard Hay via IT Pro - Microsoft Windows Information, Solutions, Tools
Amazon Brings Alexa Voice-Command Technology to the Workplace
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Product Review: CloudBerry Ultimate Backup
by Michael Otey via IT Pro - Microsoft Windows Information, Solutions, Tools
Enable the Password Reset Option in Exchange Server 2016
by Karim Buzdar via IT Pro - Microsoft Windows Information, Solutions, Tools
Using Security & Compliance Labels for Content Rollup in “Modern” SharePoint
It’s almost the normal course of events that we SharePointilists have to bend SharePoint’s capabilities to our whim to accomplish business requirements. This post is about one of these sort of bastardizations of the platform which allow us to get something important done. I’m writing it up because it’s what I do, but also to get some SharePoint Product Group eyeballs on it to make sure it’ll stand the test of time.
When I first saw how Security & Compliance labels worked, this is exactly the sort of thing I thought it might enable well, but I’ve not seen anyone try something like this. That is, I sort of ignored the words “security” and “compliance” and saw a overarching way to label content for knowledge management in Office 365.
Here’s the basic scenario:
- We have a set of “modern” sites – let’s call them Group A, Group B, etc. – which are effectively subsites to a Communications site – let’s call it the Department Site.
- We want to be able to roll up content from the Group sites where a certain piece of metadata has been applied to mark the document as Important.
- We don’t know how many Document Libraries or Content Types might exist in the Group sites, since people are likely to use the sites to get work done, adding content repos as they need them over time.
- We’d like to stick to “out-of-the-box”. It’s tempting to want to go and write some code in a custom SharePoint Framework Web Part, but that doesn’t necessarily cover some of the other requirements here.
Ideally, we’d have a great Information Architecture in place using the Content Type Hub, but usually we don’t have the luxury for that across a large organization – the discussions run on far longer than the requirement dictates we act. Plus, number 3 above. Plus, the Content Type Hub is way long in the tooth and really isn’t an effective tool in the “modern” era. Reasons for this include:
- Management of Content Types is rudimentary, at best
- The new flat site topology (subsites are now considered the “spawn of the devil” – to me this is throwing babies out with bath water) means that it’s MUCH harder to share Content Types across “modern” “sites” (which are now Site Collections)
- Content Types have to be published to all Site Collections, which means that a large organization is likely to create an incredibly large set of Content Types – i.e., a real IA mess
Given the scenario and the new capabilities in the Security & Compiance center with labels, it seemed to make sense to try:
- Creating an Important label. This label will effectively be used only as a tagging mechanism.
- Publish the label only to the “modern” “sites” which actually need item. The requirements for one Department may well be different than those for other departments in a large organization. Of course, we can also choose the publish to all site. Even better, the label can be published for use in Exchange, SharePoint, OneDrive, and Groups! In other words, it transcends the normal bounds of SharePoint.
- Any document in any of the target sites can have the label applied once the label is published. (This is supposed to take up to 24 hours, but in my testing, it was less than one hour.)
- Use the Highlighted Content Web Part (HCWP) in the “modern” Department Site to display content which has the Important label applied.
The hard part was figuring out the mechanics of all of this. We don’t want to just start plopping labels into Security & Compliance willy-nilly, for – as noted above – their reach and scope can be quite wide.
The other thing that wasn’t at all apparent was whether the label data was available as a managed property for filtering in the HCWP. There were some complications here:
- What managed property might contain the data? Was there actually a managed property to serve this purpose?
- Would the managed property be available for filtering in the HCWP? The documentation for the HCWP says that only managed properties which are searchable would be available.
Well, it turns out there is a managed property: it’s called ComplianceTag and it’s mapped to the crawled property ows_ComplianceTag. I’ll admit I didn’t figure this out – someone at my client clued me in. The only references for this that I’ve found are developer references, so it wouldn’t be at all obvious to a normal person setting up filtering in a HCWP.
Based on the settings we see above, it’s not “searchable”, but read on…
Create the Label
You have to have access to the Security & Compliance center for this, which is in the Admin center. This access is often limited to IT, so yes, you’ll have to have one of those conversations. Once you are there, click on Classifications, then Labels, then Create a Label.
You’ll give you label a name and probably two descriptions: one for admins and one for users. It makes sense that they might not be the same.
Next, we can decide if we want to specify any retention policies for this label. I’m going to keep this simple and gloss over that part – leaving retention off for this label.
Finally, we review and save.
Now the label is in place, but it isn’t available anywhere yet, thus we need to publish it, and there’s a convenient button for that: Publish label.
Publish the Label
First we make sure we’re dealing with the right label(s).
Next, we decide where we want top publish the label. The default is EVERYWHERE. In a smaller organization, that might make perfect sense.
In a larger organization, you may want to publish to very specific places, and the capabilities here should have you covered.
When we publish the label, we’re actually creating a new label policy, and we have to give it a name and optionally, a description.
Finally, we review the settings and publish. Note the important message at the top of the screen: It will take up to 1 day for labels to appear to your users. Labels will appear in Outlook and Outlook web app only for mailboxes that have at least 10 MB of data. As I mentioned, it took only less than an hour in my tenant, but clearly it can take longer.
Apply the Label
Once the label is available where you’ve published it, you can add it to content. The nice thing about this, is that applying a label is no different than working with any other metadata; the label capability is simply there in the Properties panel for each list item. Yes, this works the same in lists and libraries. Note that here I’m applying a the Final label because I didn’t want to wait for the Important label to proliferate.
Retrieve the Items
My items and documents with labels were indexed overnight (yes, indexing can still be problematic for these things), and I can now do a search with “ComplanceTag:Final” and retrieve them in the “classic” search center…
…and in the “modern” search results. Note that the list item is not displayed here – to me that is a bug.
Add the Highlighted Content Web Part
Finally, let’s display this content in our Department Site using the HCWP. Edit a page and add the HCWP to it. In the settings, we need to choose All sites, as it’s the only way to reach across Site Collections.
In the Filter and sort section, choose a Managed property filter and set it to use the ComplianceTag and your specific value.
And voila! You’re displaying the content you want in a “roll up”.
Caveats
- The Source in the HCWP has to be All Sites – which could become inefficient over time. There’s no option currently to specify a site or a library in another site.
- Because of the above, we can add a SitePath filter for sites which contain something specific in their path. Not a great method, but it should suffice until we can create a Hub Site with its own Search Scope (assuming the Highlighted Content Web Part) . Alternatively (and perhaps in this case preferably), we can add a Highlighted Content Web Part per Group site with the specific URL as a filter.
- The display is limited to these columns: DocType, Title, Modified, Modified By.
- We can’t rename the HCWP, so we’re stuck with whatever title it gives us. Adding a Text Web Part above each of the HCWPs could be a workaround.
- The documents displayed come from the search index, and as with my experience testing this, that index can take a while to populate. So people who label their document as Important (or Final) and attempt to search for it or see it in the Highlighted Content Web Parts will not see that content until the index catches up. This is an indeterminate period of time in SharePoint Online, and often creates a lot of frustration.
- This does not scale as your content corpus grows. I’d like to think that the HCWP will gain new capabilities over time which will help us with this, just as with the Content Search Web Part and the Content Query Web Part before it.
Summary
So there you have it – basically a cheat to enable knowledge management using Security & Compliance capabilities. I think it’s truly powerful, as it transcends SharePoint alone and can work across Office 365 to a large degree, but I’m not sure if I’ve stumbled on something here which will fall apart if Microsoft makes changes to the way all this works. Stay tuned to this post and I’ll update it if I find out more.
by Marc D Anderson via Marc D Anderson's Blog
Windows 10 in Use on More Than 600 Million Active Devices
by Richard Hay via IT Pro - Microsoft Windows Information, Solutions, Tools
When to Generate SQL Server Statistics Automatically
by Tim Ford via IT Pro - Microsoft Windows Information, Solutions, Tools
After Decade of Data Center Consolidation, US States Report Mixed Success
by Wylie Wong via IT Pro - Microsoft Windows Information, Solutions, Tools
Wednesday, November 29, 2017
Amazon Focuses on Machine Learning to Beat Cloud Rivals
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
New AWS EC2 Instances Target Data-Intensive Cloud Workloads
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
Configure an Email Disclaimer in Exchange Server 2016
by Karim Buzdar via IT Pro - Microsoft Windows Information, Solutions, Tools
What Happens If We Tame Google, Facebook, Amazon and Apple?
Savill's FAQs: How Hyper-V and Azure Stack Differ
by John Savill via IT Pro - Microsoft Windows Information, Solutions, Tools
Savill's FAQs: From Azure Fabric to Project Honolulu
by John Savill via IT Pro - Microsoft Windows Information, Solutions, Tools
Understanding Database Options Governing Statistics Creation
by Tim Ford via IT Pro - Microsoft Windows Information, Solutions, Tools
An Introduction to Distribution Statistics in SQL Server Part One: Understanding Database Options Governing Statistics Creation and Updating
by Tim Ford via IT Pro - Microsoft Windows Information, Solutions, Tools
Apple Mac Software Has Login Flaw That Puts Data at Risk
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Banks at Risk From Rising Cyberattack Sophistication, SWIFT Says
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Tuesday, November 28, 2017
New Partnership Brings SAP HANA Enterprise Cloud to Azure
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
WeWork Buys Meetup to Bring People Together Outside of Work
by via IT Pro - Microsoft Windows Information, Solutions, Tools
Excel Made Everyone an Analyst But Needs to Keep Up
Review of Lanteria HR Time and Attendance module running on SharePoint
Product analysis by Vlad Catrinescu – requested by Lanteria, but thoughts are my own.
Something that all the enterprises and small businesses in this world have in common is they need to manage their employees, or as we call it, human resources. There are tons of HR Management systems out there, however one of the most popular goals of IT departments across the globe in the past few years was to integrate systems together, and get the most out of the systems they are already paying for. With over 300,000 organizations across the globe using SharePoint daily, it’s no wonder that Lanteria has created an HR Management Solution running on Microsoft’s popular platform. While Lanteria offers a full HR Management suite containing multiple modules, in this blog post we will focus on the time and attendance module. Here are a few words directly from Lanseria’s website:
Time and Attendance is a solution that enables managing the global absence policies, employee time sheets, and absence records such as vacations, sicknesses, and business trips. Employees can request time off and the managers approve them. HR can track all the absence statistics, record and modify the absences, and approve or reject them.
- Define the company-wide leave policies and rules
- Set up comprehensive approval workflows
- Have a global absences calendar
- Increase productivity with project-based time tracking
Overview of Lanteria HR Time and Attendance module
After logging in the Lanteria Demo Site I was provided as an HR person, and clicking on the Time & Attendance module, I am presented with a nice menu allowing me to access all the parts of this module. On the left, I have a very useful list of actions that I can do as a user such as registering a vacation request, sickness and so on, while on the right I can view the OOF calendar, Timesheet report and so on.
The menu changes depending on what your role is, and what permissions you have in the platform.
As an HR person, the first thing I would probably do is create an Absence Plan for my employees, or multiple absence plans depending if my company as offices in multiple states/countries or provinces. As you can see in the next screenshot, Lanteria allows you to create multiple Absence Plans for your employees, so you can assign each one to the right plan afterwards.
Those plans define not only the amounts of vacations per employee, but also certain settings like: Can Vacation days be carried over to the next year? Can employees take more vacation days then they have currently accumulated?
You can also specify multiple rules of the number of vacation days this policy give access to depending on the age or seniority of the employee in your organizations. In the example below, employees that have been with the company for less than 5 years get 20 days of vacation, while employees that have worked for 6 or more years get 25 days per year. You can also add multiple other rules to calculate the total time of employee vacation every year.
You can then also create rules for sickness leave. In the screenshot below, everyone between the ages of 18 and 100 gets 10 days of sick leave per year, and employees can overbook them.
Finally, you can also add other Annual Absences such as Jury Duty, voting leave and so on, and decide to what countries it applies to.
As an employee, you can easily go to your “My Absences” dashboard, and view the number of total Paid leave days you can take, how many you have already booked, as well as the absence requests that you have requested, and their status.
I can also click on the Register Absence button to request a new vacation, and enter all the details that are related to the current vacation request.
As an employee, I can also track my time in different Projects and Activities in the Timesheet functionality. There is also a clock in – clock out future that I can use that will automatically track the time spent between when you clock in and clock out on that certain project.
As a Manager who needs to manage a team of employees, I can view an Absence schedule of all my employees at a glance, so I know who will be gone when. I can also see all the Pending Absence Requests, so all the requests for absence that my employees have done, and I can easily approve, or reject them!
I can approve, reject or even request a small change in the absence request, and provide comments on my decision!
As a Manager, I can also register an absence on behalf of another user. If an employee is sick and cannot come to work today, chances are they will call their manager to tell them, and their manager can directly register the day inside the system for them!
As an HR professional, there are also multiple reports included with the Time and Attendance module allowing you to have the full view on your company, and view the summary, schedule as well as statistics on how many vacation days each employee has.
I also have a very useful Out of Office calendar, allowing me to view everyone in my company that is out of office.
Conclusion
Throughout my testing, I found the Lanteria Time and Attendance module to pack a lot of functionality, in a very simple to use interface. This module allows you to create absence policies for your employees, automatically calculating the time of vacation and sick days they can get, as well as statutory holidays, and special absences such as Jury Duty. The module also includes functionality such as Timesheets, for which companies would have to purchase Project Server in order to have similar functionality, and even then Lanteria has more features around this. One of the things I really like about this module, and the Lanteria HRMS suite in general, is that it’s really made for HR professionals, by HR professionals, and as a business owner myself, everything that I wish for is really in the product.
Having reviewed multiple of the other Lanteria modules in the past years, the integration with the other modules is really good, and allows you to fully manage your Human Resources from SharePoint. If you want to learn more about the Lanteria Time and Attendance module, check out t heir site at: or click the banner below.
The post Review of Lanteria HR Time and Attendance module running on SharePoint appeared first on Absolute SharePoint Blog by Vlad Catrinescu.
by Vlad Catrinescu via Absolute SharePoint Blog by Vlad Catrinescu
VMware and AWS Say Move Your DR Data Center to the Cloud
by Wylie Wong via IT Pro - Microsoft Windows Information, Solutions, Tools
Monday, November 27, 2017
John Savill FAQs: From Azure Fabric to Project Honolulu
by John Savill via IT Pro - Microsoft Windows Information, Solutions, Tools
Microsoft releases Windows 10 Software Development Kit (SDK) Preview Build 17040
by Richard Hay via IT Pro - Microsoft Windows Information, Solutions, Tools
New AWS Cloud Services Take Aim at Video, AR and VR
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
McAfee to Buy Cloud Security Service Firm Skyhigh Networks
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
White House Is Said to Weigh Personal Mobile Phone Ban for Staff
Skype for Business 2015: Identifying Limited Functionality Mode Conditions
by Byron Spurlock via IT Pro - Microsoft Windows Information, Solutions, Tools
Amazon Plays Catch Up in a Corner of the Cloud Where it Lagged
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Demystifying Recovery Objectives
by Veeam Guest Blogger via IT Pro - Microsoft Windows Information, Solutions, Tools
T-SQL Puzzle Challenge: Grouping Connected Items
by Itzik Ben-Gan via IT Pro - Microsoft Windows Information, Solutions, Tools
Friday, November 24, 2017
IBM to retire two Watson IoT services
by Courtney Bjorlin via IT Pro - Microsoft Windows Information, Solutions, Tools
VMware Opposes Microsoft Service That Runs VMware Stack on Azure
by Nicole Henderson via IT Pro - Microsoft Windows Information, Solutions, Tools
FAQs: How To Automatically Apply Azure Information Protection Policies To On-Premises Data, Sort Hash Tables And Check On Trim Support.
HPE Bringing AI to Nimble Storage and 3PAR
by Christine Hall via IT Pro - Microsoft Windows Information, Solutions, Tools
Thursday, November 23, 2017
Pluralsight Black Friday Deals – Save 100$ On a New Annual Subscription or Renewal!
This year again, Pluralsight is offering an amazing discount for Black Friday on the annual subscription for both new, and existing members! Simply go to the following link or click on the picture below to get the deal: http://spvlad.com/PS2017BlackFriday
What do you get for 199$? You have unlimited access to over 5000 courses on the latest technologies, Assessments, Skill Paths and the option to download content offline to watch it wherever in the world you might be… FOR A FULL YEAR!
This Offer is only for a limited time, so make sure you get it while it lasts! Click on the banner below to go to the Offer Page!
The post Pluralsight Black Friday Deals – Save 100$ On a New Annual Subscription or Renewal! appeared first on Absolute SharePoint Blog by Vlad Catrinescu.
by Vlad Catrinescu via Absolute SharePoint Blog by Vlad Catrinescu
Skype Disappears From Chinese App Stores in Latest Web Crackdown
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Uber Hack Shows Vulnerability of Software Code-Sharing Services
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Wednesday, November 22, 2017
Intel Didn't Heed Security Experts Warnings About ME
by Christine Hall via IT Pro - Microsoft Windows Information, Solutions, Tools
Why Apple's HomePod Is Three Years Behind Amazon's Echo
by via IT Pro - Microsoft Windows Information, Solutions, Tools
Digital Transformation Success Comes to Organizations with Daring Leaders
by Nicole Henderson via IT Pro - Microsoft Windows Information, Solutions, Tools
Uber Hack `Raises Huge Concerns' With U.K. Data Regulator
FAQs: Learn how to assign roles available with Azure, new options for securing Azure services with IaaS services and installing additional Linux distributions with WSL.
by John Savill via IT Pro - Microsoft Windows Information, Solutions, Tools
Meg Whitman to Step Down as HPE CEO
by Bloomberg via IT Pro - Microsoft Windows Information, Solutions, Tools
Metavine GO Helps Enterprise Users Build Apps, No Coding Skills Necessary
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
Tuesday, November 21, 2017
Uber Concealed Cyberattack That Exposed 57 Million People’s Data
by via IT Pro - Microsoft Windows Information, Solutions, Tools
Capital One Previews Fintech Tuned Container Platform
by Christine Hall via IT Pro - Microsoft Windows Information, Solutions, Tools
AT&T, Comcast Win as Trump FCC Urges End of Obama Web Rules
HPE's AMD EPYC-Powered VM Server Breaks Benchmark Records
by Christine Hall via IT Pro - Microsoft Windows Information, Solutions, Tools
FundRequest Uses Blockchain to Incentivize Open Source Contributions
by Todd R. Weiss via IT Pro - Microsoft Windows Information, Solutions, Tools
How Microsoft is Extending Its Cloud to Chevron’s Oil Fields
by Yevgeniy Sverdlik via IT Pro - Microsoft Windows Information, Solutions, Tools
Monday, November 20, 2017
FAQs: Encryption With ExpressRoute; Understanding Which Capabilities Are Supported With ASR; Handling Files Downloaded From The Internet
by John Savill via IT Pro - Microsoft Windows Information, Solutions, Tools
I’m falling a bit behind on answering email and forum posts
Hi,
I’m unfortunately falling a bit behind on some of the support requests in the forum and in my mailbox. I’ll get it processed and answered during this week.
Best regards,
Alexander
by Alexander Bautz via SharePoint JavaScripts
CIA’s On-Prem Amazon Cloud Now Available to Other Agencies
by Yevgeniy Sverdlik via IT Pro - Microsoft Windows Information, Solutions, Tools
Researchers Discover Pentagon Intelligence Data on Open AWS S3 Buckets
by Nicole Henderson via IT Pro - Microsoft Windows Information, Solutions, Tools
Security Sense: You Can Outsource the Work but Never the Risk
by Troy Hunt via IT Pro - Microsoft Windows Information, Solutions, Tools
SharePoint List Forms with PowerApps Now Available in First Release – and more!
Another day, another promise from the Ignite conference fulfilled. It’s great to see so many fantastic new capabilities rolling out to Office 365 – and quickly. At Ignite, the Product Group really seemed to focus on near term enhancements and improvements, which makes this last part of the year a fertile one for new goodies. I don’t usually do “here’s a new feature” posts, but some of the new features are just too good to acknowledge – plus, we’ve been waiting for the cloud fulfillment to come on some of this stuff for a long time.
This one is a little bittersweet for me, though, as having PowerApps for building list forms truly makes my value-added functions in SPServices obsolete. On the one hand, that makes me sad, but on the other hand, it should have happened long ago. Things like cascading dropdowns are just too important not to be a part of the product somehow.
This capability actually started rolling out last week, but I only noticed it over the weekend. The PowerApps team did a blog post last Wednesday, November 15, entitled Announcing availability of custom forms, multi-value choice and read-only attachments support for SharePoint with PowerApps.
There are a number of announcements in the post, but here’s an executive summary:
- Custom SharePoint list forms with PowerApps – More about this below.
- Multi-select support for Choice, Lookup & People columns – My guess is these column types were what were holding up the PowerApps list forms capability, as these are unique to SharePoint. Since PowerApps has been built to be useful across many different parts of the Microsoft ecosystem, getting these column types into it was probably not high enough on the list for us SharePointilists.
- Read-only attachments support – Well, it’s a start. At least we can display attachments in our PowerApps forms, even though we can’t upload them. Hopefully that will come soon, and the PowerApps team acknowledges its importance.
The big story here is using PowerApps for SharePoint list forms. They have been teasing us with this one for a while now, and the screenshots (like the one above – maps always get people excited!) made many of us excited for this day.
The out of the box forms for lists (and libraries) have never been all that sexy. Their utilitarian nature belied the almost magical capability we were getting in that the forms adapted immediately to any changes to the list structure and settings. We’ve had that capability for so long now that many people have lost site of how cool that actually is.
Most people want their forms to be pretty, or more importantly to better represent the look or flow of a business process. Forms are in a sense where the rubber meats the road for content management. We want them to work well for collecting metadata so that we can have as friction-less an experience as possible. If adding metadata doesn’t feel artificial or burdensome, we gain so many important benefits down the road. Metadata is NOT dead!
I believe that forms and process ought to be decoupled, and that’s what the PowerApps and Flow split does for us. Many forms are just forms and that’s it. Other times, we may need to layer in some process, and that’s where Flow comes in.
It's not pretty (my fault), but I'm psyched to see a @PowerApps form on my @SharePoint list! https://t.co/URtP0w421m http://pic.twitter.com/ErUDB3u4zn
— Marc D Anderson (@sympmarc) November 19, 2017
Creating the example I tweeted above showing PowerApps on one of my test lists was about a 3 minute process. Here’s how it works.
First, you must be in First Release for Tenant. First Release for Select Users will NOT get you this capability. Most organizations will not have First Release for Tenant enabled in “production”, so you may need to spin up a side tenant to play around with this.
The distinction between these two types of First Release is a constant source of confusion, and I’ll keep pushing for more clarity – even in the face of the change from First Release the the Targeted Release terminology. Leave it to Microsoft to rename things!
When you go into a list, you’ll see PowerApps on the toolbar, as you have for a while now. What’s new is the Customize forms option.
When you click Customize forms, you’ll be launched through a series of animated and flashing screens to land you in PowerApps with a default form already set up for you. It’s likely to feel a little disconcerting, frankly, especially if you haven’t used PowerApps before.
But the upshot is that you now have a fancy new PowerApps-based form – all ready to use, even if you don’t make any modifications. Note the Back to SharePoint link in the upper left. Once you’re done making any changes, you can click that link and you’ll see this dialog:
You’ll want to click Save and Publish. This will lead you through some more flashing screens – be patient – and you’ll land back on your list with your new form magically in place. If you select an item in the list and click Edit, you’ll see it.
I’m not going to go into how PowerApps works here, but there are some excellent tutorials out there from folks like Laura Rogers (@wonderlaura).
If you decide you’d like to switch back to the default list forms – or even back to Infopath – you’ll find that setting under List Settings / Form Settings. You can also delete the PowerApps form you’ve created here in case you want to start over (which I did to get some of these screenshots).
I expect this new capability is going to usher in a sort of forms renaissance in SharePoint. Don’t let anyone tell you otherwise, PowerApps is indeed the successor to Infopath, though don’t expect a one to one feature comparison just yet. Happy form-ulating!
by Marc D Anderson via Marc D Anderson's Blog
Saturday, November 18, 2017
How to Plan a Migration to AWS: The Cox Automotive Story
Getting to a State of OPEX: 3 Pillars of DaaS Success
Friday, November 17, 2017
China and Linux Dominate Supercomputing
by Christine Hall via IT Pro - Microsoft Windows Information, Solutions, Tools
ITPro SnapShot: What Else Happened This Week? (November 10-17, 2017)
by Richard Hay via IT Pro - Microsoft Windows Information, Solutions, Tools
FAQs: A Closer Look at the Requirements and Functions of Just-in-Time VM Access in Azure
by John Savill via IT Pro - Microsoft Windows Information, Solutions, Tools
A practical guide to building a Bot using Microsoft Bot Framework using C# and host it in Azure, and use it with Microsoft Teams, Skype and more
1. Introduction
In this post we'll explore how easy it is to actually build a bot for Microsoft Teams using the Microsoft Bot Framework, which can be found here http://ift.tt/1qjk4Pr.
This post is meant as a starting point for building bots and conversational helpers using the Microsoft Bot Framwork. Of course, it doesn't have to be limited to the Microsoft Teams channel, it can be targeting Slack, Skype or any other available distribution channel.
For the sake of this post, I'll show how to build it and use it with Teams initially.
1.1 The bot: Nerdibot
As the title of the bot might subtly suggest, it's a bot that replies with nerdy quotes. Very basic.
I even created a nerdibot logo using Paint 3D
on my Windows 10 laptop.
1.2 Pre-requisites
A few things you'll require are:
- Visual Studio 2017 is my preferred editor today
- Azure Subscription
2. Creating the boilerplate for the Microsoft Bot Framework in Azure and source control
In order to get started with building a successful bot using the Bot Framework, we should register it in the dev portal (http://ift.tt/1qjk4Pr).
2.1 Start registration of our new Bot in the Microsoft Bot Framework dev portal
Sign in to the dev portal, then head on over here:
There's currently only one option to select, so the obvious action is to click Create
.
Next, we have to select where this bot will run. Do we build a completely new bot and host it in Azure or do we already have a bot running and we just want to register it?
Well, for the sake of this post we're going with option number 1; Create a new SDK bot hosted in Microsoft Azure
.
This will take us to the Azure Portal, ready to create a new Bot Service (preview)
- pretty convenient:
2.2 Create resources in Azure to host our Bot
Once it's finished, you'll see a notification in the portal:
Click the button Go to resource
to visit your new Bot resource in Azure, and we can get started with the fun part.
Select the template you'd like for your bot. Again, for the demonstration of this guide I'm using the C#
template and using the most basic version of a bot template available, Basic
. We can extend the logic of this to infinity later, should we want to make it a bit more amazing.
Click Next
at the bottom of the page.
2.3 Create a Microsoft App ID for your new bot
You'll be seeing the following page, where you will need to click Create Microsoft App ID and password
:
Clicking the button will take you to the Application Registration Portal, from which you'll be able to generate your Application Id and Password:
Click Finish and go back to Bot Framework
.
Ensure that the App Id is correctly entered by default (it will be), and ensure you paste the password you securely copied in the previous step:
2.4 Connect to GitHub
So, this is obviously an optional step. You can select to hook it up to continuous deployment, or not. I think it's pretty sweet as it gives us continuous deployments. I'm using https://github.com for this.
Enter your GitHub (or other source control provider) credentials:
It will automatically connect to GitHub now, and create a new repository with the name of your bot. Mine ended up with http://ift.tt/2mCmP1e
.
I'm happy with the default settings for now.
On GitHub, I can see the repo successfully being created:
3. Tips for testing the bot
Great, we've set things up and we're ready to go. Code is deployed using CD and GitHub, and the template code has been deployed.
How do I test this thing, to ensure it actually does something I want?
3.1 Test the bot from the Azure Portal
From inside the Azure Portal, we can easily test the bot functionality using the big blue Test
button. The functionality of the current bot is simple: Echo whatever you type. That's the basic demo we selected initially.
Okay, we can see that things work. But it's not really convenient to try and troubleshoot anything at all from here.
3.2 Use the Microsoft Bot Framework Emulator (recommended)
3.2.1 Connect to the Cloud-hosted version of the bot when it's deployed
Sometimes it's beneficial to inspect the requests and responses from a service that's deployed and already running. Since our bot is published publically and available already (from the previous steps), we should be able to reach the Bot on the Url we specified when configuring it in Azure.
My bot exists at http://ift.tt/2mzmoF3.
Download the Bot Framework Emulator and install it.
Since we're also connecting to a service hosted outside of the firewalls and routers (which I assume everyone has, right?), we need to tunnel the request back to our machine. Using ngrok
we can easily do this, and it's fluent with the emulator.
Head on over to https://ngrok.com and download it.
Put the executable where you want it, as long as you remember it in the next step.
Launch Bot Framework Emulator and click the three vertical dots (ellipsis menu) and select App Settings
:
Ensure the path to the ngrok.exe
executable is entered correctly, select to bypass for local addresses (normally it doesn't make sense to use it when debugging localhost later..), click Save
.
Now it's time to try and connect to our hosted bot. Enter the URL to your bot, followed by /api/messages
(see the routes in the source code if you're wondering where this comes from).:
Hit Connect
!
BOOM! We can now connect to our remote bot from the emulator, using our App Id and Secret as we entered in the previous dialogue.
We'll see the logs of what goes on through the emulator, helping us troubleshoot any issues we might have.
3.2.2 Connect and debug on localhost during development
Great - we've created a bot, we've put it in the cloud and we've verified that it works both in the Azure Portal and using the Desktop application Bot Emulator.
Now we want to debug it while running on localhost.
- Clone your GitHub repository (if you're using that source control option)
- Launch the Solution which by default is called
Microsoft.Bot.Sample.SimpleEchoBot.sln
- Hit F5 without modifying any of the code
We can see that a browser is launching and hitting the localhost Url, in my case it lands on https://localhost3984
.
- Copy this Url and append the same
/api/messages
as when doing it remotely - Enter the full Url into the Bot Emulator now and test it
4. Developing your bot
We'll be changing a bit of the code of the bot to ensure that it works, our continuous deployment works, and that the hosted version of our bot gets the updates.
While a different post will cover the more in-depth aspects of the actual bot development (there's some gotchas and a lot of fun tips), we'll focus on the steps required for getting things to work here.
4.1 Introducing a Chuck Norris API call and utilizing the IActivity to return a "Bot is typing" type of message
I've changed the code in the main EchoDialog
which is given to us by default. I've introduced a Chuck Norris
API which gives you a reply with a quote as if it were Chuck, and added an IActivity
implementation sending back a message to the client that the bot is "Nerdibot is thinking..". The reason for this activity is that you can then see in the UI that the bot has received your request, and it's working on a reply - for example if the API call takes a bit longer or if it needs to do more complex queries or computing, it might be a good idea to indicate to the user that it's working on it.
Here's the full code of the EchoDialog now, with the small changes to introduce the two above things:
using System;
using System.Threading.Tasks;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Builder.Dialogs;
using System.Net.Http;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
namespace Microsoft.Bot.Sample.SimpleEchoBot
{
[Serializable]
public class EchoDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
#region Is Typing Activity
var activity = context.Activity as Activity;
Trace.TraceInformation($"Type={activity.Type} Text={activity.Text}");
if (activity.Type == ActivityTypes.Message)
{
var connector = new ConnectorClient(new System.Uri(activity.ServiceUrl));
var isTyping = activity.CreateReply("Nerdibot is thinking...");
isTyping.Type = ActivityTypes.Typing;
await connector.Conversations.ReplyToActivityAsync(isTyping);
// DEMO: I've added this for demonstration purposes, so we have time to see the "Is Typing" integration in the UI. Else the bot is too quick for us :)
Thread.Sleep(2500);
}
#endregion
#region Handle incoming message
var message = await argument;
HttpClient client = new HttpClient();
var chuckJoke = client.GetStringAsync("http://ift.tt/2oLhbur").Result;
var deserializedChuck = JsonConvert.DeserializeObject<dynamic>(chuckJoke);
string chuckSays = ((dynamic) deserializedChuck).value.ToString();
await context.PostAsync(GetRandomGreet(activity.From.Name) + Environment.NewLine + chuckSays);
#endregion
context.Wait(MessageReceivedAsync);
}
private string GetRandomGreet(string name)
{
List<string> greetings = new List<string>
{
$"Hey there {name}!",
$"Okay {name}.",
$"{name}, your request has been considered, and I approve. This time.",
$"Okidoki {name}.",
$"What's up my awesome pal, {name}."
};
Random r = new Random();
int index = r.Next(greetings.Count);
string randomString = greetings[index];
return randomString;
}
}
}
When running the bot, it will now look something like this:
- When you type something to the bot:
Once the message is handled and the bot finished thinking (e.g. my dummy Thread.Sleep() elapsed), you should see the reply:
5. Connect the bot to various channels
Right, now imagine you've got all your awesome code up and running, and your bot is doing what ever it is that you need it to do. We need to distribute it across various channels and try it out with various platforms.
In order to try it out with a real platform, instead of just the Bot Framework Emulator and Azure test UI, we'll try to add it to a few different channels. Tag along.
5.1 Add your bot to Skype (consumer)
We'll be connecting to Skype first. It's already running by default and we'll be tring that out.
- Head over to the Bot dev portal again at http://ift.tt/1qjk4Pr
- Click on the
Skype
channel which should be connected already:
- Add the bot as a contact so you can communicate with it
- In your Skype client, you can now see your new bot as a contact
- Chat with the bot!
- We'll see that it's got the delay in place (is typing...) and it gets my name correct
My bot is live on Skype, and can be found here:
5.2 Integrate your bot with any web form
Another standard feature of the Microsoft Bot Framework is to host your bot on any web site or form of your choosing. This is an interesting option if you're integrating a support bot or helper bot on your publish website (or even on your intranet).
- Head over to the Bot dev portal again at http://ift.tt/1qjk4Pr
- Click on the
Edit
link next to theWeb Chat
channel:
- Make a note of ( 1 ) the Secret Key
- Make a note of ( 2 ) the Embed Code
- Click Done
- Copy the Secret into the Embed Code and replace the
YOUR_SECRET_HERE
with your own secret - Copy this embed code into any web site of your choice
Here's what my embed code looks like (I've faked the Secret to avoid abuse):
<iframe src='http://ift.tt/2mzmBrP' width="500px" height="800px"></iframe>
- I copied this embed code into
hello.html
which contains nothing else
Awesome, we've connected it to a website as well. Obviously, you may want to connect it to an actual web site for a more realistic use case, but now you know how to do that.
5.3 Connect your bot to Microsoft Teams
- Head over to the Bot dev portal again at http://ift.tt/1qjk4Pr
- Click on your bot
- Click on the
Microsoft Teams
logo to add a new channel
- It will tell you that it's connecting to Teams, hit
Done
- Click the newly connected Teams channel and it will, just like with for Skype, launch the browser to connect to Teams with your new bot
- You're connected to the chatbot in your Teams tenant, but he doesn't reply. Why?
This is due to Microsoft Teams not being configured for Side-loading any apps.
Please read here: http://ift.tt/2mCn0tq for how to configure sideloading.
Please note: If you don't sideload your app, it will not be able to communicate. Unless you publish the bot, in which case anyone can add it (if they allow external bots).
- Once sideloading is configured as per the article mentioned above, you should see it work.
I hope this gives enough insights into how easy it actually is to build a bot that can be run anywhere. The MS Bot Framework does indeed have lots of benefits and the SDK's are evolving.
6. Bot Analytics and Insights
Imagine you've developed a really nice bot now, and that you want may be using it internally in your organization, or you have even published it as an official bot somewhere. You want to see the insights and numbers on how it performs, right?
Let's check a few options out.
6.1. Application Insights
When setting up the project the way we did, we also get Application Insights hooked up to the resource in Azure so we can easiy track what's happening, how it's being used and if there's any unexpected errors happening.
- Head over to the dev portal for Bot Framework again: http://ift.tt/1qjk4Pr
- Click
Settings
for your bot - Scroll down to the Analytics section and ensure the data is populated.
If there's no data configured here, follow the link Learn more
to get started on that journey.
Now, to check out the real Application Insights data, follow these few steps:
- Head to your azure portal http://ift.tt/1hlA6vt
- Find the resource group for your new bot
- You'll see that there's an Application Insights resource connected to the bot. Click it:
From here, you can access ALL insights from your bot. Well, the default ones at least.
If you want to add more App Insights into your code, you can do that as you would with any other Application Inisghts development task.
Since my bot is completely new off the shelf and there haven't been anyone else using it, I can't really see much insights yet - but there's some exceptions logged already:
- BotTimeoutException
- Exception
These exceptions might be hard to find if you don't have any analytics. Imagine you're publishing an app used by hundreds of organizations, and something goes wrong - you'll need to quickly fix it and ensure that it doesn't happen again. App insights is a good first step to do this, with Bots as well as other resources. (Yes, I use App Insights with a lot of my real projects too).
We can drill down into these exceptions and see what really happened:
Clicking where the arrow points will give you the full stack trace of what happened:
Hopefully as the bot matures, you'll find that the inisghts can tell you usage patterns, unexpected errors and quickly find a remedy for anything which is breaking.
6.2. Simple analytics from the Bot Framework portal
From within the portal itself (well, you can access it through the dev portal for Bot Framework or through your Azure resource, but its the same place in the end), you can see some quick but valuable insights about your application and where and how it's being used.
While not as comprehensive as the details you'll view directly in App Insights, it's enough to just see if your bot is being used and which channels are more popular.
Summary
With this post I hope that it's become a bit more clear just how easy it is to get started with building bots using the Microsoft Bot Framework!
I might go into further details with node.js
bot development, in-depth C#
bot development and building more complex bots using the SDK's available. But that's for another post - now we at least know how easy it is to get started.
Cheers,
Tobias.
by Tobias Zimmergren via Zimmergren's thoughts on tech