The post Log API request/response payload in Azure Application Insights appeared first on Binary Bits.
]]>Fortunately APIM provides an easy way to do this.
You can also use a query like below to filter the App Insight logs
requests
| where url == <API URL>"
| where timestamp >= ago (1h)
| order by timestamp desc
The post Log API request/response payload in Azure Application Insights appeared first on Binary Bits.
]]>The post Data types of rollup vs calculated vs Power Fx in Power Apps appeared first on Binary Bits.
]]>| Rollup | Calculated | Power Fx |
| – | Single line of text | Single line of text |
| – | Choice | – |
| – | Yes/no | Yes/no |
| Whole number | Whole Number | – |
| Decimal number | Decimal Number | Decimal number |
| Currency | Currency | – |
| Date and time | Date and time | Date and time |
Source:
The post Data types of rollup vs calculated vs Power Fx in Power Apps appeared first on Binary Bits.
]]>The post Power Platform – Restore appeared first on Binary Bits.
]]>To restore to a production environment, you must first change its type to sandbox.
You can set a sandbox, production, or trial (subscription-based) environment in administration mode so that only users with System Administrator or System Customizer security roles are able to sign in to that environment.
Administration mode is useful when you want to make operational changes and not have regular users affect your work, and not have your work affect end users (non-admins).
You can optionally disable background operations such as all asynchronous operations including Dataverse workflows and email server-side synchronization.
Source: Environment operations – Training | Microsoft Learn
The post Power Platform – Restore appeared first on Binary Bits.
]]>The post Power Platform – Backups appeared first on Binary Bits.
]]>System backups occur continuously and aren’t counted towards capacity.
If you use Microsoft Power Platform to create production environments that have a database and Dynamics 365 applications enabled, you can benefit from the system backups that are automatically performed for those environments. The system backups are stored for up to 28 days.
For environments that don’t have Dynamics 365 applications enabled, the default backup retention period is only seven days. However, for managed environments, admins can use PowerShell to change the setting and extend the backup retention period. The available options are 7, 14, 21, and 28 days.
All environments, except Trial environments are backed up.
Automated system backups are great, but you should make your own backups before making significant customizations or applying a version update.
About manual backups:
Source: Environment operations – Training | Microsoft Learn
The post Power Platform – Backups appeared first on Binary Bits.
]]>The post 1080p on 1200p display appeared first on Binary Bits.
]]>When you do a game capture like Nvidia’s game capture, with a screen resolution based of 16:10 and import that into video editing software like DaVinci Resolve, it will add black bars if you set the project resolution to 16:9 ratio.
The following solutions will result in a game capture of 16:9 ratio. In addition to this, this also will use the native resolution of the monitor since the scaling is applied at the GPU level and not in the monitor.


The post 1080p on 1200p display appeared first on Binary Bits.
]]>The post Windows 11 – Apps keep pinning to the taskbar appeared first on Binary Bits.
]]>For me, this happens in my MSI-manufactured Windows 11 laptop.
Do the following to fix this annoyance.
<CustomTaskbarLayoutCollection>
<defaultlayout:TaskbarLayout>
<taskbar:TaskbarPinList>
<taskbar:UWA AppUserModelID="9426MICRO-STARINTERNATION.DragonCenter_kzh8wxbdkxb8p!App" />
<taskbar:UWA AppUserModelID="9426MICRO-STARINTERNATION.CreatorCenter_kzh8wxbdkxb8p!App" />
<taskbar:UWA AppUserModelID="9426MICRO-STARINTERNATION.BusinessCenter_kzh8wxbdkxb8p!App" />
<taskbar:UWA AppUserModelID="9426MICRO-STARINTERNATION.MSICenter_kzh8wxbdkxb8p!App" />
<taskbar:UWA AppUserModelID="Microsoft.GamingApp_8wekyb3d8bbwe!Microsoft.Xbox.App" />
</taskbar:TaskbarPinList>
</defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection><CustomTaskbarLayoutCollection>
<defaultlayout:TaskbarLayout>
<taskbar:TaskbarPinList>
</taskbar:TaskbarPinList>
</defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection>Reboot the system and those apps shouldn’t pin themselves in the next restart.
The post Windows 11 – Apps keep pinning to the taskbar appeared first on Binary Bits.
]]>The post Outlook password not working on Thunderbird appeared first on Binary Bits.
]]>I use multi factor authentication and hence this is little difficult than using plain old password. The following configuration is the recommended method across almost all articles in the Internet, but still the password will fail. There is a solution which I came across in the forums, which worked for me and I’m documenting it here.
Now try adding the account in Thunderbird and most probably this should resolve the issue.
For me the app password didn’t work but the above with OAuth worked!
The post Outlook password not working on Thunderbird appeared first on Binary Bits.
]]>The post Binding buttons in SPFx appeared first on Binary Bits.
]]>Hence it’s required to manually bind and the following are two ways to do it.
onClick={this.addButtonClicked.bind(this)}
import * as React from 'react';
import { Stack, IStackProps, IStackStyles } from 'office-ui-fabric-react/lib/Stack';
import { ActionButton } from 'office-ui-fabric-react/lib/Button';
import { IIconProps } from 'office-ui-fabric-react/';
import { ITestComponentState } from './ITestComponentState';
import { ITestComponentProps } from './ITestComponentProps';
//Stack related styles
const outerStackTokens = {
childrenGap: 50
};
const addFriendIcon: IIconProps = { iconName: 'Add' };
let outerStackStyles: Partial<IStackStyles> = {};
let innerStackColumnProps: Partial<IStackProps> = {};
export default class TestComponent extends React.Component<ITestComponentProps, ITestComponentState> {
constructor(props: ITestComponentProps) {
super(props);
this.state = {
items: []
};
}
public render(): React.ReactElement<{}> {
return (
<div>
<Stack horizontal tokens={outerStackTokens} styles={outerStackStyles}>
<Stack verticalAlign="start" {...innerStackColumnProps}>
<Stack.Item align="start" >
<ActionButton iconProps={addFriendIcon} onClick={this.addButtonClicked.bind(this)} allowDisabledFocus disabled={this.state.sortItems.length >= 10 ? true : false} >Add Item</ActionButton>
</Stack.Item>
</Stack>
</Stack>
</div>
);
}
private addButtonClicked(event?: React.MouseEvent<HTMLButtonElement>) {
let itemsOnAdd = this.state.items;
let itemTitle = "Item " + (this.state.items.length + 1);
itemsOnAdd.push({ title: itemTitle });
this.setState({ items: itemsOnAdd });
}
}this.addButtonClicked = this.addButtonClicked.bind(this);
import * as React from 'react';
import { Stack, IStackProps, IStackStyles } from 'office-ui-fabric-react/lib/Stack';
import { ActionButton } from 'office-ui-fabric-react/lib/Button';
import { IIconProps } from 'office-ui-fabric-react/';
import { ITestComponentState } from './ITestComponentState';
import { ITestComponentProps } from './ITestComponentProps';
//Stack related styles
const outerStackTokens = {
childrenGap: 50
};
const addFriendIcon: IIconProps = { iconName: 'Add' };
let outerStackStyles: Partial<IStackStyles> = {};
let innerStackColumnProps: Partial<IStackProps> = {};
export default class TestComponent extends React.Component<ITestComponentProps, ITestComponentState> {
constructor(props: ITestComponentProps) {
super(props);
this.state = {
items: []
};
this.addButtonClicked = this.addButtonClicked.bind(this);
}
public render(): React.ReactElement<{}> {
return (
<div>
<Stack horizontal tokens={outerStackTokens} styles={outerStackStyles}>
<Stack verticalAlign="start" {...innerStackColumnProps}>
<Stack.Item align="start" >
<ActionButton iconProps={addFriendIcon} onClick={this.addButtonClicked} allowDisabledFocus disabled={this.state.sortItems.length >= 10 ? true : false} >Add Item</ActionButton>
</Stack.Item>
</Stack>
</Stack>
</div>
);
}
private addButtonClicked(event?: React.MouseEvent<HTMLButtonElement>) {
let itemsOnAdd = this.state.items;
let itemTitle = "Item " + (this.state.items.length + 1);
itemsOnAdd.push({ title: itemTitle });
this.setState({ items: itemsOnAdd });
}
}The post Binding buttons in SPFx appeared first on Binary Bits.
]]>The post Generate PDF from SharePoint Online list item using Power Automate appeared first on Binary Bits.
]]>There are two ways by which a PDF can be generated.
In my example the scenario is to generate an invite pass for attendees attending a conference.
The generated PDF will look like the following.
Here we are using SharePoint Online and the data source is a simple SharePoint list which contains the following.
The OneDrive for Business has two artificats

Please note that for both methods, the Power Automate is triggered whenever the SharePoint list item is created or modified.
In the below article when the product “OneDrive” is mentioned, it’s actually “OneDrive for Business”.
The trigger is when a SharePoint List item is created or modified.
The next action would be to fetch the image of the logo located in the OneDrive.
Now we have to convert the logo into a Uri format using the expression editor and initialize a variable with it.
dataUri(outputs('Get_logo_file_content')?['body'])Next is the important action where the actual HTML content will be created.
<html>
<body>
<p>
<img style="display: block; margin-left: auto; margin-right: auto;" src="" alt="">
<img>
</p>
<p style="text-align: center;">
<h1>
</h1>
</p>
<p style="text-align: center;">
<h2>
</h2>
</p>
</body>
</html>For the seasoned HTML developer who is well versed with HTML & CSS, he/she/they can create the HTML content or the other easiest method is to use the Microsoft Word desktop software to create the HTML.
If you use a simple method, do make sure the CSS is perfect. For the most part I tried, the conversion from HTML to PDF kept ignore the CSS, hence the second method.
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 15 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face {
font-family: "Cambria Math";
panose-1: 2 4 5 3 5 4 6 3 2 4;
}
@font-face {
font-family: Calibri;
panose-1: 2 15 5 2 2 2 4 3 2 4;
}
@font-face {
font-family: "Calibri Light";
panose-1: 2 15 3 2 2 2 4 3 2 4;
}
/* Style Definitions */
p.MsoNormal,
li.MsoNormal,
div.MsoNormal {
margin-top: 0cm;
margin-right: 0cm;
margin-bottom: 8.0pt;
margin-left: 0cm;
line-height: 107%;
font-size: 11.0pt;
font-family: "Calibri", sans-serif;
}
h1 {
mso-style-link: "Heading 1 Char";
margin-top: 12.0pt;
margin-right: 0cm;
margin-bottom: 0cm;
margin-left: 0cm;
line-height: 107%;
page-break-after: avoid;
font-size: 16.0pt;
font-family: "Calibri Light", sans-serif;
color: #2F5496;
font-weight: normal;
}
span.Heading1Char {
mso-style-name: "Heading 1 Char";
mso-style-link: "Heading 1";
font-family: "Calibri Light", sans-serif;
color: #2F5496;
}
.MsoChpDefault {
font-family: "Calibri", sans-serif;
}
.MsoPapDefault {
margin-bottom: 8.0pt;
line-height: 107%;
}
@page WordSection1 {
size: 595.3pt 841.9pt;
margin: 72.0pt 72.0pt 72.0pt 72.0pt;
}
div.WordSection1 {
page: WordSection1;
}
-->
</style>
</head>
<body lang=EN-IN style='word-wrap:break-word'>
<div class=WordSection1>
<p class=MsoNormal align=center style='text-align:center'><img width=200 height=200 id="Picture 1"
src="Word-HTML_files/image001.png" alt="Icon Description automatically generated"></p>
<h1 align=center style='text-align:center'>Kannan Balasubramanian</h1>
<p class=MsoNormal align=center style='text-align:center'>2</p>
</div>
</body>
</html>Create an action to initialise a variable and paste the contents. Replace the image source with “LogoUri” variable, Title & ID from the trigger “When an item is created or modified”.
variables('LogoUri')triggerOutputs()?['body/Title']
triggerOutputs()?['body/ID']
Now the HTML contents should be saved to a HTML file. We are going to use OneDrive’s “Create file” action and will use the same “Dev” folder to create the file and use the ID as file name to uniquely generate a file for each item and the file content as the “HTMLContent” variable.
triggerOutputs()?['body/ID']
variables('HTMLContent')The created HTML file now can be converted to a PDF file and we will use OneDrive’s “Convert file using path” action. The “File Path” will rely on the “Create HTML file” action’s “Path” property.
This action is in preview as of February 2021.
outputs('Create_HTML_file')?['body/Path']Once converted the PDF content will be saved as a file using OneDrive’s “Create file” action.
triggerOutputs()?['body/ID']
outputs('Convert_HTML_file_to_PDF_using_path')?['body']If required we will use OneDrive’s “Delete file” action to delete the HTML file which was generated previously to avoid wasting the space.
outputs('Create_HTML_file')?['body/Path']Now save the Power Automate and test it once to check if it’s working fine.
Create a new item in SharePoint and save it.
Go to OneDrive and check if the file is generated.

Open the file to check if it has been created.

The trigger is when a SharePoint List item is created or modified.

The next action would be to fetch the image of the logo located in the OneDrive.

Now we have to convert the logo into a Uri format using the expression editor.


dataUri(outputs('Get_logo_file_content')?['body'])Open a word and if the developer tab is not available, configure the word to make it visible as shown below.
Now you should have a developer tab in the ribbon.

Now use the “Picture Control Content” to add a place holder for the logo.
Once added, click on the placed “Picture Control Content” and then click on “Properties” in the ribbon to set the “Title” as “Logo” & “Tag” as “Logo”
Repeat the same for Title & ID using the “Rich Text Content Control”
Once added, click on the properties to set a “Title” as “Title” & “Tag” as “Title” for the title place holder and “Title” as “Id” & “Tag” as “Id” for ID place holder and use formats like alignment and text styles in the “Home tab”.
The word document should look like below.

Now save the file as a normal Word document with .docx extension. Upload the word document into OneDrive as “Invite-Template.docx”

Now lets go back to the Power Automate and add an action “Populate a Microsoft Word template” of “Word Online”. Choose the location of “File” where the template file was uploaded. For Logo use the “File Content” from the “Get logo file content” (Note: We are not using the “LogoUri” variable here). For “Title” & “Id”, use the “Title” & “ID” from the trigger “When an item is created or modified”.
This is a premium action so a premium license is required and is in preview as of February 2021.

outputs('Get_logo_file_content')?['body']triggerOutputs()?['body/Title']
triggerOutputs()?['body/ID']
Now add OneDrive’s “Create File” action. Choose the “Folder Path” from OneDrive, where the filled Word document should be saved, along with the “File Name” being ID of the SharePoint item and “File Content” from the action “Populate a Microosft Word template”.

triggerOutputs()?['body/ID']
outputs('Populate_a_Microsoft_Word_template')?['body']Now lets convert the Word document into PDF by creating the action “Convert Word Document to PDF” of “Word Online” pointing the “File” to the path returned by “Create Word file via Word template”.
This is a premium action so a premium license is required and is in preview as of February 2021.

outputs('Create_Word_file_via_Word_template')?['body/Path']Now let’s use OneDrive’s “Create file” action to create the PDF file in OneDrive.

triggerOutputs()?['body/ID']
outputs('Convert_Word_Document_to_PDF')?['body']If required we will use OneDrive’s “Delete file” action to delete the Word file which was generated previously to avoid wasting the space.

outputs('Create_Word_file_via_Word_template')?['body/Path']Now save the Power Automate and test it once to check if it’s working fine.
Create a new item in SharePoint and save it.
Go to OneDrive and check if the file is generated.

Open the file to check if it has been created.

The post Generate PDF from SharePoint Online list item using Power Automate appeared first on Binary Bits.
]]>The post Item level permission in SharePoint using REST and Power Automate appeared first on Binary Bits.
]]>For this to work, make sure the Power Automate is created with an account having site collection administrator access.
Step 1 is to identify to whom the permissions should be granted to. It can be either a person or a group.
Step 2 is to identify what kind of permission i.e. role should be granted.
Step 3 is breaking the inheritance.
Step 4 is assigning the permission.
To identify the individual user the following API can be used. Commonly everyone relies on e-mail ID so lets take that as an example
URL: _api/web/SiteUsers/getByEmail('email@domain.com')
Method: GetWhen you use Power Automate, make sure to extract the ID and place it in a variable.
body('Get_User_Id')['d']['Id']To identify the site group the following API can be used.
URL: _api/web/sitegroups/getbyname('Group Name')
Method: GetWhen you use Power Automate, make sure to extract the ID and place it in a variable.
body('Get_Group_Id')['d']['Id']This is defined by the role definitions available in the site. The following API will help in identifying the role definitions and their ID.
URL: _api/roledefinitions/getbyname('Full Control')
Method: GetWhen you use Power Automate, make sure to extract the ID and place it in a variable.
body('Get_Role_Definition_Id')['d']['Id']For this first thing is we need to identify the target for which the inheritance should be broken. In the following example it’s a list item.
URL: _api/lists/getByTitle('<List Name>')/items(<Item ID>)/breakroleinheritance(copyRoleAssignments=false,clearSubscopes=true)
Method: POSTURL: _api/lists/getByTitle('Test List')/items(1)/breakroleinheritance(copyRoleAssignments=false,clearSubscopes=true)As said before permission can be assigned to an individual or a group. The following API will help with that
URL: _api/lists/getByTitle('<List Name>')/items(<Item ID>)/roleassignments/addroleassignment(principalid=<User ID or Group ID>,roledefid=<Role ID>)
Method: POSTURL: _api/lists/getByTitle('Test List')/items(1)/roleassignments/addroleassignment(principalid=10,roledefid=1073741829)Following is the list of out of the box role definitions which I came across in the internet
| Role Definition Name | Role Definition Id |
| Full Control | 1073741829 |
| Design | 1073741828 |
| Edit | 1073741830 |
| Contribute | 1073741827 |
| Read | 1073741826 |
| View Only | 1073741924 |
| Limited Access | 1073741825 |
You can refer the following URL which has code example to use REST api.
Set custom permissions on a list by using the REST interface
The post Item level permission in SharePoint using REST and Power Automate appeared first on Binary Bits.
]]>