<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: thebernardlim</title>
    <description>The latest articles on DEV Community by thebernardlim (@thebernardlim).</description>
    <link>https://dev.to/thebernardlim</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F315456%2Ff1affec6-328d-4c88-bc7a-54c86d3ef539.jpg</url>
      <title>DEV Community: thebernardlim</title>
      <link>https://dev.to/thebernardlim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thebernardlim"/>
    <language>en</language>
    <item>
      <title>IT Certifications - 5 different reasons to get certified</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Thu, 25 May 2023 15:16:00 +0000</pubDate>
      <link>https://dev.to/thebernardlim/it-certifications-5-different-reasons-to-get-certified-3bg5</link>
      <guid>https://dev.to/thebernardlim/it-certifications-5-different-reasons-to-get-certified-3bg5</guid>
      <description>&lt;p&gt;There has always been a debate around this topic, especially for IT folks - To certify or not?&lt;br&gt;
There are all sorts of IT folks around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ones who brim with pride with a ton of certificates and badges&lt;/li&gt;
&lt;li&gt;Ones who totally despise certificates&lt;/li&gt;
&lt;li&gt;Ones who have no education at all but are seemingly geniuses (think Elon Musk and Bill Gates)&lt;/li&gt;
&lt;li&gt;Ones who have a few certificates and are currently pondering whether to go for more or not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then you have that genius senior in your company who scorns when you excitedly mention you are in the middle of studying for exam XYZ.&lt;/p&gt;

&lt;p&gt;So what is right or wrong?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kvfongvC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/leftright.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kvfongvC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/leftright.jpg" alt="LeftRight" width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What should we as IT professionals do?&lt;/p&gt;

&lt;p&gt;I have seen a lot of articles explaining why and how certificates do bring value. Most of them are correct, but I feel they still do miss some important points that I have come to learn of from my very own experience in doing certification, hence the title - &lt;strong&gt;5 different reasons to get certified&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Pathway &amp;amp; Direction: Knowing what to learn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xnbKnndc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/direction.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xnbKnndc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/direction.jpg" alt="Direction" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To me, if I were to want to learn about something, I would think that with a &lt;strong&gt;structured guideline&lt;/strong&gt; to follow, I will undeniably &lt;strong&gt;learn things more efficiently&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To put it into a hiking analogy, will be like hiking to the hilltop. If there were 2 hikers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hiker 1 following the proper route and a map&lt;/li&gt;
&lt;li&gt;Hiker 2 taking a different unofficial route and without a map&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chances are Hiker 1 will be the one that reaches the summit first quicker and probably unscathed. That is not to say the Hiker 2 will not reach the top, however, what are his chances? There might be &lt;em&gt;one or two outliers&lt;/em&gt; that will reach the summit, and probably even quicker than Hiker 1, but I'm pretty sure the majority of those following the Hiker 2 will end up &lt;em&gt;demoralized and even quitting&lt;/em&gt; altogether.&lt;/p&gt;

&lt;p&gt;In the IT field, technology moves very fast and comes in all directions (think integrations, overlaps between features, competitor alternatives). It can be daunting and before you know it, is very demoralizing because &lt;strong&gt;&lt;em&gt;you do not know what to learn or how much to learn&lt;/em&gt;&lt;/strong&gt;!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;With a certification syllabus, especially from one such as Microsoft's where they regularly refresh to reflect their product advancements, a learner can at least know they are learning what is relevant and systematically learn about something (From beginner concepts to more advanced nuances)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. Familiarity: Easier to re-learn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5sTJ27Ba--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/familiarity.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5sTJ27Ba--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/familiarity.jpg" alt="Direction" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's address the elephant in the room right away here.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Certifications DO NOT make you an expert in anything&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If it did "make" you an expert, it is not because of the certificate. Chances are you already have some pre-existing knowledge and experience before this, and the certification adds an extra level of validation to it.&lt;/p&gt;

&lt;p&gt;How many times have we heard people going &lt;em&gt;"I do not remember anything (Maths, Geography, etc) from school/uni?"&lt;/em&gt; Pretty much almost everyone.&lt;/p&gt;

&lt;p&gt;We spent a LOT of time in school. Considerably way more time than the time we take to study for a certificate. If we do not remember anything from school, how could it be we remember everything we learned from the short span of studying for a certificate?&lt;/p&gt;

&lt;p&gt;Let's not lie to ourselves. There are just too many nuances and details that are being left out of certifications, just because a certification's scope has its limits. Conversely, in the real world, you are exposed to anything from A to Z of a product.&lt;/p&gt;

&lt;p&gt;So if certificates do not make us an expert, why do we even go for one?&lt;/p&gt;

&lt;p&gt;Simple.&lt;br&gt;
&lt;strong&gt;Familiarity&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The more exposure you get to a concept or topic, the faster you will pick up each time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Certifications introduce all the &lt;strong&gt;important terms and key details that we should know of&lt;/strong&gt;. Even though we might "forget" it after a while, when we come across it in the future, chances are you will &lt;strong&gt;pick it up quicker&lt;/strong&gt; than if you have not heard of the term before.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Improve Job Prospects
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ILfIn4UN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/job.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ILfIn4UN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/job.jpg" alt="Job" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having a certificate does add a little &lt;strong&gt;differentiation&lt;/strong&gt; to you against the other 100,000 developers who also indicate they know Microsoft Azure in their CVs. How would I as a recruiter or employer know where to start filtering? Certificates might help here.&lt;/p&gt;

&lt;p&gt;Certificates also indicate that you &lt;strong&gt;know at least something&lt;/strong&gt; about that technology. What if he/she does not have any hands-on experience with that technology? Even better. Chances are that this individual is one with a &lt;strong&gt;growth mindset&lt;/strong&gt;, and is &lt;strong&gt;willing to learn and pick up new skills&lt;/strong&gt; on top of his full-time job!&lt;/p&gt;

&lt;p&gt;Studying for a certificate, going to an exam center, passing the exam to renewing your certificate yearly will tell me something about this individual. He/She &lt;strong&gt;cares about his career&lt;/strong&gt; and wants to do well.&lt;/p&gt;

&lt;p&gt;Besides the above, in certain organizations, there can sometimes be criteria of a minimum number of certified employees they are required to have to maintain a certain &lt;strong&gt;level of partnership&lt;/strong&gt; with the technology providers. If you are in a consulting / client-facing business, clients might sometimes have preferences to only select people with certificates!&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Motivation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F-QR5dSA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/motivation.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F-QR5dSA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/motivation.jpg" alt="Motivation" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We, humans, love to be &lt;strong&gt;rewarded&lt;/strong&gt;. That is why there are the Olympics, there are gamifications in everything, and there are rankings and accolades.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Certificates are one of those that can motivate some individuals. Use it to your advantage if you are one of them, to pick up new skills or cement further on what you already know.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another way that certificates might help motivate, will be, instead of waiting until you are ready to register for an exam, do it the other way round! (This is highly applicable for the chronic procrastinators out there) Select a reasonable date for your exam, sign up, and then start studying. More often than not, this is more effective as it forces you to make time and prioritize studying.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;With a deadline, you are forced to be motivated to learn and prepare for the exam.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. Keeping me up to date
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GEeBjUGB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/chasing.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GEeBjUGB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/chasing.jpg" alt="chasing" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Certifications have an &lt;em&gt;expiry date&lt;/em&gt;. For Microsoft, it is a yearly affair. Thankfully it is free and can be done from anywhere. It is less rigid and stringent but it serves its purpose, which I believe is to force and ultimately ensure that you keep your &lt;strong&gt;knowledge refreshed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As mentioned earlier, Microsoft &lt;strong&gt;updates its syllabus regularly to reflect their product advancements&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you keep up with the renewal process, it would only mean you need to and will be up-to-date with the latest happenings. With an expiry date, you are forced to do so even.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the end of the day,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;the one who benefits the most out of a certificate is none other but yourself&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The above are my reasons on why I still occasionally pursue certificates. That being said, everyone has their view on certificates and in my opinion, there is no right or wrong.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What is important is we understand WHY we are doing it, similar to anything in life, once you know the &lt;strong&gt;WHY&lt;/strong&gt;, it doesn't matter what anyone else thinks of your decision&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7zjcxj25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/why.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7zjcxj25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thebernardlim.com/img/posts/2023-05-24-why-get-certified/why.jpg" alt="chasing" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>certification</category>
      <category>career</category>
      <category>azure</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Earn free Microsoft Certification Voucher - MS Build 2023</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Wed, 24 May 2023 15:45:21 +0000</pubDate>
      <link>https://dev.to/thebernardlim/earn-free-microsoft-certification-voucher-ms-build-2023-2b5d</link>
      <guid>https://dev.to/thebernardlim/earn-free-microsoft-certification-voucher-ms-build-2023-2b5d</guid>
      <description>&lt;p&gt;In conjunction with the annual Microsoft Build &lt;a href="https://lnkd.in/gyRkVTiw"&gt;event&lt;/a&gt;, Microsoft is offering free certification vouchers for those who have completed one of their 8 offered learning paths.&lt;/p&gt;




&lt;p&gt;Follow the steps 🪜 below:&lt;/p&gt;

&lt;p&gt;👉 Sign up for one of the #Cloud Skills Challenges &lt;a href="https://lnkd.in/gbXDX96x"&gt;https://lnkd.in/gbXDX96x&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Complete the registered challenge 📖 before 30th June 2023&lt;/p&gt;

&lt;p&gt;👉 Register for your preferred exam (from the eligible list) once you receive the 📧 email when it is available&lt;/p&gt;

&lt;p&gt;👉 Make sure to complete your ✍️ exam before 27th September 2023!&lt;/p&gt;




&lt;p&gt;For more info, refer to the official rules here:&lt;br&gt;
&lt;a href="https://lnkd.in/guVM4Xpw"&gt;https://lnkd.in/guVM4Xpw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy studying and good luck! 🤓&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>career</category>
      <category>certification</category>
      <category>azure</category>
    </item>
    <item>
      <title>Azure Storage - Creating Shared Access Signature Tokens with Stored Access Policy</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Tue, 09 May 2023 10:09:19 +0000</pubDate>
      <link>https://dev.to/thebernardlim/azure-storage-creating-shared-access-signature-tokens-with-stored-access-policy-49gj</link>
      <guid>https://dev.to/thebernardlim/azure-storage-creating-shared-access-signature-tokens-with-stored-access-policy-49gj</guid>
      <description>&lt;p&gt;Creating &lt;strong&gt;Shared Access Signature (SAS) Tokens&lt;/strong&gt; is easy to do, safer (than giving access keys) and useful for short-term access to your Azure Storage. However, one of the downsides is that there is &lt;em&gt;no way to revoke access&lt;/em&gt; to any of these tokens once they are created.&lt;/p&gt;

&lt;p&gt;The better practice is to create &lt;strong&gt;SAS Tokens with Stored Access Policy&lt;/strong&gt;. Stored Access Policy allows for visibility on what/when are being shared &amp;amp; for how long, plus the ability to &lt;em&gt;revoke tokens&lt;/em&gt; when required.&lt;/p&gt;




&lt;p&gt;There are a couple of ways to create SAS Tokens with Shared Access Policy, i.e. via UI, PowerShell, Azure CLI and .NET but I will cover the most straightforward ones only, i.e. &lt;strong&gt;via UI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Naturally, the main UI we will use will be the &lt;u&gt;Azure Portal&lt;/u&gt;. Unfortunately, this option &lt;em&gt;cannot work for Azure File Storage.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Blob Storage
&lt;/h3&gt;

&lt;p&gt;For &lt;strong&gt;Blob Storage&lt;/strong&gt;, notice there is the option to select &lt;strong&gt;Stored Access Policy&lt;/strong&gt; when generating the token.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gaRhpyLb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezopi4b6p65p48yd65wh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gaRhpyLb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezopi4b6p65p48yd65wh.png" alt="Blob SAS Token" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  File Storage
&lt;/h3&gt;

&lt;p&gt;Things are relatively different for Azure File Storage.&lt;br&gt;
Firstly, there &lt;strong&gt;no way to create SAS Tokens for Azure File Storage&lt;/strong&gt; in the &lt;em&gt;File Share&lt;/em&gt; window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WpJ8lHcy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/97exobqohragi51gbd57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WpJ8lHcy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/97exobqohragi51gbd57.png" alt="File Share" width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The only way to create SAS Tokens for Azure File Storage in the portal will be to go back out to the &lt;strong&gt;"Shared Access Signature"&lt;/strong&gt; menu item under &lt;strong&gt;Security + networking&lt;/strong&gt;, here you can see it allows creating SAS tokens for &lt;em&gt;Azure File&lt;/em&gt;, but there is no option to select the Shared Access Policy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6Ks4Jf6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gq8ggtl2wy84f9rnu3at.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6Ks4Jf6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gq8ggtl2wy84f9rnu3at.png" alt="File service" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I honestly have no idea why they have chosen not to implement this for Azure File Storage in the Azure Portal. Even more confusing is that this is not mentioned explicitly in the official docs as far as I know. It will make one wonder if Shared Access Policies are not supported for Azure File Storage, however that is not the case!&lt;/p&gt;

&lt;p&gt;The only option to do so via the UI will be using the &lt;strong&gt;Azure Storage Explorer&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--63JIiqO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlfqzuewvs5drzvbb6ui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--63JIiqO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlfqzuewvs5drzvbb6ui.png" alt="Get SAS Token Menu item" width="800" height="941"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n2uaFzgJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/blybhk4ffk0vcdw4k6st.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n2uaFzgJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/blybhk4ffk0vcdw4k6st.png" alt="Access Token option" width="723" height="887"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
    </item>
    <item>
      <title>Power Automate - Copy list attachment to document library</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Wed, 19 Apr 2023 06:49:55 +0000</pubDate>
      <link>https://dev.to/thebernardlim/power-automate-copy-list-attachment-to-document-library-17pe</link>
      <guid>https://dev.to/thebernardlim/power-automate-copy-list-attachment-to-document-library-17pe</guid>
      <description>&lt;p&gt;The goal here is to copy a SharePoint list attachment to a document library when a new SharePoint list item is created or modified.&lt;/p&gt;




&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;p&gt;Using &lt;strong&gt;Copy File&lt;/strong&gt; action directly for SharePoint List attachment to Document Library will not work for some reason.&lt;/p&gt;

&lt;p&gt;There is this error "Unsupported list type for copy/move. Copy/move can only be operated in Document Library."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpukxy14l7iwidrwlahrm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpukxy14l7iwidrwlahrm.png" alt="Using Copy File"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Solution
&lt;/h3&gt;

&lt;p&gt;In order to copy an attachment file to a document library, use the following &lt;strong&gt;Get Attachment Content&lt;/strong&gt; and &lt;strong&gt;Create File&lt;/strong&gt; instead of &lt;strong&gt;Copy File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxu9xwgzy5j3003x0sdzb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxu9xwgzy5j3003x0sdzb.png" alt="Get Attachment Content"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>powerfuldevs</category>
      <category>sharepointonline</category>
      <category>powerautomate</category>
    </item>
    <item>
      <title>Power Automate - How to get previous value of updated SharePoint List Item</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Thu, 13 Apr 2023 09:28:33 +0000</pubDate>
      <link>https://dev.to/thebernardlim/power-automate-get-previous-value-of-updated-sharepoint-list-item-1kcb</link>
      <guid>https://dev.to/thebernardlim/power-automate-get-previous-value-of-updated-sharepoint-list-item-1kcb</guid>
      <description>&lt;p&gt;Currently at time of writing, it is easy to kick-off a Power Automate flow when a SharePoint list item value changes and retrieve the new value.&lt;/p&gt;

&lt;p&gt;However, to retrieve the previous value will require some work.&lt;/p&gt;

&lt;p&gt;Below is the solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overall Flow
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ze5n5uhn3uf6y78ynwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ze5n5uhn3uf6y78ynwn.png" alt="Full Flow"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  Flow Breakdown
&lt;/h2&gt;

&lt;p&gt;Flow Type: &lt;strong&gt;Automated cloud flow&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 - Trigger when an item or a file is modified
&lt;/h3&gt;

&lt;p&gt;Trigger Type: &lt;strong&gt;When an item or a file is modified&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpai6csjyn09rmwpto0ck.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpai6csjyn09rmwpto0ck.png" alt="Trigger"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2 - Get changes for an item or a file (properties only)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; To retrieve previous version number&lt;br&gt;
&lt;strong&gt;Action Type:&lt;/strong&gt; Get changes for an item or a file (properties only)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp58jmwcev1pms32mwoy4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp58jmwcev1pms32mwoy4.png" alt="Get changes for an item or a file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Since&lt;/strong&gt; value will be the &lt;strong&gt;Trigger Window Start Token&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscw4c5g98dtta9jjgezt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscw4c5g98dtta9jjgezt.png" alt="Trigger Window Start Token"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3 - Send an HTTP request to SharePoint
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; To retrieve all the versions of this particular updated list item&lt;br&gt;
&lt;strong&gt;Action Type:&lt;/strong&gt; Send an HTTP request to SharePoint&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl06nc5sv9063ij10icgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl06nc5sv9063ij10icgs.png" alt="Send HTTP request"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uri&lt;/strong&gt;: &lt;code&gt;_api/web/lists/getByTitle('{Your_list_name}')/items(@{triggerOutputs()?{List Item ID from Step 1})/versions&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Headers&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Key: &lt;code&gt;Accept&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Value: &lt;code&gt;application/json; odata=nometadata&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;** It is important to add the &lt;code&gt;Accept&lt;/code&gt; header to return JSON, else it will return as XML by default&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4 - Do a Test Run
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; To get sample JSON which will be used for your next action.&lt;/p&gt;

&lt;p&gt;After running, copy the JSON from the &lt;strong&gt;Outputs&lt;/strong&gt; body section&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgz3bhbbl0b3bz62fyu6m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgz3bhbbl0b3bz62fyu6m.png" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5 - Parse JSON response
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Turn the JSON response into objects which we can then use&lt;br&gt;
&lt;strong&gt;Action Type:&lt;/strong&gt; Parse JSON&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content:&lt;/strong&gt; &lt;code&gt;Body&lt;/code&gt; of the &lt;strong&gt;Send an HTTP request to SharePoint&lt;/strong&gt;  action&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema:&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;Click on &lt;strong&gt;Generate from sample&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste the JSON copied from Step 4 and click on &lt;strong&gt;Done&lt;/strong&gt; button
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm6b6hh8pb02xc2w81vh.png" alt="Sample JSON"&gt;
&lt;/li&gt;
&lt;li&gt;Once outside, click on &lt;strong&gt;'Generate from sample'&lt;/strong&gt; button to fill up the &lt;strong&gt;Schema&lt;/strong&gt; field&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 6 - Retrieve version of item
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Retrieve only the specific item version from the array&lt;br&gt;
&lt;strong&gt;Action:&lt;/strong&gt; Filter array&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmgtk22ugajwewg0lh8x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmgtk22ugajwewg0lh8x.png" alt="Retrieve item"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From:&lt;/strong&gt; &lt;code&gt;value&lt;/code&gt; from &lt;strong&gt;Parse JSON&lt;/strong&gt; action&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;VersionLabel&lt;/code&gt; from &lt;strong&gt;Parse JSON&lt;/strong&gt; action &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Condition:&lt;/strong&gt; &lt;code&gt;is equal to&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value:&lt;/strong&gt; &lt;code&gt;outputs('Get_changes_for_an_item_or_a_file_(properties_only)')?['body/SinceVersionLabel']&lt;/code&gt;. This value is from &lt;strong&gt;Step 2 - Get changes for an item or a file (properties only)&lt;/strong&gt;. There is no need to manually type this. Click on the &lt;strong&gt;Expression&lt;/strong&gt; icon and choose the following in the popup window.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3649mcy2r4qinos502pl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3649mcy2r4qinos502pl.png" alt="Expression Window"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7 - Retrieve value from the item version
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Retrieve value from old version and setting value to variable &lt;br&gt;
&lt;strong&gt;Actions:&lt;/strong&gt; Initialize Variable &amp;amp; Set variable (within Apply to Each control)&lt;/p&gt;

&lt;p&gt;Here when setting the variable, you can select the column you want, in this case it was my &lt;code&gt;Project&lt;/code&gt; field.&lt;/p&gt;

&lt;p&gt;I then set the &lt;code&gt;ProjectOldValue&lt;/code&gt; variable with the &lt;code&gt;Project&lt;/code&gt; value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54x7mwvxy6ys5lf9t8js.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54x7mwvxy6ys5lf9t8js.png" alt="Setting project value"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;p&gt;Note that this flow can be modified as required for various scenarios, one being, if we need to retrieve the original value for an item (1st version), we can just hardcode the version value &lt;code&gt;1.0&lt;/code&gt; for &lt;code&gt;VersionLabel&lt;/code&gt; for &lt;strong&gt;Step 6&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>powerautomate</category>
      <category>sharepoint</category>
      <category>sharepointonline</category>
      <category>powerfuldevs</category>
    </item>
    <item>
      <title>Power Automate - How to solve missing Date/Time values when using Excel Forward Slash (/) in Column Header</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Tue, 04 Apr 2023 15:43:14 +0000</pubDate>
      <link>https://dev.to/thebernardlim/power-automate-how-to-solve-excel-forward-slash-in-column-header-issue-4i25</link>
      <guid>https://dev.to/thebernardlim/power-automate-how-to-solve-excel-forward-slash-in-column-header-issue-4i25</guid>
      <description>&lt;h3&gt;
  
  
  Problem
&lt;/h3&gt;

&lt;p&gt;There is a weird quirk when extracting values from Excel spreadsheets to SharePoint lists using Power Automate. This issue only happens when &lt;u&gt;using forward slashes in column headers specifically for Date/Time cells&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;Here is my Excel Online spreadsheet. The &lt;strong&gt;Date/Time&lt;/strong&gt; column is of Date Time format.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--apUYYmC0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgg0gk2fgdxezs8u5yil.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--apUYYmC0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgg0gk2fgdxezs8u5yil.png" alt="Excel" width="407" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The values will be stored in a SharePoint list.&lt;/p&gt;

&lt;p&gt;Here is how a typical flow for such will look like. Pay attention to the &lt;strong&gt;Date/Time&lt;/strong&gt; column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pqoIN6Hz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wt0ty1kcfqkuvktknily.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pqoIN6Hz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wt0ty1kcfqkuvktknily.png" alt="SP1" width="712" height="1060"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After running, there will be no errors. However, as seen below, there will be no values in the &lt;strong&gt;Date&lt;/strong&gt; column in SharePoint list&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SqOdEK61--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pwgyxzhi0dzjwtg5sy3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SqOdEK61--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pwgyxzhi0dzjwtg5sy3h.png" alt="SP2" width="492" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you click on &lt;strong&gt;Edit&lt;/strong&gt; once more, it will show that the value of the &lt;strong&gt;Date/Time&lt;/strong&gt; Excel column header has changed to &lt;em&gt;Date~1Time&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tfzoqvXb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/udwrwn9l9klpv40v1k17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tfzoqvXb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/udwrwn9l9klpv40v1k17.png" alt="Converted column title" width="618" height="318"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Solution
&lt;/h3&gt;

&lt;p&gt;Use an expression instead for such a column. For my case, my column is labelled as &lt;strong&gt;Date/Time&lt;/strong&gt; and the &lt;strong&gt;Apply to each&lt;/strong&gt; control's name is "Apply to each", hence it will be:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;items('Apply_to_each')?[concat('Date', '/', 'Time')]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Honestly, I am not sure why this is happening just for forward slashes. There are a couple of special characters that will cause issues for Date/Time columns as well such as &lt;code&gt;@&lt;/code&gt;, &lt;code&gt;#&lt;/code&gt; to name a few.&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>sharepointonline</category>
      <category>powerautomate</category>
      <category>powerplatform</category>
    </item>
    <item>
      <title>How to revert to previous page layout / design in SharePoint?</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Tue, 28 Mar 2023 14:01:54 +0000</pubDate>
      <link>https://dev.to/thebernardlim/how-to-revert-to-previous-page-layout-design-in-sharepoint-pgm</link>
      <guid>https://dev.to/thebernardlim/how-to-revert-to-previous-page-layout-design-in-sharepoint-pgm</guid>
      <description>&lt;p&gt;Was asked this simple question the other day when I was doing one of the &lt;a href="https://www.linkedin.com/posts/thebernardlim_sharepoint-chatgpt-ai-activity-7044525672031010816-IBZY?utm_source=share&amp;amp;utm_medium=member_desktop"&gt;SharePoint Introduction sessions&lt;/a&gt; the other day&lt;/p&gt;

&lt;p&gt;Some pages might have a lot of editing done, so question is how do we revert the changes to a previously published edition?&lt;/p&gt;

&lt;p&gt;Naturally, one would look at the menu bar for such options. However, as you see below, the closest option is "Undo". However "Undo" is only for &lt;em&gt;non-published changes&lt;/em&gt; only. It will be &lt;em&gt;grayed out&lt;/em&gt; (like below) if there are no changes made yet&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TwQ3fJfh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zviicy1uked321pq2wdd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TwQ3fJfh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zviicy1uked321pq2wdd.png" alt="Undo button" width="800" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This might be an obvious solution, but might not be that obvious especially when new to SharePoint&lt;/p&gt;




&lt;h3&gt;
  
  
  Solution
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Take note of your page name. If there is no page name, it is probably your home page, which i.e. Home.aspx&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;strong&gt;Site Settings&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2jBAnTgy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqf7fojaeu55y44anhzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2jBAnTgy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqf7fojaeu55y44anhzj.png" alt="Site Settings" width="337" height="355"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;strong&gt;Site Pages&lt;/strong&gt;. Note that all pages will be located within this page library.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xtOQ8j8n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l0m8yk05ibbeyvtvswh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xtOQ8j8n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l0m8yk05ibbeyvtvswh9.png" alt="Site Pages" width="740" height="450"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look for the page with the page name at Point #1 and click the 3 horizontal dots '&lt;strong&gt;...&lt;/strong&gt;', then on &lt;strong&gt;Version History&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4UNGDiV0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wq4qihle5hg1bqg0t3c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4UNGDiV0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wq4qihle5hg1bqg0t3c.png" alt="Version History" width="759" height="680"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here you will see a list of &lt;em&gt;published&lt;/em&gt; versions. Click on the specific version and click on &lt;strong&gt;Restore&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kJu9jSYI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x3ew1zmk9mkw4e2z1ahr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kJu9jSYI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x3ew1zmk9mkw4e2z1ahr.png" alt="Restore version" width="429" height="549"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;One downside, is unfortunately, there is no "preview" to see how each version looks like before restoring. This will be a pain if there are more versions. &lt;/p&gt;

&lt;p&gt;On the flip side, we see how our work is not easily "lost" within SharePoint, and most of the things can be recalled if mistakes happen&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>sharepointonline</category>
    </item>
    <item>
      <title>How to allow Site Members (Non Site Owners) to share files with anyone?</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Thu, 16 Mar 2023 15:53:54 +0000</pubDate>
      <link>https://dev.to/thebernardlim/how-to-allow-site-members-non-site-owners-to-share-files-with-anyone-e52</link>
      <guid>https://dev.to/thebernardlim/how-to-allow-site-members-non-site-owners-to-share-files-with-anyone-e52</guid>
      <description>&lt;p&gt;How do you allow your &lt;strong&gt;site members&lt;/strong&gt; &lt;em&gt;(non site owners)&lt;/em&gt; to be able to share files with &lt;strong&gt;"Anyone"&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;By default, the &lt;strong&gt;"Anyone" option is disabled&lt;/strong&gt; 🚫 for site members when trying to share files from SharePoint&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jBNSrbwT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzu2i2pr25tcxgqmf6y6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jBNSrbwT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzu2i2pr25tcxgqmf6y6.png" alt="Default settings" width="531" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️⚠️ &lt;strong&gt;Anyone&lt;/strong&gt; here means anyone who gets hold of the shared link &lt;strong&gt;can access this file without signing-in&lt;/strong&gt;,i.e. unauthenticated users. Please be extra careful when enabling this option.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 1: SharePoint Admin Center Settings
&lt;/h3&gt;

&lt;p&gt;This setting can be found under &lt;strong&gt;Policies&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Sharing&lt;/strong&gt;&lt;br&gt;
Enable &lt;strong&gt;External Sharing&lt;/strong&gt; by dragging the slider to &lt;strong&gt;"Anyone"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ddnUBkbE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/el7j892cbzjcypclk7hr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ddnUBkbE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/el7j892cbzjcypclk7hr.png" alt="SharePoint Admin Global Settings" width="800" height="402"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Site Level Settings
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;Gear&lt;/strong&gt; icon on top right corner&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Site permissions&lt;/strong&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eupZ9JbM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mtcvcp9xi6hecn1zg2ry.png" alt="Gear" width="299" height="433"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Change how members can share&lt;/strong&gt; under &lt;em&gt;Site Sharing&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tE7ehuX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l6te5tqg0gd4vzt8dzi4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tE7ehuX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l6te5tqg0gd4vzt8dzi4.png" alt="Share" width="317" height="468"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Site sharing settings&lt;/strong&gt; dialog, depending upon your requirements, select any of the options other than &lt;strong&gt;Only site owners can share files, folders, and the site&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1TTt1yAb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ii7cfzuulxgjrejg1yd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1TTt1yAb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ii7cfzuulxgjrejg1yd.png" alt="Site sharing settings" width="360" height="374"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️⚙️ Default Settings
&lt;/h3&gt;

&lt;p&gt;It is probably a good idea to set the &lt;strong&gt;default&lt;/strong&gt; type of link &amp;amp; permissions to be a &lt;strong&gt;more restrictive&lt;/strong&gt; 🔒&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;SharePoint Admin Center&lt;/strong&gt; &lt;strong&gt;Sharing&lt;/strong&gt; page as per in &lt;strong&gt;Step 1&lt;/strong&gt;, go to the &lt;strong&gt;File and folder links&lt;/strong&gt; sub-section.&lt;/p&gt;

&lt;p&gt;Here you can choose the default value for the:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type of link&lt;/li&gt;
&lt;li&gt;Permission of link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dN7KvBvr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/upc8tk1qoimhigyc99b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dN7KvBvr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/upc8tk1qoimhigyc99b9.png" alt="File and folder links" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  📖📖 Further Reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/sharepoint/turn-external-sharing-on-or-off"&gt;https://learn.microsoft.com/en-us/sharepoint/turn-external-sharing-on-or-off&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/sharepoint/change-default-sharing-link"&gt;https://learn.microsoft.com/en-us/sharepoint/change-default-sharing-link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sharepoint</category>
      <category>sharepointonline</category>
    </item>
    <item>
      <title>How to get the latest updates, news &amp; announcements regarding SharePoint Online</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Thu, 09 Mar 2023 01:49:55 +0000</pubDate>
      <link>https://dev.to/thebernardlim/how-to-get-the-latest-updates-news-announcements-regarding-sharepoint-online-4lcl</link>
      <guid>https://dev.to/thebernardlim/how-to-get-the-latest-updates-news-announcements-regarding-sharepoint-online-4lcl</guid>
      <description>&lt;p&gt;As SharePoint Online is a SaaS, it is important for us (especially for SharePoint Administrators &amp;amp; IT Pros) to know what are the latest updates that are being released to the platform, rather than be randomly surprised or caught off guard.&lt;/p&gt;

&lt;p&gt;Here are a couple of ways to stay updated.&lt;/p&gt;




&lt;h2&gt;
  
  
  Official Microsoft 365 Roadmap
&lt;/h2&gt;

&lt;p&gt;Microsoft has &lt;strong&gt;Microsoft 365 Roadmap&lt;/strong&gt; page. Here you can filter the &lt;strong&gt;Product&lt;/strong&gt; dropdown to only list SharePoint or any other M365 products.&lt;/p&gt;

&lt;p&gt;URL:&lt;br&gt;
&lt;a href="https://www.microsoft.com/en-us/microsoft-365/roadmap?filters=" rel="noopener noreferrer"&gt;https://www.microsoft.com/en-us/microsoft-365/roadmap?filters=&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh40yytivpom3bvhc2kj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh40yytivpom3bvhc2kj6.png" alt="M365 Roadmap" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  SharePoint Admin Center Message Center
&lt;/h2&gt;

&lt;p&gt;Only applicable for SharePoint Administrators, the latest release updates can be found under the &lt;strong&gt;Message Center&lt;/strong&gt; in the &lt;strong&gt;SharePoint Admin Center&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Note: SharePoint Admin Center can be accessed via &lt;a href="https://admin.microsoft.com/" rel="noopener noreferrer"&gt;Office Admin&lt;/a&gt; or directly via &lt;em&gt;https://{yoursitename}-admin.sharepoint.com/&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgsdpqtuo4drwhwahe9gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgsdpqtuo4drwhwahe9gw.png" alt="Message Center" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffumubjli26h10nfdtc8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffumubjli26h10nfdtc8k.png" alt="Message Center 2" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Blogs
&lt;/h2&gt;

&lt;p&gt;There are a couple of blogs that do also post on the latest updates regarding M365 platforms.&lt;/p&gt;

&lt;p&gt;Here are some:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://techcommunity.microsoft.com/t5/microsoft-sharepoint-blog/bg-p/SPBlog" rel="noopener noreferrer"&gt;https://techcommunity.microsoft.com/t5/microsoft-sharepoint-blog/bg-p/SPBlog&lt;/a&gt; . Check out the posts from &lt;a href="https://techcommunity.microsoft.com/t5/microsoft-sharepoint-blog/sharepoint-roadmap-pitstop-february-2023/ba-p/3755315" rel="noopener noreferrer"&gt;Mark Kashman&lt;/a&gt; which usually gives a monthly summary on SharePoint updates.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sharepointstuff.com/" rel="noopener noreferrer"&gt;https://sharepointstuff.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://petri.com/category/microsoft-365-changelog/" rel="noopener noreferrer"&gt;https://petri.com/category/microsoft-365-changelog/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please let me if there any more useful links &amp;amp; resources in the comments.&lt;/p&gt;

</description>
      <category>python</category>
      <category>dataviz</category>
      <category>code</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Delete Files Older Than A Specific Date(s) in SharePoint Online</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Mon, 27 Feb 2023 09:34:55 +0000</pubDate>
      <link>https://dev.to/thebernardlim/delete-files-older-than-a-specific-date-in-sharepoint-online-799</link>
      <guid>https://dev.to/thebernardlim/delete-files-older-than-a-specific-date-in-sharepoint-online-799</guid>
      <description>&lt;p&gt;A very simple way to &lt;u&gt;delete files (not folders) across multiple levels of folders, for files older than a specific date&lt;/u&gt; in SharePoint online is to use a &lt;strong&gt;Power Automate flow&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is what is required for the flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Get files (properties only)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Include Nested Items&lt;/strong&gt;: Yes (This is required if you need to delete files across multiple levels of subfolders)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter Query:&lt;/strong&gt; Set to your respective date value. 
(Example below is where created file date is earlier or equals to 31st December 2022)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Condition **in **Apply to each&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check if &lt;strong&gt;IsFolder **is equals to **false&lt;/strong&gt;. This is because &lt;strong&gt;Get files&lt;/strong&gt; will also returns folder names. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If &lt;em&gt;yes&lt;/em&gt;, &lt;strong&gt;Delete file&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File Identifier:&lt;/strong&gt; Identifier (from the &lt;em&gt;Get files (properties only)&lt;/em&gt; action)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If &lt;em&gt;no&lt;/em&gt;, do nothing&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j6Wa11MH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6nniz92qp40nc55sh3st.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j6Wa11MH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6nniz92qp40nc55sh3st.png" alt="Power Automate Flow" width="800" height="757"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>powerautomate</category>
      <category>sharepointonline</category>
    </item>
    <item>
      <title>How to filter SharePoint List Calendar Views?</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Fri, 17 Feb 2023 00:27:58 +0000</pubDate>
      <link>https://dev.to/thebernardlim/sharepoint-list-filter-calendar-views-33b</link>
      <guid>https://dev.to/thebernardlim/sharepoint-list-filter-calendar-views-33b</guid>
      <description>&lt;p&gt;Here is a simple way to set filters for List &lt;strong&gt;Calendar Views&lt;/strong&gt;.&lt;br&gt;
I have this scenario where I have a global holiday list storing holidays of different countries.&lt;/p&gt;

&lt;p&gt;The users want a &lt;strong&gt;separate calendar for some countries&lt;/strong&gt;, for example in this scenario, a calendar showing only China holidays. Notice there is no 'filter' option here on creation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4zww95z2lo5ez0gw14y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4zww95z2lo5ez0gw14y.png" alt="List creation" width="667" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the list is created, on the top right corner is a 'Filter' function, we would intuitively think allow us to filter easily. That is however not the case.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw37nbvvfm1c6qyr4yapl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw37nbvvfm1c6qyr4yapl.png" alt="Filter" width="654" height="320"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Here's how to do it.&lt;/p&gt;

&lt;p&gt;On the top right corner, click &lt;strong&gt;'Settings'&lt;/strong&gt;, then &lt;strong&gt;'List Settings'&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cfr8lp6qzomlxpd3s5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cfr8lp6qzomlxpd3s5w.png" alt="List Settings" width="176" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scroll down to the &lt;strong&gt;'Views'&lt;/strong&gt; section.&lt;br&gt;
Click on your specific view, in this case 'China Holidays' view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp42ic47eategaj2a66ey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp42ic47eategaj2a66ey.png" alt="Image description" width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scroll down to the &lt;strong&gt;'Filter'&lt;/strong&gt; section and here is where you can specify your filter!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdh9u66zrzjfjrs4ggezt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdh9u66zrzjfjrs4ggezt.png" alt="Filter" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>announcement</category>
      <category>devto</category>
      <category>web3</category>
      <category>community</category>
    </item>
    <item>
      <title>SharePoint Online Audience Targeting for Group Owners</title>
      <dc:creator>thebernardlim</dc:creator>
      <pubDate>Wed, 08 Feb 2023 03:07:10 +0000</pubDate>
      <link>https://dev.to/thebernardlim/sharepoint-online-audience-targeting-for-group-owners-204j</link>
      <guid>https://dev.to/thebernardlim/sharepoint-online-audience-targeting-for-group-owners-204j</guid>
      <description>&lt;p&gt;SharePoint allows audience targeting for navigation links, news, files (just to name a few).&lt;/p&gt;

&lt;p&gt;It is straightforward (steps described &lt;a href="https://support.microsoft.com/en-us/office/target-content-to-a-specific-audience-on-a-sharepoint-site-68113d1b-be99-4d4c-a61c-73b087f48a81" rel="noopener noreferrer"&gt;here&lt;/a&gt;) however one thing to note, is SharePoint only allows a &lt;strong&gt;group's members&lt;/strong&gt; to be the audience. Key point here though is that &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A group owner is NOT considered as a group member!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I reckon this design could be because a group owner could probably be not part of a business team, as he/she is in only in charge of administering the group, rather than is a part of daily business functions. &lt;/p&gt;

&lt;p&gt;However, if the group owner is an actual team member, then remember to add he/she as part of the group members as well.&lt;/p&gt;




&lt;p&gt;Below is a simple illustration.&lt;/p&gt;

&lt;p&gt;Here is the target audience settings dialog window for this SharePoint label called &lt;strong&gt;Test&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;My 365 Group is called &lt;strong&gt;HR Internal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Notice the only option SharePoint gives is &lt;strong&gt;HR Internal Members&lt;/strong&gt;. There is no &lt;strong&gt;HR Internal Owners&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbrp98o7n0ls8mrzkxzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbrp98o7n0ls8mrzkxzl.png" alt="Target Audience Options" width="537" height="806"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Workaround
&lt;/h3&gt;

&lt;p&gt;The only way to get around this, is to add your user(s) who are under Group &lt;strong&gt;Owner&lt;/strong&gt; to be ALSO a part of &lt;strong&gt;Members&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;In a 365 Group, a user can be both an owner and a member. A group owner does not automatically mean it is a group member. It could mean different things as shown in the above SharePoint target audience example.&lt;/p&gt;

</description>
      <category>node</category>
      <category>network</category>
      <category>api</category>
      <category>debugging</category>
    </item>
  </channel>
</rss>
