One of the spots where I see a lot of people being challenged when they first learn PowerApps is the concept of delegation. Delegation comes into play when working with data sources larger than 500 records. By default PowerApps is designed to only work on a maximum of 500 records at a time. You can increase this default setting to a maximum of 2,000, but that usually results in a noticeable performance lag in your PowerApp. To avoid that problem you should always limit the number of records you are retrieving from a data source to 500 records or less. One of the most common ways to do that is by using the Filter() function to limit the records being returned by the data source to a specific subset that you want to work on.
Using Filter() to limit the number of records retrieved from a specific data source is a great strategy, but it doesn’t always work. This is where understanding the concept of delegation becomes critical. Delegation is the process of having the data source filter the records before they are returned to the PowerApp instead of having the PowerApp apply the filter directly. This is complicated by the fact that not all data sources support delegation and different data sources support different logical operators for delegation. You can find a list of delegable data sources and operators here: https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/delegation-list. But even this documentation can lead to confusion.
The confusion comes in from some footnotes in the ‘Filter and LookUp delegable predicates’ section of the documentation. Footnote 3 on the logical operators reads, “For numeric columns, all operators can be delegated. For ID columns, only the ‘=’ can be delegated. Date columns can’t be delegated.” This would imply that all the operators should work with a Boolean value of true or false. But in my experience Boolean columns are treated the same way that ID columns are treated. The only operator that works is ‘=’. If you try to use a Filter statement where a Boolean value is not equal to something you will see that it issues a delegation warning. The following screenshot shows an example.
But if I change the formula to the Boolean being equal to true then the delegation warning goes away and the function becomes delegable. See the screenshot below.
The moral of the story is that understanding the intricacies of delegation is critical when building PowerApps.
For the last 10 years July 1st has always been a day that I both looked forward to and dreaded. I’ve looked forward to it because its anniversary of the day that I was awarded the honor of being named as a Microsoft Most Valuable Professional for the first time. But I’ve also dreaded it. Because no matter how many presentations you’ve made or how much you’ve answered questions on the forums or active you’ve been in the community, you always wonder if its been enough. But then sometime around mid-day the email arrives saying that you have been re-awarded for another year as an MVP. That email arrived for me today around 11:40 AM (9:40 AM Redmond time). So for the 11th year Microsoft has decided that my contributions to the SharePoint and Office 365 community were sufficient to earn me an MVP award again for the category of “Office Servers and Services”.
But this coming year will be a little different than previous years because I plan to move towards partial retirement from my consulting career. Before you get the idea that I’ll be less involved as an MVP, think again. Being an MVP has always been about your contributions to the technical community over and above your regular job. So in the past I often took vacation time to speak at conferences or spent time on the forums before and after work. Since I won’t be focusing on “earning a paycheck” anymore I’ll be able to devote even more time to community activities. I’m expecting my contributions to the community will go up as I move to retirement, not fade away.
So, I make this offer to Community Leaders
If you are looking for a SharePoint or Office 365 speaker for your event, and you can help me defray travel expenses, I will be willing to travel almost anywhere, at anytime to share what I have learned over the years.
SharePoint, Office 365, and Dynamics CRM are subjects that I’m passionate about. And my moving towards retirement is just a partial thing. I still plan to continue to do consulting and training for many years to come. If consulting/training opportunities come my way I will continue to work. Because that’s now I keep learning new things. But if paying jobs don’t happen to come my way then I’ll live off my retirement savings and spend even more time speaking and answering questions.
So here’s to another year as an MVP. I think it will be an exciting one.
Last week I presented a talk to the Cincinnati SharePoint User’s Group entitled, “Protecting your Content: Demystifying Data Loss Prevention (DLP)
in SharePoint 2016”. I couldn’t make it to the user group in person, but they were nice enough to let me present it via Skype. At the end of the talk I promised to post my slides.
You can download a read only copy of the slides from the talk using the link below:
Protecting your Content: Demystifying Data Loss Prevention (DLP)
My wife and I really enjoyed our visit to Washington DC last week. The conference attendees were great and both my sessions and workshop were well attended. It was a pleasure to feel that I was sharing information that people really wanted to learn about. The week was even better because at night we got to spend time with my daughter, son-in-law, and 6 month old granddaughter. Getting to present at a conference and spend time with family and friends is a great combination.
I promised to make my slides available, so I’ve uploaded them here. They are also available on the SharePoint Fest DC site for attendees. If you have any follow-up questions please email me at firstname.lastname@example.org. You can download a copy of the slides from each talk using the links below:
Changing the permissions assigned to the default Owners, Members, and Visitors groups in a SharePoint site is easy. You just navigate to Site Settings > Site Permissions. Then select the group whose permissions you want to change and assign them a new permission level using the Edit User Permissions button in the Ribbon. But that won’t work in the Site created behind an Office 365 Group. When you try to use the same procedure you find that the Edit User Permissions button is greyed out if you select any of the built in administrative groups. (See the Screenshot below.
The problem is that Office groups are created when you create a Security Group in Office 365. By default that security group is added to the built-in Members group of the Site Collection. To make sure that you don’t inadvertently lock users out of the site Microsoft disables your ability to change the permission on the default Administrative groups when using an Office Group based site.
But there is still a way to modify the permissions for the users in the groups. If you navigate to the home page of the site and select Site Permissions from the Settings menu (the gear) you will see a panel open on the right hand side of the browser window. Under Site Members you will see the security group that provides the basis for the Office group you created. If you select Edit under that group you can change the permissions for the members of the group to either Read or Full Control. However, instead of changing the permission level for the group it will actually move the security group to either the Site Visitors or Site Owners groups respectively.
But what if I want to change the default group’s permissions to Contribute instead of Edit? To do that you’ll need to use two different SharePoint groups.
First, use the Site permissions panel to move the underlying security group from the Site Members group to the Site Visitors group. This will give all your users Read permissions to the site.
Second, click on the Advanced permissions settings link at the bottom of the panel. This will take you to the regular site permissions page that you are used to. Now you can create a new SharePoint group and assign it whatever permission level you want. After you create the group add the same security group you moved above as a member of the new SharePoint group. Since SharePoint permissions are additive this will give all your users both Read permission and whatever new permission level you assigned, for example Contribute.
I hope that clarifies how to manage Permissions in the new Office 365 group sites. Since Team sites are based on Office Groups, the same procedure applies to any Team sites you’ve created.