<?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>Forem: Seyi Lufadeju</title>
    <description>The latest articles on Forem by Seyi Lufadeju (@seyilufadejucyberservices).</description>
    <link>https://forem.com/seyilufadejucyberservices</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%2F2238782%2F2a76c84d-8698-43c9-bec3-48afe3a2c0ee.jpeg</url>
      <title>Forem: Seyi Lufadeju</title>
      <link>https://forem.com/seyilufadejucyberservices</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/seyilufadejucyberservices"/>
    <language>en</language>
    <item>
      <title>Establish Transport Rule for External Email Security Awareness</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Thu, 22 May 2025 09:37:31 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/establish-transport-rule-for-external-email-security-awareness-14bh</link>
      <guid>https://forem.com/seyilufadejucyberservices/establish-transport-rule-for-external-email-security-awareness-14bh</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION
&lt;/h2&gt;

&lt;p&gt;In today’s digital landscape, email security is critical. External emails pose risks such as phishing, malware, and social engineering attacks. Adding a security disclaimer to external emails in Microsoft Exchange Online helps alert users to exercise caution when interacting with messages from outside your organization. This guide provides a step-by-step process to create a transport rule (mail flow rule) in Exchange Online that appends a customizable security message to all incoming external emails. By the end, you’ll enhance user awareness and reduce risks associated with external communications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step Guide
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Exchange Online Access:&lt;/strong&gt;&lt;br&gt;
 Admin credentials for Microsoft 365 with permissions to manage mail flow rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Message Content:&lt;/strong&gt;&lt;br&gt;
 Prepare the security disclaimer text (e.g., “Caution: This email originated from outside our organization. Do not click links or open attachments unless you trust the sender.”).&lt;/p&gt;


&lt;h2&gt;
  
  
  Log in to Exchange Admin Center (EAC)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Visit &lt;a href="https://admin.exchange.microsoft.com" rel="noopener noreferrer"&gt;https://admin.exchange.microsoft.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Log in using your Microsoft 365 admin account.&lt;/li&gt;
&lt;/ul&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%2Fc3bz4923ningjjbbqojf.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%2Fc3bz4923ningjjbbqojf.png" alt="Image description" width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Navigate to Mail Flow Rules
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In the left pane, select Mail Flow &amp;gt; Rules.&lt;/li&gt;
&lt;li&gt;Click + Add a rule and choose Create a new rule.&lt;/li&gt;
&lt;/ul&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%2F6z47uwa8gg4qw69lmpgr.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%2F6z47uwa8gg4qw69lmpgr.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Configure the Transport Rule
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Name the Rule&lt;/strong&gt;&lt;br&gt;
Name: External Email Security Disclaimer (or a descriptive name).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Set Conditions&lt;/strong&gt;&lt;br&gt;
Under Apply this rule if…, select The sender is located… &amp;gt; Outside the organization.&lt;/p&gt;

&lt;p&gt;This targets emails from external domains.&lt;/p&gt;

&lt;p&gt;(Optional) Add exceptions under Except if… (e.g., exclude emails from trusted partners).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Define the Action&lt;/strong&gt;&lt;br&gt;
Under Do the following…, select Apply a disclaimer &amp;gt; Prepend a disclaimer….&lt;/p&gt;

&lt;p&gt;Click Enter text and paste your security message.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div style="color: #ff0000; font-family: Calibri; border: 1px solid #ff0000; padding: 10px;"&amp;gt;  
&amp;lt;strong&amp;gt;Security Alert:&amp;lt;/strong&amp;gt; This email originated from an external source. Avoid clicking links or attachments unless you verified the sender.  
&amp;lt;/div&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: Use HTML for formatting (supported in modern clients like Outlook and Outlook on the web).&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%2Fpijnugrax3adg3o3qwiw.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%2Fpijnugrax3adg3o3qwiw.png" alt="Image description" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Additional Settings&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rule Mode: Keep as Enforce.&lt;/li&gt;
&lt;li&gt;Audit the rule: Enable if testing.&lt;/li&gt;
&lt;li&gt;Priority: Adjust if other rules conflict.&lt;/li&gt;
&lt;/ul&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%2F1nzvg29xiu252tyjpi8o.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%2F1nzvg29xiu252tyjpi8o.png" alt="Image description" width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Save and Enable the Rule
&lt;/h2&gt;

&lt;p&gt;Click Next &amp;gt; Finish &amp;gt; Save.&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%2Fe91p7d2z3aitflrmk23w.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%2Fe91p7d2z3aitflrmk23w.png" alt="Image description" width="800" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- The rule is deactivated by default; the rule needs to be activated.&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%2Fg4ztpftv22pkkuqhphgf.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%2Fg4ztpftv22pkkuqhphgf.png" alt="Image description" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Rule Activated&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%2Fkhdlmw5j72qo7d9uoiau.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%2Fkhdlmw5j72qo7d9uoiau.png" alt="Image description" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Test the Rule
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Send a test email from an external account (e.g., Gmail) to a user in your domain.&lt;/li&gt;
&lt;li&gt;Verify the disclaimer appears at the top of the email body.&lt;/li&gt;
&lt;li&gt;Check clients: Outlook, Outlook on the web, mobile devices.&lt;/li&gt;
&lt;/ul&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%2Faa7s8nfyzghv29pyfpl2.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%2Faa7s8nfyzghv29pyfpl2.png" alt="Image description" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Troubleshooting&lt;br&gt;
Disclaimer Not Appearing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm the sender is truly external (check headers via Message Trace in EAC).&lt;/li&gt;
&lt;li&gt;Ensure no conflicting rules are overriding it (adjust priority in Rules list).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;By implementing this transport rule, you add a critical layer of security awareness to your organization’s email communications. The disclaimer serves as a constant reminder for users to scrutinize external messages, reducing the likelihood of successful phishing or malware attacks.&lt;/p&gt;

&lt;p&gt;Key Takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transport rules are flexible and can be customized further (e.g., adding multilingual disclaimers).&lt;/li&gt;
&lt;li&gt;Regularly review the rule’s effectiveness via message trace logs.&lt;/li&gt;
&lt;li&gt;Combine this with other security measures (e.g., anti-spam policies, DMARC) for robust protection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay proactive by periodically updating the disclaimer text to reflect emerging threats or organizational policies. With this setup, your users become the first line of defense against email-borne risks.&lt;/p&gt;

</description>
      <category>exchangeonline</category>
      <category>microsoft</category>
      <category>saas</category>
      <category>security</category>
    </item>
    <item>
      <title>Hands-On Guide: Assigning a Team Policy, Deleting, and Restoring a User in Microsoft Teams</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sun, 13 Apr 2025 14:48:06 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/hands-on-guide-assigning-a-team-policy-deleting-and-restoring-a-user-in-microsoft-teams-4m5e</link>
      <guid>https://forem.com/seyilufadejucyberservices/hands-on-guide-assigning-a-team-policy-deleting-and-restoring-a-user-in-microsoft-teams-4m5e</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION
&lt;/h2&gt;

&lt;p&gt;Microsoft Teams policies are critical for governing how users collaborate, communicate, and participate in meetings. However, when users are deleted and restored, understanding how their assigned policies behave is essential for maintaining governance and user experience. This guide walks you through assigning a custom policy to a user, deleting the user, and restoring them to test whether policy assignments persist. This exercise is particularly useful for validating backup/restore processes or troubleshooting policy inheritance in dynamic environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Assign a Policy to a User in Teams Admin Center
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Admin access to the Microsoft Teams Admin Center and Microsoft 365 Admin Center.&lt;/li&gt;
&lt;li&gt;A custom policy (e.g., Messaging Policy, Meeting Policy) already created (or use an existing one).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a Custom Policy (Optional):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Microsoft Teams Admin Center → Navigate to the policy type (e.g., Teams Policies under Teams).&lt;/li&gt;
&lt;li&gt;Click + Add to create a new policy (e.g., name it Disabalecreateprivate&amp;amp;sharedchannel). Configure settings and save.&lt;/li&gt;
&lt;/ul&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%2F6sgs2limlkps9mj3azzb.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%2F6sgs2limlkps9mj3azzb.png" alt="Image description" width="800" height="321"&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%2F2xgau0sji7ti1wsifxbf.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%2F2xgau0sji7ti1wsifxbf.png" alt="Image description" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Assign the Policy to the User:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Teams Admin Center, navigate to Users → Manage Users.&lt;/li&gt;
&lt;li&gt;Search for the target user (e.g., &lt;a href="mailto:user@domain.com"&gt;user@domain.com&lt;/a&gt;) and click their name.&lt;/li&gt;
&lt;/ul&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%2Fvsy8lz38vdxdyy2iwgas.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%2Fvsy8lz38vdxdyy2iwgas.png" alt="Image description" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under Policies, select the policy type (e.g., Teams Policy) and choose your custom policy (e.g., Disabalecreateprivate&amp;amp;sharedchannel).&lt;/li&gt;
&lt;/ul&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%2Fsw61srzbeakpmlcem2u5.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%2Fsw61srzbeakpmlcem2u5.png" alt="Image description" width="800" height="353"&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%2Fn26crx9mo0covvidf4q0.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%2Fn26crx9mo0covvidf4q0.png" alt="Image description" width="800" height="608"&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%2Fyt0n3vad1lwmfldill52.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%2Fyt0n3vad1lwmfldill52.png" alt="Image description" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Save.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alternatively: Use Bulk Edit in the Teams Admin Center to assign policies to multiple users.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Delete the User
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Microsoft 365 Admin Center → Users → Active Users.&lt;/li&gt;
&lt;li&gt;Search for the user (e.g., &lt;a href="mailto:user@domain.com"&gt;user@domain.com&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Select the user and click Delete user.&lt;/li&gt;
&lt;li&gt;Confirm deletion. The user will move to Deleted Users for 30 days.&lt;/li&gt;
&lt;/ul&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%2Fmtis92fv8192eqkev8dj.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%2Fmtis92fv8192eqkev8dj.png" alt="Image description" width="800" height="302"&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%2Fzno4tuf4sbuvswoe0cij.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%2Fzno4tuf4sbuvswoe0cij.png" alt="Image description" width="800" height="472"&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%2Fsk2x3jcwe4w3iqznnvfq.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%2Fsk2x3jcwe4w3iqznnvfq.png" alt="Image description" width="594" height="906"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Restore the Deleted User
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Microsoft 365 Admin Center, go to Users → Deleted Users.&lt;/li&gt;
&lt;li&gt;Find the deleted user and select Restore User.&lt;/li&gt;
&lt;/ul&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%2F49zk2qofuk6hv2de34es.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%2F49zk2qofuk6hv2de34es.png" alt="Image description" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow prompts to restore the account (e.g., reset password, reassign licenses if required).&lt;/li&gt;
&lt;li&gt;Click Restore.&lt;/li&gt;
&lt;/ul&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%2F5p2skxij4xpxlrd9ldpf.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%2F5p2skxij4xpxlrd9ldpf.png" alt="Image description" width="800" height="470"&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%2F5u0g56fs41ip5dzainia.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%2F5u0g56fs41ip5dzainia.png" alt="Image description" width="593" height="903"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Verify Policy Assignment After Restoration
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Return to Microsoft Teams Admin Center → Users → Manage Users.&lt;/li&gt;
&lt;li&gt;Search for the restored user and click their name.&lt;/li&gt;
&lt;/ul&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%2F5p12xz3n7xdn5b21psx6.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%2F5p12xz3n7xdn5b21psx6.png" alt="Image description" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check the Policies section:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the previously assigned policy (e.g., Disabalecreateprivate&amp;amp;sharedchannel) is listed, the policy persisted after restoration.&lt;/li&gt;
&lt;li&gt;If not, the policy reverted to the global/default policy.&lt;/li&gt;
&lt;/ul&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%2Fckecowgx3io0hxfnduaf.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%2Fckecowgx3io0hxfnduaf.png" alt="Image description" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  CONCLUSION
&lt;/h2&gt;

&lt;p&gt;This guide demonstrates how to test policy persistence for users in Microsoft Teams through deletion and restoration. Key takeaways:&lt;/p&gt;

&lt;p&gt;Directly assigned policies do survive user deletion; restored users revert to the directly assigned policies.&lt;/p&gt;

&lt;p&gt;For long-term policy management, prioritize group-based assignments to automate policy enforcement and reduce manual reconfiguration. Always test policy behavior during user lifecycle changes to ensure compliance with your organization’s governance standards. Use tools like PowerShell or the Teams Admin Center to audit policies proactively.&lt;/p&gt;

&lt;p&gt;By mastering these steps, you can confidently manage Teams users while ensuring policies align with your organization’s evolving needs.&lt;/p&gt;

</description>
      <category>microsoftteam</category>
      <category>microsoft</category>
      <category>microsoftgraph</category>
      <category>webdev</category>
    </item>
    <item>
      <title>PowerShell Commands for SharePoint Administration Guide</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sat, 05 Apr 2025 22:10:11 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/powershell-commands-for-sharepoint-administration-guide-5fkh</link>
      <guid>https://forem.com/seyilufadejucyberservices/powershell-commands-for-sharepoint-administration-guide-5fkh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to PowerShell Commands for SharePoint Online
&lt;/h2&gt;

&lt;p&gt;PowerShell is a powerful scripting tool that simplifies SharePoint Online management, allowing administrators to automate tasks like site creation, user management, and more. The SharePoint Online Management Shell provides cmdlets starting with "SPO" for tenant and site collection administration. Below, I detail ten important commands, focusing on creating sites, adding members, listing sites, and related tasks, along with how to list all available cmdlets.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;NOTE: Check and Install the Module&lt;/strong&gt;&lt;br&gt;
Next, check if the SharePoint Online Management Shell module is installed by running this command in an elevated (administrator) PowerShell session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Get-Module -ListAvailable -Name Microsoft.Online.SharePoint.PowerShell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If nothing appears, the module isn't installed. To install it, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Module -Name Microsoft.Online.SharePoint.PowerShell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Detailed Command Explanations&lt;/strong&gt;&lt;br&gt;
Here are ten key PowerShell commands for SharePoint Online, each with syntax, examples, and explanations:&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%2Fdxmdqvb9nwb3y2dl60hk.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%2Fdxmdqvb9nwb3y2dl60hk.png" alt="Image description" width="769" height="813"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Detailed Analysis of Ten Important Commands
&lt;/h2&gt;

&lt;p&gt;Below is a detailed breakdown of each command, including syntax, examples, and explanations, ensuring a thorough understanding for SharePoint administrators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Connect-SPOService&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%2Faj0c2ahpkz7vp4lymbmp.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%2Faj0c2ahpkz7vp4lymbmp.png" alt="Image description" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Establishes a connection to the SharePoint Online Administration Center, a prerequisite for other SPO cmdlets. It maintains a single connection per PowerShell session, requiring disconnection for different organizations by delegated partner administrators.&lt;/li&gt;
&lt;li&gt;Syntax: Connect-SPOService -Url  &lt;/li&gt;
&lt;li&gt;Example: Connect-SPOService -Url &lt;a href="https://contoso-admin.sharepoint.com" rel="noopener noreferrer"&gt;https://contoso-admin.sharepoint.com&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet is crucial for initiating management sessions, ensuring administrators can execute subsequent commands. It requires SharePoint Online administrator permissions, and for more details.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Get-SPOSite&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%2Fykyarcwgwqe4ud2g10nk.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%2Fykyarcwgwqe4ud2g10nk.png" alt="Image description" width="800" height="336"&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%2Fs5phu1ag22z2t9tdxync.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%2Fs5phu1ag22z2t9tdxync.png" alt="Image description" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Retrieves one or more site collections, useful for listing all sites or filtering by specific criteria.&lt;/li&gt;
&lt;li&gt;Syntax: Get-SPOSite [-Identity ] [-Limit ] [-Filter ] [-Detailed]&lt;/li&gt;
&lt;li&gt;Example: Get-SPOSite&lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet lists site collections, with options to filter by URL or get detailed information. It's vital for inventory management.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Set-SPOSite&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%2Flwe0l02zkj2ku52ibke2.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%2Flwe0l02zkj2ku52ibke2.png" alt="Image description" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Updates properties of an existing site collection, such as title, storage quota, or sharing settings.&lt;/li&gt;
&lt;li&gt;Syntax: Set-SPOSite -Identity  [-Title ] [-StorageQuota ] [-ResourceQuota ] [-LockState ] [-SharingCapability ] [-AllowSelfServiceUpgrade ] [-DenyAddAndCustomizePages ]&lt;/li&gt;
&lt;li&gt;Example: Set-SPOSite -Identity &lt;a href="https://contoso.sharepoint.com/sites/newsite" rel="noopener noreferrer"&gt;https://contoso.sharepoint.com/sites/newsite&lt;/a&gt; -Title "New Site Title"&lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet allows modifications to site settings, enhancing flexibility in administration&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Remove-SPOSite&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%2Fkd71o55rg9j69wbx7db0.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%2Fkd71o55rg9j69wbx7db0.png" alt="Image description" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Deletes a site collection, moving it to the Recycle Bin for potential recovery.&lt;/li&gt;
&lt;li&gt;Syntax: Remove-SPOSite -Identity  [-NoWait]&lt;/li&gt;
&lt;li&gt;Example: Remove-SPOSite -Identity &lt;a href="https://contoso.sharepoint.com/sites/newsite" rel="noopener noreferrer"&gt;https://contoso.sharepoint.com/sites/newsite&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Explanation: Essential for site cleanup, this cmdlet ensures sites can be restored if needed&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- New-SPOSiteGroup&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%2Fv85sl4gg7kqvg8o0p6rb.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%2Fv85sl4gg7kqvg8o0p6rb.png" alt="Image description" width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Creates a new SharePoint group in a site collection, assigning permission levels.&lt;/li&gt;
&lt;li&gt;Syntax: New-SPOSiteGroup -Site  -Group  [-PermissionLevels ]&lt;/li&gt;
&lt;li&gt;Example: New-SPOSiteGroup -Site &lt;a href="https://contoso.sharepoint.com/sites/newsite" rel="noopener noreferrer"&gt;https://contoso.sharepoint.com/sites/newsite&lt;/a&gt; -Group "New Group" -PermissionLevels "Contribute"&lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet is crucial for managing access control, creating groups for specific permissions&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Add-SPOUser&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%2Fury55i8ozfvazvl0uhks.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%2Fury55i8ozfvazvl0uhks.png" alt="Image description" width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Adds a user or security group to a SharePoint group, facilitating user management.&lt;/li&gt;
&lt;li&gt;Syntax: Add-SPOUser -Site  -LoginName  -Group &lt;/li&gt;
&lt;li&gt;Example: Add-SPOUser -Site &lt;a href="https://contoso.sharepoint.com/sites/newsite" rel="noopener noreferrer"&gt;https://contoso.sharepoint.com/sites/newsite&lt;/a&gt; -LoginName &lt;a href="mailto:user@contoso.com"&gt;user@contoso.com&lt;/a&gt; -Group "Members"&lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet adds users to groups, granting permissions, with documentation at Add-SPOUser.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Get-SPOUser&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%2F6joax5w647xqlac5yo7e.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%2F6joax5w647xqlac5yo7e.png" alt="Image description" width="800" height="366"&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%2Fqv62mnkjc0dw2jg48i4l.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%2Fqv62mnkjc0dw2jg48i4l.png" alt="Image description" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Lists users in a site collection, with options to filter by login name or group.&lt;/li&gt;
&lt;li&gt;Syntax: Get-SPOUser -Site  [-LoginName ] [-Group ]&lt;/li&gt;
&lt;li&gt;Example: Get-SPOUser -Site &lt;a href="https://contoso.sharepoint.com/sites/newsite" rel="noopener noreferrer"&gt;https://contoso.sharepoint.com/sites/newsite&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Explanation: Useful for auditing user access&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Set-SPOTenant&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%2Fzukmcxoido8sm8y4xh67.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%2Fzukmcxoido8sm8y4xh67.png" alt="Image description" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Configures tenant-wide settings, such as sharing capabilities and user interface options.&lt;/li&gt;
&lt;li&gt;Syntax: Set-SPOTenant [-AllowDownloadingNonWebViewableFiles ] [-AllowEditing ] [-CommentsOnSitePagesDisabled ] [-DefaultSharingLinkType ] [-DisableBackToClassic ] [-ExternalServicesEnabled ] [-NoAccessRedirectUrl ] [-SharingCapability ] [-ShowAllUsersClaim ] [-ShowEveryoneClaim ] [-ShowEveryoneExceptExternalUsersClaim ] [-UsePersistentCookiesForExplorerView ]&lt;/li&gt;
&lt;li&gt;Example: Set-SPOTenant -SharingCapability ExternalUserSharingOnly&lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet manages global settings, crucial for tenant-wide policies&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- Get-SPOTenant&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%2Frkpu2cx7xh0nam09ykn8.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%2Frkpu2cx7xh0nam09ykn8.png" alt="Image description" width="800" height="381"&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%2Fbus4qs9fm2osw85262ff.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%2Fbus4qs9fm2osw85262ff.png" alt="Image description" width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Displays current tenant-wide settings for verification and auditing.&lt;/li&gt;
&lt;li&gt;Syntax: Get-SPOTenant&lt;/li&gt;
&lt;li&gt;Example: Get-SPOTenant&lt;/li&gt;
&lt;li&gt;Explanation: Essential for reviewing tenant configurations&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;- New-SPOSite&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%2F9i81ce2f5b11o2h3w4qk.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%2F9i81ce2f5b11o2h3w4qk.png" alt="Image description" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Creates a new site collection for the current company, failing if a deleted site with the same URL exists in the Recycle Bin.&lt;/li&gt;
&lt;li&gt;Syntax: New-SPOSite -Url  -Owner  -StorageQuota  [-Template ] [-Title ] [-LocaleId ] [-TimeZoneId ] [-ResourceQuota ] [-NoWait] [-CompatibilityLevel ]&lt;/li&gt;
&lt;li&gt;Example: New-SPOSite -Url &lt;a href="https://contoso.sharepoint.com/sites/newsite" rel="noopener noreferrer"&gt;https://contoso.sharepoint.com/sites/newsite&lt;/a&gt; -Owner &lt;a href="mailto:admin@contoso.com"&gt;admin@contoso.com&lt;/a&gt; -StorageQuota 1024 -Template STS#0&lt;/li&gt;
&lt;li&gt;Explanation: This cmdlet is essential for site creation, specifying URL, owner, storage quota, and template (e.g., STS#0 for team sites). It supports modern and classic site types, requiring administrator permissions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Get-SPOSite | Select Title, Url, Template, StorageQuota | Export-Csv -Path
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Detailed Explanation and Analysis:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get-SPOSite:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This cmdlet is used to retrieve all site collections in a SharePoint Online environment. It provides a list of existing sites, pulling data about each site collection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pipeline (|):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In PowerShell, the pipe (|) operator is used to send the output of one cmdlet as input into another cmdlet. This allows for efficient chaining of commands to manipulate and format data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Select Title, Url, Template, StorageQuota:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This portion of the command uses the Select-Object cmdlet (implicitly invoked by Select). It is used to specify which properties of the site collections retrieved by Get-SPOSite should be included in the output.&lt;/li&gt;
&lt;li&gt;Title: The display name of the site collection.&lt;/li&gt;
&lt;li&gt;Url: The web address where the site collection can be accessed.&lt;/li&gt;
&lt;li&gt;Template: The template type used to create the site collection (e.g., team site, communication site).&lt;/li&gt;
&lt;li&gt;StorageQuota: The storage limit set for the site collection, usually specified in megabytes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Export-Csv -Path:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The final part of the command utilizes the Export-Csv cmdlet to export the selected site properties into a CSV (Comma-Separated Values) file.&lt;/li&gt;
&lt;li&gt;The -Path parameter specifies the location and name of the CSV file where the output will be saved.&lt;/li&gt;
&lt;li&gt;When using -Path, it's essential to replace it with an actual file path (e.g., -Path "C:\SitesInfo.csv") to direct the output correctly.&lt;/li&gt;
&lt;/ul&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%2F8lictoj4iqvpngjbaohy.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%2F8lictoj4iqvpngjbaohy.png" alt="Image description" width="800" height="233"&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%2Fshybr2fmqel2jswh5blu.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%2Fshybr2fmqel2jswh5blu.png" alt="Image description" width="800" height="215"&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%2Fkhcwwroh1f4ihi1z1udy.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%2Fkhcwwroh1f4ihi1z1udy.png" alt="Image description" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Mastering these PowerShell commands empowers administrators to automate SharePoint tasks efficiently. From creating sites with New-PnPSite to auditing tenants via Get-PnPTenantSite, these cmdlets reduce manual effort and ensure consistency. Always validate parameters and handle errors using Try/Catch blocks in scripts. For advanced scenarios, combine these commands with tools like Export-CSV or Azure Automation to build scalable solutions. By integrating PowerShell into your SharePoint workflow, you unlock unparalleled control over your environment’s lifecycle management.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Step-by-Step Guide to Migrating Files to Microsoft 365 Using the Migration Agent</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sun, 30 Mar 2025 21:05:15 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/a-step-by-step-guide-to-migrating-files-to-microsoft-365-using-the-migration-agent-5gmp</link>
      <guid>https://forem.com/seyilufadejucyberservices/a-step-by-step-guide-to-migrating-files-to-microsoft-365-using-the-migration-agent-5gmp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Migrating your organization's files to Microsoft 365 is a transformative step that brings numerous benefits, such as enhanced collaboration, robust security, and seamless access to cutting-edge Office applications. By utilizing SharePoint, Teams, and OneDrive, your team can work more efficiently and productively in a cloud-based environment. To streamline this process, Microsoft provides the Migration Manager, accessible through the SharePoint Admin Center. This powerful tool allows you to set up multiple servers as "agents" to scale your migration efforts, ensuring a smooth and efficient transition. In this guide, we will walk you through the detailed process of downloading and using the Migration Agent to migrate your files to Microsoft 365, empowering your organization to fully leverage the cloud's capabilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step Guide
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Prepare for Migration&lt;/strong&gt;&lt;br&gt;
Before initiating the migration process, ensure that you have the necessary permissions and access in place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to the SharePoint Admin Center: You must have SharePoint Administrator privileges or equivalent permissions to use the Migration Manager.&lt;/li&gt;
&lt;li&gt;Administrative Rights on the Computer: The Migration Agent needs to be installed on a computer or virtual machine (VM) where you have administrative rights.&lt;/li&gt;
&lt;li&gt;Read Access to File Shares: The Windows credentials used during agent setup must have read access to the file shares you intend to migrate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Proper preparation ensures a seamless setup and execution of the migration process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Download and Install the Migration Agent
&lt;/h2&gt;

&lt;p&gt;Follow these steps to download and install the Migration Agent:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Sign in to the SharePoint Admin Center:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open your browser and log in to the SharePoint Admin Center using your SharePoint Admin credentials.&lt;/li&gt;
&lt;/ul&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%2Fsspg3mbdn6k6x1wcnhf1.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%2Fsspg3mbdn6k6x1wcnhf1.png" alt="Image description" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Navigate to the Migration Center:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From the left-hand menu, select Migration to access the Migration Center.&lt;/li&gt;
&lt;/ul&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%2F7k7shj9ovejx9du3vfac.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%2F7k7shj9ovejx9du3vfac.png" alt="Image description" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Download the Agent Setup File:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the "For file shares" section, click Get started.&lt;/li&gt;
&lt;/ul&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%2F8fhuu4g89a1bn1r2n2ml.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%2F8fhuu4g89a1bn1r2n2ml.png" alt="Image description" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switch to the Agents tab and click Add.&lt;/li&gt;
&lt;li&gt;Click Download agent setup file to obtain the latest version of the Migration Agent.&lt;/li&gt;
&lt;/ul&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%2Fuxsymu3pyjgjufhawrpb.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%2Fuxsymu3pyjgjufhawrpb.png" alt="Image description" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Install the Agent:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locate the downloaded setup file on your computer or VM and run it.&lt;/li&gt;
&lt;li&gt;Follow the on-screen instructions to complete the installation.&lt;/li&gt;
&lt;li&gt;During the setup, you’ll be prompted to enter:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Your SharePoint Admin credentials to authenticate with Microsoft 365.&lt;/li&gt;
&lt;li&gt;Windows credentials with read access to the file shares.&lt;/li&gt;
&lt;/ol&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%2Fy4turc32j18prc46bqjh.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%2Fy4turc32j18prc46bqjh.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once installed, the agent runs as a service, connecting your on-premises source to your Microsoft 365 destination.&lt;/li&gt;
&lt;/ul&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%2F34aa80qo2ji4cfjhdy1m.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%2F34aa80qo2ji4cfjhdy1m.png" alt="Image description" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repeat this process on additional computers or VMs if you need multiple agents to handle larger migrations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Set Up Migration Tasks
&lt;/h2&gt;

&lt;p&gt;With the agent installed, you can now configure migration tasks:&lt;br&gt;
&lt;strong&gt;Create a New Migration Task:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Migration Center, click Add task.&lt;/li&gt;
&lt;/ul&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%2Fet9g0ro9d1ycn73wjoh6.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%2Fet9g0ro9d1ycn73wjoh6.png" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose between:&lt;/li&gt;
&lt;li&gt;Single source and destination: Ideal for migrating a few file shares.&lt;/li&gt;
&lt;li&gt;Bulk migration: Suitable for multiple file shares using a CSV file.&lt;/li&gt;
&lt;/ul&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%2Fuc1lmcb7kt850d31gilv.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%2Fuc1lmcb7kt850d31gilv.png" alt="Image description" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Specify the Source and Destination:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source: Input the file share path (e.g., \contoso\fileshare).&lt;/li&gt;
&lt;/ul&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%2Fr3nhihlcuy80kfsxmke7.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%2Fr3nhihlcuy80kfsxmke7.png" alt="Image description" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Destination: Select the Microsoft 365 location—SharePoint site, OneDrive, or Teams—and provide the corresponding URL or account details.&lt;/li&gt;
&lt;/ul&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%2Fzh2afwsobwn7gdlvah56.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%2Fzh2afwsobwn7gdlvah56.png" alt="Image description" width="800" height="625"&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%2F22ozyktvtsv0onf50us6.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%2F22ozyktvtsv0onf50us6.png" alt="Image description" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Configure Task Settings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assign a friendly name to your task for easy identification.&lt;/li&gt;
&lt;li&gt;Optionally, assign the task to a specific agent group if multiple agents are available.&lt;/li&gt;
&lt;li&gt;Adjust any additional settings, such as filters or permissions, as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Schedule or Run the Task:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose to run the task immediately or schedule it for a later time.&lt;/li&gt;
&lt;li&gt;Click Run to start the migration process.&lt;/li&gt;
&lt;/ul&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%2Flf7watyeegfqccc8v49n.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%2Flf7watyeegfqccc8v49n.png" alt="Image description" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Migration Manager can automatically distribute tasks across available agents, optimizing the migration workload.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Monitor Migration Progress
&lt;/h2&gt;

&lt;p&gt;Keep track of your migration tasks using the Migration Manager dashboard:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- View Task Status:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Return to the Migration Center to see the status of each task (e.g., Queued, In Progress, Completed).&lt;/li&gt;
&lt;/ul&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%2Ftu4lomjlzjsw6fn3ug0a.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%2Ftu4lomjlzjsw6fn3ug0a.png" alt="Image description" width="800" height="428"&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%2F9u7931hw3a548mm3ktl2.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%2F9u7931hw3a548mm3ktl2.png" alt="Image description" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Download Reports:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After a task completes, download summary and detailed reports.&lt;/li&gt;
&lt;li&gt;These reports provide valuable insights, including migrated files, errors, or warnings encountered during the process.
Monitoring ensures you can address any issues promptly and verify the migration’s progress.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 5: Verify and Finalize Migration
&lt;/h2&gt;

&lt;p&gt;Once the migration is complete, take these final steps:&lt;br&gt;
&lt;strong&gt;Check Migrated Content:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the destination (SharePoint, OneDrive, or Teams) to confirm that all files have migrated successfully.&lt;/li&gt;
&lt;li&gt;Verify that permissions and metadata are intact as expected.&lt;/li&gt;
&lt;/ul&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%2Fw3sp32ykaol6wztzsgp0.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%2Fw3sp32ykaol6wztzsgp0.png" alt="Image description" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rerun Tasks if Necessary:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If new or updated files need to be migrated, rerun the task to perform an incremental migration.&lt;/li&gt;
&lt;li&gt;This step ensures that your data is fully transitioned and accessible in Microsoft 365.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Migrating files to Microsoft 365 using the Migration Agent from the SharePoint Admin Center is a straightforward yet powerful process that can revolutionize how your organization operates. By following this step-by-step guide, you can seamlessly transition your files to the cloud, unlocking enhanced collaboration, security, and productivity through Microsoft 365’s innovative tools. The Migration Manager simplifies the process by providing an intuitive interface, automated task distribution, and detailed monitoring capabilities. Embrace this opportunity to modernize your workflow and ensure a successful migration today!&lt;/p&gt;

</description>
      <category>sharepointframework</category>
      <category>sharepoint</category>
      <category>cloudcomputing</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Comprehensive Guide to Building a CI/CD Pipeline in AWS with GitHub</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sun, 30 Mar 2025 20:08:00 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/comprehensive-guide-to-building-a-cicd-pipeline-in-aws-with-github-j4m</link>
      <guid>https://forem.com/seyilufadejucyberservices/comprehensive-guide-to-building-a-cicd-pipeline-in-aws-with-github-j4m</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;CI/CD (Continuous Integration/Continuous Delivery) pipelines are foundational to modern software development, enabling teams to automate building, testing, and deploying code. Benefits include:&lt;/p&gt;

&lt;p&gt;Faster Delivery: Automate repetitive tasks to release updates rapidly.&lt;/p&gt;

&lt;p&gt;Improved Quality: Catch bugs early with automated testing.&lt;/p&gt;

&lt;p&gt;Reduced Errors: Minimize manual intervention in deployments.&lt;/p&gt;

&lt;p&gt;Scalability: Easily adapt pipelines to handle growing workloads.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Prepare Sample Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Create a Simple Web Application&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%2Fyubd5ka1mkejc4idante.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%2Fyubd5ka1mkejc4idante.png" alt="Image description" width="800" height="448"&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%2Fj4lxesggj0x9ovf0txrs.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%2Fj4lxesggj0x9ovf0txrs.png" alt="Image description" width="800" height="967"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 Push Code to GitHub
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new repository on GitHub.&lt;/li&gt;
&lt;li&gt;Commit and push your code:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/lufadeju/MyDemoRepo.git
git push -u origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Favd3ew48t09lwptq1m5w.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%2Favd3ew48t09lwptq1m5w.png" alt="Image description" width="800" height="386"&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%2F1li8e0yc2p9gk3xr2h9f.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%2F1li8e0yc2p9gk3xr2h9f.png" alt="Image description" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Create an Amazon EC2 Linux instance and install the CodeDeploy agent
&lt;/h2&gt;

&lt;p&gt;In this step, you create the Amazon EC2 instance where you deploy a sample application. As part of this process, create an instance role that allows install and management of the CodeDeploy agent on the instance. The CodeDeploy agent is a software package that enables an instance to be used in CodeDeploy deployments. You also attach policies that allow the instance to fetch files that the CodeDeploy agent uses to deploy your application and to allow the instance to be managed by SSM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To create an instance role&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the IAM console at &lt;a href="https://console.aws.amazon.com/iam/" rel="noopener noreferrer"&gt;site&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;From the console dashboard, choose Roles.&lt;/li&gt;
&lt;li&gt;Choose Create role.&lt;/li&gt;
&lt;/ul&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%2F8xgwmyylazyx6hi5by3c.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%2F8xgwmyylazyx6hi5by3c.png" alt="Image description" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under Select type of trusted entity, select AWS service.&amp;gt;&amp;gt; Under Choose a use case, select EC2.&amp;gt;&amp;gt; Under Select your use case, choose EC2. Choose Next: Permissions.&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%2F5b2019jo23m92544qf2m.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%2F5b2019jo23m92544qf2m.png" alt="Image description" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for and select the policy named AmazonEC2RoleforAWSCodeDeploy.&lt;/li&gt;
&lt;li&gt;Search for and select the policy named AmazonSSMManagedInstanceCore. Choose Next: Tags.
&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%2Ftovdfpd92cgvq8nmrgyr.png" alt="Image description" width="800" height="102"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choose Next: Review. Enter a name for the role (for example, EC2InstanceRole).&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%2Fxcmmh1ygzrswiaw2x4qx.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%2Fxcmmh1ygzrswiaw2x4qx.png" alt="Image description" width="800" height="342"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Note
Make a note of your role name for the next step. You choose this role when you are creating your instance.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Choose Create role.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;To launch an instance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Amazon EC2 console at &lt;a href="https://console.aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;https://console.aws.amazon.com/ec2/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;From the side navigation, choose Instances, and select Launch instances from the top of the page.&lt;/li&gt;
&lt;/ul&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%2Frhlm58510kzmv73oewh3.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%2Frhlm58510kzmv73oewh3.png" alt="Image description" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Name, enter MyCodePipelineDemo. This assigns the instance a tag Key of Name and a tag Value of MyCodePipelineDemo. Later, you create a CodeDeploy application that deploys the sample application to this instance. CodeDeploy selects instances to deploy based on the tags.&lt;/li&gt;
&lt;li&gt;Under Application and OS Images (Amazon Machine Image), locate the Amazon Linux AMI option with the AWS logo, and make sure it is selected. (This AMI is described as the Amazon Linux 2 AMI (HVM) and is labeled "Free tier eligible".)&lt;/li&gt;
&lt;/ul&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%2Fl8qqvwwldqtc8o21d2xs.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%2Fl8qqvwwldqtc8o21d2xs.png" alt="Image description" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under Instance type, choose the free tier eligible t2.micro type as the hardware configuration for your instance.&lt;/li&gt;
&lt;li&gt;Under Key pair (login), choose a key pair or create one.&lt;/li&gt;
&lt;li&gt;You can also choose Proceed without a key pair.&lt;/li&gt;
&lt;/ul&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%2Fgi5n9v095f0tlhskf2ap.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%2Fgi5n9v095f0tlhskf2ap.png" alt="Image description" width="800" height="247"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;For the purposes of this tutorial, you can proceed without a key pair. To use SSH to connect to your instances, create or use a key pair.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Under Network settings, do the following.&lt;/li&gt;
&lt;li&gt;In Auto-assign Public IP, make sure the status is Enable.&lt;/li&gt;
&lt;li&gt;For the created security group, choose HTTP, and then under Source type, choose My IP.&lt;/li&gt;
&lt;/ul&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%2Fij20q2yj5yxra76n7aca.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%2Fij20q2yj5yxra76n7aca.png" alt="Image description" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand Advanced details. In IAM instance profile, choose the IAM role you created in the previous procedure (for example, EC2InstanceRole).&lt;/li&gt;
&lt;li&gt;Under Summary, under Number of instances, enter 1..&lt;/li&gt;
&lt;li&gt;Choose Launch instance.&lt;/li&gt;
&lt;/ul&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%2Fdrfjw81axwt6iam18jlc.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%2Fdrfjw81axwt6iam18jlc.png" alt="Image description" width="800" height="324"&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%2Fz5ykss93k1vbz6rwwg5l.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%2Fz5ykss93k1vbz6rwwg5l.png" alt="Image description" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Step 4: Create an application in CodeDeploy&lt;/p&gt;

&lt;p&gt;In CodeDeploy, an application is a resource that contains the software application you want to deploy. Later, you use this application with CodePipeline to automate deployments of the sample application to your Amazon EC2 instance.&lt;/p&gt;

&lt;p&gt;First, you create a role that allows CodeDeploy to perform deployments. Then, you create a CodeDeploy application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To create a CodeDeploy service role&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the IAM console at &lt;a href="https://console.aws.amazon.com/iam/" rel="noopener noreferrer"&gt;https://console.aws.amazon.com/iam/&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;From the console dashboard, choose Roles.&lt;/li&gt;
&lt;li&gt;Choose Create role.&lt;/li&gt;
&lt;/ul&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%2Ff6tbyla9psjr9msf3au3.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%2Ff6tbyla9psjr9msf3au3.png" alt="Image description" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under Select trusted entity, choose AWS service. &amp;gt;&amp;gt; Under Use case, choose CodeDeploy. &amp;gt;&amp;gt; Choose CodeDeploy from the options listed. Choose Next. The AWSCodeDeployRole managed policy is already attached to the role.&lt;/p&gt;

&lt;p&gt;Choose Next.&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%2Fyxzlcfl8sdhwtouypi8b.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%2Fyxzlcfl8sdhwtouypi8b.png" alt="Image description" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter a name for the role (for example, CodeDeployRole), and then choose Create role.&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%2Fdx129ivamkirg73nvynh.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%2Fdx129ivamkirg73nvynh.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;To create an application in CodeDeploy&lt;/strong&gt;&lt;br&gt;
Open the CodeDeploy console at &lt;a href="https://console.aws.amazon.com/codedeploy" rel="noopener noreferrer"&gt;https://console.aws.amazon.com/codedeploy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If the Applications page does not appear, on the menu, choose Applications.&lt;/p&gt;

&lt;p&gt;Choose Create application.&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%2F5hbkcft0ljihbid0kzth.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%2F5hbkcft0ljihbid0kzth.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Application name, enter MyDemoApplication.&lt;/li&gt;
&lt;li&gt;In Compute Platform, choose EC2/On-premises.&lt;/li&gt;
&lt;li&gt;Choose Create application.&lt;/li&gt;
&lt;/ul&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%2Fcqg09ec1gnoj5r059qo6.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%2Fcqg09ec1gnoj5r059qo6.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;To create a deployment group in CodeDeploy&lt;/strong&gt;&lt;br&gt;
A deployment group is a resource that defines deployment-related settings like which instances to deploy to and how fast to deploy them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the page that displays your application, choose Create deployment group.&lt;/li&gt;
&lt;/ul&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%2Fgxguwddj89qzjw7j2giz.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%2Fgxguwddj89qzjw7j2giz.png" alt="Image description" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Deployment group name, enter MyDemoDeploymentGroup.&lt;/li&gt;
&lt;li&gt;In Service role, choose the ARN of the service role you created earlier (for example, arn:aws:iam::account_ID:role/CodeDeployRole).&lt;/li&gt;
&lt;li&gt;Under Deployment type, choose In-place.&lt;/li&gt;
&lt;/ul&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%2Fuzsapb6psbj4ihq9i4a3.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%2Fuzsapb6psbj4ihq9i4a3.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under Environment configuration, choose Amazon EC2 Instances.&amp;gt;&amp;gt;  In the Key field, enter Name.&amp;gt;&amp;gt; In the Value field, enter the name you used to tag the instance (for example, MyCodePipelineDemo).&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%2Fmfgeuiv92fbpmfxzeao0.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%2Fmfgeuiv92fbpmfxzeao0.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under Agent configuration with AWS Systems Manager, choose Now and schedule updates. This installs the agent on the instance. The Linux instance is already configured with the SSM agent and will now be updated with the CodeDeploy agent.&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%2F2swu5gahe0vxkssb12ye.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%2F2swu5gahe0vxkssb12ye.png" alt="Image description" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under Deployment configuration, choose CodeDeployDefault.OneAtaTime.&lt;/p&gt;

&lt;p&gt;Under Load Balancer, make sure Enable load balancing is not selected. You do not need to set up a load balancer or choose a target group for this example.&lt;/p&gt;

&lt;p&gt;Choose Create deployment group.&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%2Fvms41unpr30gq5vdprkv.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%2Fvms41unpr30gq5vdprkv.png" alt="Image description" width="800" height="288"&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%2Fib1soizqjtbqyit6fb3i.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%2Fib1soizqjtbqyit6fb3i.png" alt="Image description" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Create your first pipeline in CodePipeline
&lt;/h2&gt;

&lt;p&gt;You're now ready to create and run your first pipeline. In this step, you create a pipeline that runs automatically when code is pushed to your CodeCommit repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To create a CodePipeline pipeline&lt;/strong&gt;&lt;br&gt;
Sign in to the AWS Management Console and open the CodePipeline console at &lt;a href="http://console.aws.amazon.com/codesuite/codepipeline/home" rel="noopener noreferrer"&gt;http://console.aws.amazon.com/codesuite/codepipeline/home&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the CodePipeline console at &lt;a href="https://console.aws.amazon.com/codepipeline/" rel="noopener noreferrer"&gt;https://console.aws.amazon.com/codepipeline/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;On the Welcome page, Getting started page, or the Pipelines page, choose Create pipeline.&lt;/li&gt;
&lt;/ul&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%2Fuinj9g1nvcjllkj5ps9y.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%2Fuinj9g1nvcjllkj5ps9y.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the Step 1:&lt;/strong&gt; Choose creation option page, under Creation options, choose the Build custom pipeline option. Choose Next.&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%2Feby8oxib8kg9of8v4yrh.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%2Feby8oxib8kg9of8v4yrh.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;In Step 2:&lt;/strong&gt; Choose pipeline settings, in Pipeline name, enter MyFirstPipeline.&lt;/li&gt;
&lt;li&gt;CodePipeline provides V1 and V2 type pipelines, which differ in characteristics and price. The V2 type is the only type you can choose in the console. For more information, see pipeline types. For information about pricing for CodePipeline, see Pricing.&lt;/li&gt;
&lt;li&gt;In Service role, choose New service role to allow CodePipeline to create a service role in IAM.&lt;/li&gt;
&lt;li&gt;Leave the settings under Advanced settings at their defaults, and then choose Next.&lt;/li&gt;
&lt;/ul&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%2Fn35nn7l85xcgxa8gg4a6.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%2Fn35nn7l85xcgxa8gg4a6.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Step 3: Add source stage, in Source provider, choose GitHub Via OAuth App. &lt;/li&gt;
&lt;li&gt;Choose Next.&lt;/li&gt;
&lt;/ul&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%2Fef0c8nfx15rr8dctecyy.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%2Fef0c8nfx15rr8dctecyy.png" alt="Image description" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Step 4: Add build stage, choose Skip build stage, and then accept the warning message by choosing Skip again. Choose Next.&lt;/li&gt;
&lt;li&gt;In Step 5: Add test stage, choose Skip test stage, and then accept the warning message by choosing Skip again.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Step 6: Add deploy stage, in Deploy provider, choose CodeDeploy. In Application name, choose MyDemoApplication. In Deployment group, choose MyDemoDeploymentGroup, and then choose Next step.&lt;br&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%2Fdpb4euyo0yi5048k2tcc.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%2Fdpb4euyo0yi5048k2tcc.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Step 7: Review, review the information, and then choose Create pipeline.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F7tvtjatm74igf3qx9bxd.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%2F7tvtjatm74igf3qx9bxd.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pipeline starts running after it is created. It downloads the code from your CodeCommit repository and creates a CodeDeploy deployment to your EC2 instance. You can view progress and success and failure messages as the CodePipeline sample deploys the webpage to the Amazon EC2 instance in the CodeDeploy deployment.&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%2Fu7wpp2r7pa0aixixud4h.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%2Fu7wpp2r7pa0aixixud4h.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You just created a simple pipeline in CodePipeline.&lt;/p&gt;

&lt;p&gt;Next, you verify the results.&lt;/p&gt;




&lt;h2&gt;
  
  
  To verify your pipeline ran successfully
&lt;/h2&gt;

&lt;p&gt;View the initial progress of the pipeline. The status of each stage changes from No executions yet to In Progress, and then to either Succeeded or Failed. The running of the pipeline should be complete within a few minutes.&lt;/p&gt;

&lt;p&gt;After Succeeded is displayed for the action status, refresh the demo page you accessed earlier in your browser.&lt;/p&gt;

&lt;p&gt;To Get the link go to the EC 2 instance and copy the ip address&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%2F81h5j1q38sbu2557ygda.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%2F81h5j1q38sbu2557ygda.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The updated webpage is displayed.&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%2Ffnb45a3cp833e0n6aisg.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%2Ffnb45a3cp833e0n6aisg.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This guide outlines how to automate software delivery using AWS CI/CD services (CodePipeline, CodeDeploy) and GitHub. By integrating these tools, teams can streamline building, testing, and deploying code with minimal manual intervention.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cicd</category>
      <category>github</category>
      <category>cloud</category>
    </item>
    <item>
      <title>A Comprehensive Guide to Creating Custom Permissions for Files on SharePoint Sites</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Thu, 27 Mar 2025 21:30:21 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/a-comprehensive-guide-to-creating-custom-permissions-for-files-on-sharepoint-sites-27jb</link>
      <guid>https://forem.com/seyilufadejucyberservices/a-comprehensive-guide-to-creating-custom-permissions-for-files-on-sharepoint-sites-27jb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today’s collaborative work environments, securing sensitive data while enabling efficient teamwork is critical. Microsoft SharePoint, a widely used platform for document management and collaboration, offers robust permission settings to control access to content. By default, SharePoint inherits permissions from parent sites, libraries, or folders, but there are scenarios where custom permissions for individual files are necessary—such as restricting access to confidential documents, complying with data governance policies, or managing project-specific resources.&lt;/p&gt;

&lt;p&gt;This guide provides a step-by-step approach to creating and managing custom permissions for files on SharePoint sites. You’ll learn how to break inheritance, design tailored permission levels, assign access to users or groups, and maintain a secure yet flexible environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding SharePoint Permissions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Key Concepts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permission Inheritance: By default, files inherit permissions from their parent library, folder, or site. Custom permissions require breaking this inheritance.&lt;/li&gt;
&lt;li&gt;Permission Levels: These define actions users can perform (e.g., Read, Edit, Full Control). SharePoint allows customization of these levels.&lt;/li&gt;
&lt;li&gt;Users vs. Groups: Assign permissions to SharePoint groups (recommended) or individual users for streamlined management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to Use Custom Permissions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restricting access to sensitive files (e.g., financial reports, HR documents).&lt;/li&gt;
&lt;li&gt;Granting temporary access to external collaborators.&lt;/li&gt;
&lt;li&gt;Enforcing the principle of least privilege.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step-by-Step Guide to Creating Custom Permissions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Plan Your Permissions Structure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify Requirements: Determine which files need unique access and who requires permission (users/groups).&lt;/li&gt;
&lt;li&gt;Follow Least Privilege: Grant only the necessary level of access (e.g., Read instead of Edit).&lt;/li&gt;
&lt;li&gt;Use Groups: Create or leverage existing SharePoint groups for easier management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Break Permission Inheritance&lt;/strong&gt;&lt;br&gt;
To apply custom permissions to a file, you must first break inheritance from its parent library/folder:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the SharePoint document library.&lt;/li&gt;
&lt;li&gt;Right-click the target file and select Manage Access (modern interface) or Shared With &amp;gt; Advanced (classic experience).&lt;/li&gt;
&lt;/ul&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%2Fpz8mfznvbu08ocvaqp4l.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%2Fpz8mfznvbu08ocvaqp4l.png" alt="Image description" width="800" height="319"&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%2Furxwovoztb6tfl27b86l.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%2Furxwovoztb6tfl27b86l.png" alt="Image description" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Stop Inheriting Permissions to sever the link to the parent’s permissions.&lt;/li&gt;
&lt;/ul&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%2Flz0g35wi51f59vbbcoas.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%2Flz0g35wi51f59vbbcoas.png" alt="Image description" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Create Custom Permission Levels&lt;/strong&gt;&lt;br&gt;
If default levels (e.g., Read, Contribute) don’t meet your needs, create a custom permission level at the site level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Site Settings &amp;gt; Site Permissions &amp;gt; Advanced Permissions Setting &amp;gt; Permission Levels.&lt;/li&gt;
&lt;/ul&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%2Fij5uj5e7f1y84anej8lp.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%2Fij5uj5e7f1y84anej8lp.png" alt="Image description" width="800" height="295"&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%2Fstm0g7vz0mzbc7lj06he.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%2Fstm0g7vz0mzbc7lj06he.png" alt="Image description" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Add a Permission Level, name it (e.g., "View Only – No Download"), and select specific permissions (e.g., View Items but not Open or delete).&lt;/li&gt;
&lt;/ul&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%2F2yo375rswqcm2qou2bhz.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%2F2yo375rswqcm2qou2bhz.png" alt="Image description" width="800" height="310"&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%2Fn8b7akstdyo6rejfl9vf.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%2Fn8b7akstdyo6rejfl9vf.png" alt="Image description" width="800" height="302"&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%2Fg8frmt9opz1cmp3upcvr.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%2Fg8frmt9opz1cmp3upcvr.png" alt="Image description" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save the level.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Assign Permissions to Users/Groups&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the file’s permissions page (Advanced Settings),click on users to  Remove Users Permission &lt;/li&gt;
&lt;/ul&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%2Fi2akovj2mm0qs1u4bpx9.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%2Fi2akovj2mm0qs1u4bpx9.png" alt="Image description" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;click Grant Permissions&lt;/li&gt;
&lt;li&gt;Enter the names/emails of users or groups.&lt;/li&gt;
&lt;li&gt;Select the desired permission level (e.g., custom "View Only" or default "Read").&lt;/li&gt;
&lt;li&gt;Click Share to apply.&lt;/li&gt;
&lt;/ul&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%2F7j7lc6u52qptgk6gyurj.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%2F7j7lc6u52qptgk6gyurj.png" alt="Image description" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Apply Permissions to the File&lt;/strong&gt;&lt;br&gt;
After breaking inheritance and assigning permissions, the file will now have unique access settings.&lt;/p&gt;

&lt;p&gt;Repeat for other files as needed, but avoid over-customizing to prevent complexity.&lt;br&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%2F8hafjgdylb30y1i19bh4.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%2F8hafjgdylb30y1i19bh4.png" alt="Image description" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Test and Validate&lt;/strong&gt;&lt;br&gt;
Log in as a test user to verify access.&lt;/p&gt;

&lt;p&gt;Use SharePoint’s Check Permissions tool (under Site Permissions) to audit access.&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%2Fmmb4w8cp36p6cbdh8w0e.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%2Fmmb4w8cp36p6cbdh8w0e.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Maintain and Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regular Audits: Review permissions quarterly to remove outdated access.&lt;/li&gt;
&lt;li&gt;Documentation: Track custom permissions in a spreadsheet or SharePoint list.&lt;/li&gt;
&lt;li&gt;Leverage Tools: Use SharePoint’s Access Requests and Sensitivity Labels for scalable governance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Custom permissions in SharePoint empower organizations to balance security and collaboration effectively. By breaking inheritance, tailoring permission levels, and assigning access strategically, you can safeguard sensitive files while enabling seamless teamwork. However, over-customization can lead to administrative overhead, so always prioritize simplicity and regular audits.&lt;/p&gt;

&lt;p&gt;With this guide, you’re equipped to implement granular file-level permissions confidently. Combine these practices with SharePoint’s broader governance tools—such as sensitivity labels and compliance policies—to build a secure, efficient, and user-friendly document management ecosystem.&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>microsoft</category>
      <category>cloudcomputing</category>
      <category>sharepointframework</category>
    </item>
    <item>
      <title>Comprehensive Guide to Creating a SharePoint Leave Request System</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sat, 22 Mar 2025 12:32:28 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/comprehensive-guide-to-creating-a-sharepoint-leave-request-system-40ip</link>
      <guid>https://forem.com/seyilufadejucyberservices/comprehensive-guide-to-creating-a-sharepoint-leave-request-system-40ip</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION
&lt;/h2&gt;

&lt;p&gt;In today’s fast‐paced work environment, streamlining leave management can boost efficiency and transparency. This guide will show you how to build a dedicated SharePoint site to manage leave requests. In our scenario, the site will have six members: five workers who submit leave requests and one manager responsible for approving or rejecting them. One worker will receive full permissions on the leave request list (allowing, for example, advanced modifications or administrative tasks on that list), while the other four workers are given edit permissions. The manager will process the requests by approving two and rejecting three. Additionally, custom views will allow each member to quickly see the status of their submissions.&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%2Fasp9ce6q1rip3xt9m990.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%2Fasp9ce6q1rip3xt9m990.png" alt="Image description" width="800" height="761"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This guide provides a step-by-step approach to creating a SharePoint site for managing employee leave requests. The solution includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Team Site with six members (five workers, one manager).&lt;/li&gt;
&lt;li&gt;A Leave Request List where workers submit requests.&lt;/li&gt;
&lt;li&gt;Permissions: One worker has full control over the list, while others can only edit their own requests.&lt;/li&gt;
&lt;li&gt;Approval Workflow: The manager approves/rejects requests, and all members see their request status.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 1: Create a SharePoint Team Site
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to SharePoint Admin Center:&lt;/li&gt;
&lt;li&gt;Go to your organization’s SharePoint portal.&lt;/li&gt;
&lt;li&gt;Click Create site &amp;gt; Team site.&lt;/li&gt;
&lt;/ol&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%2F928sfp1niuwmwbn8p34w.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%2F928sfp1niuwmwbn8p34w.png" alt="Image description" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure Site Details:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Name: "Leave Management Site".&lt;br&gt;
Add a description (optional).&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%2Fajgm0m1xkhbpr3smxl0f.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%2Fajgm0m1xkhbpr3smxl0f.png" alt="Image description" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under Privacy, select "Private".&lt;/li&gt;
&lt;li&gt;Select the default site language for your site. You can't change this later.&lt;/li&gt;
&lt;li&gt;Click Next.&lt;/li&gt;
&lt;/ul&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%2F4q255hskfcc57j8n520e.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%2F4q255hskfcc57j8n520e.png" alt="Image description" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Add Members:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the manager’s email under "Add additional owners".&lt;/li&gt;
&lt;li&gt;Add five workers’ emails under "Add members".&lt;/li&gt;
&lt;li&gt;Click Finish.&lt;/li&gt;
&lt;/ul&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%2F8g65zpyd99bu5z3brufd.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%2F8g65zpyd99bu5z3brufd.png" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Create a Leave Request List
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the New Site:&lt;/li&gt;
&lt;li&gt;Open the newly created site.&lt;/li&gt;
&lt;/ul&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%2Fc2zo6cio5vubtk3ujl7p.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%2Fc2zo6cio5vubtk3ujl7p.png" alt="Image description" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Click + New &amp;gt; List &amp;gt; Blank list.&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%2Fba3pb7oedcys93ju39j6.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%2Fba3pb7oedcys93ju39j6.png" alt="Image description" width="800" height="339"&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%2Fg82y2smq005po02ganxp.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%2Fg82y2smq005po02ganxp.png" alt="Image description" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Name the List:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Title: "Leave Requests".&lt;br&gt;
Click Create.&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%2F4wyr74eopbga609dbvxk.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%2F4wyr74eopbga609dbvxk.png" alt="Image description" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add Columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Default "Title" column: Rename to Leave Type (e.g., Vacation, Sick).&lt;/li&gt;
&lt;li&gt;Start Date: Column type = Date.&lt;/li&gt;
&lt;/ul&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%2Fqkiyn0o972nm9b1ykmio.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%2Fqkiyn0o972nm9b1ykmio.png" alt="Image description" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Follow the same step for the below columns&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requester: Column type = Person&lt;/li&gt;
&lt;li&gt;End Date: Column type = Date.&lt;/li&gt;
&lt;li&gt;Status: Column type = Choice (Options: Pending, Approved, Rejected).&lt;/li&gt;
&lt;li&gt;Comments: Column type = Multiple lines of text.&lt;/li&gt;
&lt;/ul&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%2Fb7vxrsxco4uj7jk5r74f.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%2Fb7vxrsxco4uj7jk5r74f.png" alt="Image description" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Configure Permissions
&lt;/h2&gt;

&lt;p&gt;Goal:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;staff 1: Full control over the list.&lt;/li&gt;
&lt;li&gt;Staff 2-5: Edit only their own items.&lt;/li&gt;
&lt;li&gt;Manager: Approve/reject requests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Break List Inheritance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Go to Leave Requests list &amp;gt; Settings (⚙) &amp;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%2Fycho0zp315p7snah929n.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%2Fycho0zp315p7snah929n.png" alt="Image description" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Under Permissions, click Permissions for this list.&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%2F5amw4ui7i5j00x9u6cmf.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%2F5amw4ui7i5j00x9u6cmf.png" alt="Image description" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Click Stop Inheriting Permissions.&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%2Fkg3ci109lvy7gqxhud0b.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%2Fkg3ci109lvy7gqxhud0b.png" alt="Image description" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Remove Default Groups:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select Members and Visitors groups &amp;gt; Remove User Permissions.&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%2Fhc8bv9sd0f20eszes90c.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%2Fhc8bv9sd0f20eszes90c.png" alt="Image description" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assign Custom Permissions:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Staff 1 (Full Control):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Grant Permissions.&lt;/li&gt;
&lt;li&gt;Enter Staff 1 (Hagital JanGrp1) email or name.&lt;/li&gt;
&lt;li&gt;Select Full Control &amp;gt; Share.&lt;/li&gt;
&lt;/ul&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%2Fht8iicm2w6ao4cfw6l6x.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%2Fht8iicm2w6ao4cfw6l6x.png" alt="Image description" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Staff 2-5 (Edit Access):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click Grant Permissions.&lt;br&gt;
Enter Staff 2-5 emails.&lt;br&gt;
Select Edit &amp;gt; Share.&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%2F4ickii4dhlnjqcs84qn2.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%2F4ickii4dhlnjqcs84qn2.png" alt="Image description" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manager Permissions:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The manager is already in the Owners group (Full Control).&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%2Fmzxwrkpwvnhb0zrwghu7.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%2Fmzxwrkpwvnhb0zrwghu7.png" alt="Image description" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Restrict Item Editing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to List Settings &amp;gt; Advanced Settings.&lt;/li&gt;
&lt;/ul&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%2Foaxcvpfnsscc7mdv0g7k.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%2Foaxcvpfnsscc7mdv0g7k.png" alt="Image description" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under Item-level Permissions:&lt;/li&gt;
&lt;li&gt;Set Edit access to Only their own.&lt;/li&gt;
&lt;/ul&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%2F8tgrwdlg28j95vane575.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%2F8tgrwdlg28j95vane575.png" alt="Image description" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Enable Content Approval
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Configure Versioning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to List Settings &amp;gt; Versioning Settings.&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%2F28g8muhs86aixthvnwki.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%2F28g8muhs86aixthvnwki.png" alt="Image description" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under Content Approval, select Yes.&lt;br&gt;
Click OK.&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%2Fnupcc4h1yd6j0wnep4la.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%2Fnupcc4h1yd6j0wnep4la.png" alt="Image description" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update Status Column:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The default Approval Status column will now track requests as Pending/Approved/Rejected.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Test the Workflow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Staffs Submit Requests:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Staff 1 add items via + New.&lt;/li&gt;
&lt;li&gt;Status defaults to Pending.&lt;/li&gt;
&lt;/ul&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%2Fums4ok0uh452z5ew4x86.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%2Fums4ok0uh452z5ew4x86.png" alt="Image description" width="800" height="446"&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%2Fs70dx38ed3fucu96k01m.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%2Fs70dx38ed3fucu96k01m.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Staff 2 add items via + New.&lt;/li&gt;
&lt;li&gt;Status defaults to Pending.&lt;/li&gt;
&lt;/ul&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%2Ffwlfsh2klqnzsco6104e.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%2Ffwlfsh2klqnzsco6104e.png" alt="Image description" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Staff 3 add items via + New.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Status defaults to Pending.&lt;br&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%2Fvk1dsfyesa0i89brhzod.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%2Fvk1dsfyesa0i89brhzod.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Staff 4 add items via + New.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Status defaults to Pending.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F0as6xuduz51ry0eleiy0.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%2F0as6xuduz51ry0eleiy0.png" alt="Image description" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Staff 5 add items via + New.&lt;/li&gt;
&lt;li&gt;Status defaults to Pending.&lt;/li&gt;
&lt;/ul&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%2F0lf2u54qxhmkx84kjcv1.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%2F0lf2u54qxhmkx84kjcv1.png" alt="Image description" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manager Approval/Rejection:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manager navigates to Dashboard.&lt;/li&gt;
&lt;/ul&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%2Ft29ib29p80a0udqizb1c.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%2Ft29ib29p80a0udqizb1c.png" alt="Image description" width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select a request &amp;gt; Edit.&lt;/li&gt;
&lt;/ul&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%2Fcp2iqnzzxt44gtfoaks5.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%2Fcp2iqnzzxt44gtfoaks5.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update Status to Approved or Rejected.&lt;/li&gt;
&lt;li&gt;Add Comments (optional).&lt;/li&gt;
&lt;/ul&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%2Ffu95n1qv28c9q8e2q47g.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%2Ffu95n1qv28c9q8e2q47g.png" alt="Image description" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the same step to Approve or Reject for other Staffs&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%2Fbf7gf9ns0jd7wf3ui2o6.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%2Fbf7gf9ns0jd7wf3ui2o6.png" alt="Image description" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE : All the approved leave request is visible to all staffs in the department&lt;/strong&gt; (ie Hagital Grp2 Dashboard)&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%2Fcj9tp21fjqkr70k9htzl.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%2Fcj9tp21fjqkr70k9htzl.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Hagital Grp3 can see his leave request which was rejected and can also see  other staffs leave request which was approved&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%2F305kkaflouy2t6jobzd2.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%2F305kkaflouy2t6jobzd2.png" alt="Image description" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I’ve successfully built a SharePoint site for managing leave requests with granular permissions and approval workflows. Key outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Staff 1 manages the list with full control.&lt;/li&gt;
&lt;li&gt;Staff 2–5 submit and edit their own requests.&lt;/li&gt;
&lt;li&gt;Manager approves/rejects requests via dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All members view personalized statuses.&lt;/p&gt;

&lt;p&gt;This solution ensures transparency, accountability, and streamlined communication for leave management. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hands-On Guide: Configuring a Static Website on Amazon S3</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sun, 16 Mar 2025 14:50:42 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/hands-on-guide-configuring-a-static-website-on-amazon-s3-1blh</link>
      <guid>https://forem.com/seyilufadejucyberservices/hands-on-guide-configuring-a-static-website-on-amazon-s3-1blh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Static websites, composed of HTML, CSS, JavaScript, and media files, are ideal for portfolios, blogs, or landing pages. Amazon S3 offers a cost-effective, scalable solution to host static sites without managing servers. This guide walks you through hosting a sample website on S3, covering bucket creation, permissions, and testing. By the end, you’ll have a live site accessible via an S3 endpoint URL.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Step-by-Step Guide&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an S3 Bucket
Step 1.1: Log into the AWS Management Console, navigate to S3, and click Create bucket.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Step 1.2: Name your bucket (e.g., my-static-website-123). Ensure the name is globally unique.&lt;/li&gt;
&lt;/ul&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%2Fl612z26fea06jsbgeyjc.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%2Fl612z26fea06jsbgeyjc.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 1.3: Select a region (e.g., us-east-1).&lt;/li&gt;
&lt;li&gt;Step 1.4: Take the default settings&lt;/li&gt;
&lt;li&gt;Step 1.5: Click Create bucket.&lt;/li&gt;
&lt;/ul&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%2Fsjkka47phvnb02ifhzy7.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%2Fsjkka47phvnb02ifhzy7.png" alt="Image description" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Enable Static Website Hosting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 2.1: Navigate to the Properties tab.&lt;/li&gt;
&lt;/ul&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%2Fu3w287s5ey3zfsvmacqe.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%2Fu3w287s5ey3zfsvmacqe.png" alt="Image description" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 2.2: Scroll to Static website hosting and click Edit.&lt;/li&gt;
&lt;/ul&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%2Fj3ds5y27cbyg18nt61fn.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%2Fj3ds5y27cbyg18nt61fn.png" alt="Image description" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 2.3: Select Enable, then specify:
Index document: index.html
Error document: 404.html&lt;/li&gt;
&lt;/ul&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%2F12uwlka3q6jk84suf2ly.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%2F12uwlka3q6jk84suf2ly.png" alt="Image description" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.4: Click Save.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Configure Bucket Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 3.1: Go to the bucket’s Permissions tab.&lt;/li&gt;
&lt;li&gt;step 3.2: Click Edit on Block public access (bucket settings) to unblock public access&lt;/li&gt;
&lt;/ul&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%2Fvyr70lgw63e0x86z8umw.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%2Fvyr70lgw63e0x86z8umw.png" alt="Image description" width="800" height="323"&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%2F1dn2kkibjdhiqwx9x09c.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%2F1dn2kkibjdhiqwx9x09c.png" alt="Image description" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 3.3: Under Bucket Policy, paste this JSON (replace my-static-website-123 with your bucket name):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-static-website-123/*"
    }
  ]
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F27bkw67cg19vrx6hcvva.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%2F27bkw67cg19vrx6hcvva.png" alt="Image description" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3.3: Click Save.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. Upload Sample Website Files&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%2Fv6ypjywj9i040oen8qt6.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%2Fv6ypjywj9i040oen8qt6.png" alt="Image description" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Click on upload after adding the Files and Folders&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%2Fh3dsp112x2fryq8l7owu.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%2Fh3dsp112x2fryq8l7owu.png" alt="Image description" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- You should have a successful notification after uploading&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%2Fmwwuj6usd2wb7cb2v3w3.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%2Fmwwuj6usd2wb7cb2v3w3.png" alt="Image description" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;5. Test the Website&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 5.1: Under Static website hosting, note the Bucket website endpoint 
(e.g., &lt;a href="http://my-static-website-123.s3-website-us-east-1.amazonaws.com" rel="noopener noreferrer"&gt;http://my-static-website-123.s3-website-us-east-1.amazonaws.com&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&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%2Fhasqbvo8p9po6yhj1slb.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%2Fhasqbvo8p9po6yhj1slb.png" alt="Image description" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Step 5.2: Open the URL in a browser. You should see your uploaded content.&lt;br&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%2Fioy1w32cyv5ao1wes0fb.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%2Fioy1w32cyv5ao1wes0fb.png" alt="Image description" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 5.3: Test the error page by visiting an invalid path (e.g., &lt;a href="http://my-static-website-123.s3-website-us-east-1.amazonaws.com/invalid" rel="noopener noreferrer"&gt;http://my-static-website-123.s3-website-us-east-1.amazonaws.com/invalid&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F530itjogzpjxtgc8qqad.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%2F530itjogzpjxtgc8qqad.png" alt="Image description" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
I’ve successfully hosted a static website on Amazon S3! This setup is ideal for low-cost, high-availability sites. &lt;/p&gt;

&lt;p&gt;By leveraging S3’s simplicity and scalability, you can focus on content creation while AWS handles infrastructure. Explore advanced features like versioning for backups or S3 events for serverless workflows to further optimize your site.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awschallenge</category>
      <category>cloud</category>
      <category>cloudskills</category>
    </item>
    <item>
      <title>Step-by-Step Guide: Creating a SharePoint Site with Custom Permissions</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Wed, 12 Mar 2025 21:46:21 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/step-by-step-guide-creating-a-sharepoint-site-with-custom-permissions-630</link>
      <guid>https://forem.com/seyilufadejucyberservices/step-by-step-guide-creating-a-sharepoint-site-with-custom-permissions-630</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION
&lt;/h2&gt;

&lt;p&gt;SharePoint is a powerful collaboration platform that allows teams to manage documents, workflows, and permissions efficiently. In this guide, I’ll create a SharePoint site for 9 members, set up 3 document folders, and configure granular permissions so that:&lt;/p&gt;

&lt;p&gt;Each folder is accessible by 3 unique members.&lt;/p&gt;

&lt;p&gt;Each folder contains 3 files, with each file accessible by 1 unique member (subset of the folder’s 3 members).&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%2Fgiwwjjehnry6zmbxttve.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%2Fgiwwjjehnry6zmbxttve.png" alt="Image description" width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ensures secure, role-based access to sensitive data. Let’s begin!&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Create a SharePoint Site
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft 365 admin or SharePoint admin privileges.&lt;/li&gt;
&lt;li&gt;A clear purpose for the site (e.g., department collaboration, project management).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEPS TO CREATE A SITE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigate to SharePoint Admin Center:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Microsoft 365 Admin Center → Show all → SharePoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Create a New Site:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Under Sites → Active sites, click Create → Team site or Communication site.&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%2Fhlo1l9kts5id3cxggl6q.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%2Fhlo1l9kts5id3cxggl6q.png" alt="Image description" width="800" height="335"&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%2Fjqtuy8wb4pnknu4aw5kn.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%2Fjqtuy8wb4pnknu4aw5kn.png" alt="Image description" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Team site: For collaboration (includes a Microsoft 365 group).&lt;/li&gt;
&lt;li&gt;Communication site: For broadcasting information (no group).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fill in details:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site name: e.g., "Finance Department Hub".&lt;/li&gt;
&lt;li&gt;Site description: "Briefly explain the site’s purpose."&lt;/li&gt;
&lt;li&gt;Privacy settings: Choose Public (open to all) or Private (restricted access).&lt;/li&gt;
&lt;/ul&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%2Flekuqeabwwqunntv2tyg.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%2Flekuqeabwwqunntv2tyg.png" alt="Image description" width="800" height="502"&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%2F9yy3ptp53pu5gz4p0s9x.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%2F9yy3ptp53pu5gz4p0s9x.png" alt="Image description" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Members:&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%2Fvj3nrdvfkzsuf3xpja92.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%2Fvj3nrdvfkzsuf3xpja92.png" alt="Image description" width="800" height="404"&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%2Fmwv8bpiw4m5e2uzu0aiv.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%2Fmwv8bpiw4m5e2uzu0aiv.png" alt="Image description" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Create Document Folders
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Navigate to Documents Library:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Go to your site → Click Documents on the left menu.&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%2Fslqnuhmvupl3ww6y1nvs.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%2Fslqnuhmvupl3ww6y1nvs.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Folders:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Click New → Folder → Name Folder (Document Library)&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%2Fbueilfs8t9l9v5w095rw.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%2Fbueilfs8t9l9v5w095rw.png" alt="Image description" width="800" height="299"&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%2Fwoydxa5h0p7mfatvmuvv.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%2Fwoydxa5h0p7mfatvmuvv.png" alt="Image description" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create 3 New Folder inside (Document Library)&lt;/strong&gt;&lt;br&gt;
Name the folders Finance, Legal, and Audit.&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%2Flrvuximk397worv9ureu.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%2Flrvuximk397worv9ureu.png" alt="Image description" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Assign Folder Permissions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For each folder:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stop Inheriting Permissions:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Hover over the folder → Click ⋮ (More) → Manage access.&lt;/li&gt;
&lt;/ul&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%2Flo3964nflesbf1j9qi91.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%2Flo3964nflesbf1j9qi91.png" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Advanced settings &lt;/li&gt;
&lt;/ul&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%2Fmkzpmx3qjqpojcornykt.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%2Fmkzpmx3qjqpojcornykt.png" alt="Image description" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select Stop inheriting permissions → Confirm.&lt;/li&gt;
&lt;/ul&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%2F25f8wkd8dx9xpztag7r6.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%2F25f8wkd8dx9xpztag7r6.png" alt="Image description" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove User Permissions&lt;/li&gt;
&lt;/ul&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%2Ftipney1hbmi10yiw3pe1.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%2Ftipney1hbmi10yiw3pe1.png" alt="Image description" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Grant Access to 3 Members:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Click Grant access → Enter 3 member emails or username.&lt;/li&gt;
&lt;/ul&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%2Fjn52q4ti8escjncos653.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%2Fjn52q4ti8escjncos653.png" alt="Image description" width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set permissions to Edit (to allow file uploads).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uncheck Send an email invitation (optional).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Save.&lt;br&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%2F7zcjj6q01p11p16bsty4.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%2F7zcjj6q01p11p16bsty4.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;br&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%2Faqdymrgz6w5668k33ytd.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%2Faqdymrgz6w5668k33ytd.png" alt="Image description" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repeat for Folders B and C with their respective 3 members.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Create Files Inside Folders
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For each folder (e.g., Audit):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Files:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Open the folder → Click New → File (e.g., Word, Excel).&lt;/li&gt;
&lt;/ul&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%2F1e2glvhj4puvrhe19i5v.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%2F1e2glvhj4puvrhe19i5v.png" alt="Image description" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set Unique File Permissions: Assign each file to one member&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Hover over Audit Note → ⋮ (More) → Manage access.&lt;/li&gt;
&lt;/ul&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%2Fgzog0hkie9utori8igyv.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%2Fgzog0hkie9utori8igyv.png" alt="Image description" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Advanced settings → Stop inheriting permissions.&lt;/li&gt;
&lt;/ul&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%2F2o99hp68s77p4986pw22.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%2F2o99hp68s77p4986pw22.png" alt="Image description" width="800" height="309"&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%2Flupk6hb2zimmluujbo0h.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%2Flupk6hb2zimmluujbo0h.png" alt="Image description" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove all existing users except Hagital JanGrp1 &lt;/li&gt;
&lt;/ul&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%2Fzlrce6gvbgtbrd0nrl32.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%2Fzlrce6gvbgtbrd0nrl32.png" alt="Image description" width="800" height="259"&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%2F39bx5cjdcix2puvisqm2.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%2F39bx5cjdcix2puvisqm2.png" alt="Image description" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Repeat for Excel File (Inside Audit folder) with one member (Hagital JanGrp2) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repeat for Powerpoint File (Inside Audit folder) with one member (Hagital JanGrp3)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repeat the above steps for members in Finance folder and Legal Folder&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
I’ve successfully created a SharePoint site with custom permissions to ensure secure collaboration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3 folders with 3 members each.&lt;/li&gt;
&lt;li&gt;3 files per folder, each restricted to 1 member.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audit permissions periodically via Site Settings &amp;gt; Permissions.&lt;/li&gt;
&lt;li&gt;Use SharePoint groups for easier management in larger teams.&lt;/li&gt;
&lt;li&gt;Train members on accessing their designated content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This structure minimizes data exposure while fostering teamwork. SharePoint’s flexibility ensures your organization’s data remains both accessible and secure.&lt;/p&gt;

</description>
      <category>sharepoint</category>
      <category>microsoft365</category>
      <category>cloud</category>
      <category>sharepointframework</category>
    </item>
    <item>
      <title>Detailed Hands-On Guide: Creating a Microsoft 365 SharePoint Site and Setting Up Site Policies</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Sun, 09 Mar 2025 21:30:42 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/detailed-hands-on-guide-getting-started-with-sharepoint-site-and-setting-up-site-policies-1517</link>
      <guid>https://forem.com/seyilufadejucyberservices/detailed-hands-on-guide-getting-started-with-sharepoint-site-and-setting-up-site-policies-1517</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to SharePoint Sites and Governance
&lt;/h2&gt;

&lt;p&gt;SharePoint is a cornerstone of Microsoft 365 for collaboration, document management, and workflow automation. A SharePoint site acts as a centralized hub where teams can store, organize, and share content. However, without proper governance policies and procedures, sites can become disorganized, insecure, or non-compliant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Policies &amp;amp; Procedures Matter&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security: Control access to sensitive data.&lt;/li&gt;
&lt;li&gt;Efficiency: Standardize workflows and reduce redundancy.&lt;/li&gt;
&lt;li&gt;Auditability: Track changes and user activity.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 1: Create a SharePoint Site
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft 365 admin or SharePoint admin privileges.&lt;/li&gt;
&lt;li&gt;A clear purpose for the site (e.g., department collaboration, project management).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEPS TO CREATE A SITE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigate to SharePoint Admin Center:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Microsoft 365 Admin Center → Show all → SharePoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Create a New Site:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Under Sites → Active sites, click Create → Team site or Communication site.&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%2Fhlo1l9kts5id3cxggl6q.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%2Fhlo1l9kts5id3cxggl6q.png" alt="Image description" width="800" height="335"&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%2Fjqtuy8wb4pnknu4aw5kn.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%2Fjqtuy8wb4pnknu4aw5kn.png" alt="Image description" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Team site: For collaboration (includes a Microsoft 365 group).&lt;/li&gt;
&lt;li&gt;Communication site: For broadcasting information (no group).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fill in details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site name: e.g., "Finance Department Hub".&lt;/li&gt;
&lt;li&gt;Site description: "Briefly explain the site’s purpose."&lt;/li&gt;
&lt;li&gt;Privacy settings: Choose Public (open to all) or Private (restricted access).&lt;/li&gt;
&lt;/ul&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%2Flekuqeabwwqunntv2tyg.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%2Flekuqeabwwqunntv2tyg.png" alt="Image description" width="800" height="502"&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%2F9yy3ptp53pu5gz4p0s9x.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%2F9yy3ptp53pu5gz4p0s9x.png" alt="Image description" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Owners/Members:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assign primary owners (admins) and members during setup or later via Settings → Site permissions.&lt;/li&gt;
&lt;/ul&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%2Fwtck9gfjnhgzjttjql6z.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%2Fwtck9gfjnhgzjttjql6z.png" alt="Image description" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customize the Site:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Edit in the header to modify the layout, add web parts (e.g., Document Library, Calendar), or apply a theme.&lt;/li&gt;
&lt;/ul&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%2Fji9cq81so8eyviwzd69a.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%2Fji9cq81so8eyviwzd69a.png" alt="Image description" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Configure Site Settings for Governance
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A. Set Up Permissions&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Manage Access:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Settings (gear icon) → Site permissions.&lt;/li&gt;
&lt;li&gt;Use Advanced permissions settings to:&lt;/li&gt;
&lt;/ol&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%2Funxeeiaicxuvvc3woxeg.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%2Funxeeiaicxuvvc3woxeg.png" alt="Image description" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create unique permission groups (e.g., "Finance Editors", "Finance Viewers").&lt;/li&gt;
&lt;li&gt;Break inheritance from parent sites if needed.&lt;/li&gt;
&lt;/ul&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%2Fdb4yj8dxzt2ydc3rw1li.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%2Fdb4yj8dxzt2ydc3rw1li.png" alt="Image description" width="800" height="316"&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%2Fuh70kmyf8p13lufcbear.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%2Fuh70kmyf8p13lufcbear.png" alt="Image description" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;External Sharing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In SharePoint Admin Center → Policies → Sharing, restrict external sharing if required.&lt;/li&gt;
&lt;/ul&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%2Fyscpb67eb776r6oqm90d.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%2Fyscpb67eb776r6oqm90d.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Configuring SharePoint site policies ensures your organization balances collaboration with compliance. Start by creating structured sites with clear ownership, then layer policies to enforce governance. Regularly audit policies and engage stakeholders to maintain alignment with organizational goals. With these steps, SharePoint becomes not just a collaboration tool but a secure, scalable platform for long-term success.&lt;/p&gt;

</description>
      <category>microsoft365</category>
      <category>sharepoint</category>
      <category>microsoft</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Hands-On Guide: AWS S3 Lifecycle Management, EBS Volume, and Snapshot</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Tue, 04 Mar 2025 21:47:02 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/hands-on-guide-aws-s3-lifecycle-management-ebs-volume-and-snapshot-1p8a</link>
      <guid>https://forem.com/seyilufadejucyberservices/hands-on-guide-aws-s3-lifecycle-management-ebs-volume-and-snapshot-1p8a</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION TO CORE CONCEPTS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.1 Amazon S3 (Simple Storage Service)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- What is S3?&lt;/strong&gt;&lt;br&gt;
Amazon S3 is an object storage service that offers scalability, durability, and security. It allows you to store and retrieve any amount of data at any time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Storage Classes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: For frequently accessed data.&lt;/li&gt;
&lt;li&gt;Infrequent Access (S3-IA): For less frequently accessed data (lower cost than Standard).&lt;/li&gt;
&lt;li&gt;Glacier/Deep Archive: For archival data with retrieval times from minutes to hours.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Lifecycle Management:&lt;/strong&gt;&lt;br&gt;
Automates transitioning objects between storage classes or deleting them after a defined period.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;1.2 Amazon EBS (Elastic Block Store)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- What is EBS?&lt;/strong&gt;&lt;br&gt;
EBS provides block-level storage volumes for EC2 instances. Volumes persist independently of EC2 instance lifecycles.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Volume Types: SSD (e.g., gp3, io2) for high IOPS, HDD (e.g., st1) for throughput-intensive workloads.&lt;/li&gt;
&lt;li&gt;Snapshots: Point-in-time backups of EBS volumes stored in S3.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  2. Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An AWS account with IAM permissions for S3, EC2, and EBS.&lt;/li&gt;
&lt;li&gt;AWS CLI installed and configured (aws configure).&lt;/li&gt;
&lt;li&gt;Basic familiarity with Linux commands and SSH.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  3. Hands-On Implementation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task 1: Create an S3 Bucket, Upload Files, and Configure Lifecycle Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Step 1: Create an S3 Bucket&lt;/strong&gt;&lt;br&gt;
Via AWS Console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to S3 &amp;gt; Create bucket.&lt;/li&gt;
&lt;/ul&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%2Fs8ju1kqxohk6etsmfgxv.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%2Fs8ju1kqxohk6etsmfgxv.png" alt="Image description" width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter a unique bucket name (e.g., my-project-bucket-2023).&lt;/li&gt;
&lt;li&gt;Select a region (e.g., us-east-1).&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable versioning (optional)&lt;br&gt;
.&lt;br&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%2Fzpixw8muaftvx6zxf29q.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%2Fzpixw8muaftvx6zxf29q.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Create bucket.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fsa58d50gc2qob8zp6tg9.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%2Fsa58d50gc2qob8zp6tg9.png" alt="Image description" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;- Step 2: Upload Files&lt;/strong&gt;&lt;br&gt;
Via Console:&lt;/p&gt;

&lt;p&gt;Navigate to your bucket &amp;gt; Upload &amp;gt; Select files &amp;gt; Upload.&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%2Fm1gdynkx4btpgp4duk10.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%2Fm1gdynkx4btpgp4duk10.png" alt="Image description" width="800" height="212"&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%2Fluouy3mw01p3k2153ge7.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%2Fluouy3mw01p3k2153ge7.png" alt="Image description" width="800" height="191"&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%2Fvi3m352fx4rodfbmhhiz.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%2Fvi3m352fx4rodfbmhhiz.png" alt="Image description" width="800" height="334"&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%2Fkpz1e209whwpbhygy90e.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%2Fkpz1e209whwpbhygy90e.png" alt="Image description" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;- Step 3: Configure Lifecycle Policy&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Objective:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transition objects to S3-IA after 30 days.&lt;/li&gt;
&lt;li&gt;Transition to Glacier after 90 days.&lt;/li&gt;
&lt;li&gt;Delete objects after 365 days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Create Lifecycle Rule:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In your bucket, go to the &lt;strong&gt;Management tab&lt;/strong&gt; → &lt;strong&gt;Lifecycle rules&lt;/strong&gt; → &lt;strong&gt;Create lifecycle rule&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%2Fsmci0ynkxga08c0j441n.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%2Fsmci0ynkxga08c0j441n.png" alt="Image description" width="800" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rule name: Auto-Transition-Delete.&lt;/li&gt;
&lt;li&gt;Rule scope: Apply to all objects.&lt;/li&gt;
&lt;li&gt;Transitions:
Transition to Standard-IA: 30 days after creation.
Transition to Glacier Flexible Retrieval: 90 days after creation.&lt;/li&gt;
&lt;/ul&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%2Fljfp1sxl8ymeevoydzn7.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%2Fljfp1sxl8ymeevoydzn7.png" alt="Image description" width="800" height="326"&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%2Fah1ansu5z7tpinl3exxs.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%2Fah1ansu5z7tpinl3exxs.png" alt="Image description" width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Expiration:&lt;br&gt;
Delete objects: 365 days after creation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Create rule.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fvsgq88e52sux8193nuh1.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%2Fvsgq88e52sux8193nuh1.png" alt="Image description" width="800" height="345"&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%2Fwxkrdvl1m8bzowddl83c.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%2Fwxkrdvl1m8bzowddl83c.png" alt="Image description" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Task 2. Create an EC2 Instance,EBS Volume, Attach to EC2, and Mount&lt;/strong&gt;&lt;br&gt;
Objective: Provision storage for an EC2 instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 Create an Instance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select an Instance Type&lt;/li&gt;
&lt;/ul&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%2Feqyxz1oi5ixst2uy3icl.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%2Feqyxz1oi5ixst2uy3icl.png" alt="Image description" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose a hardware configuration:&lt;/li&gt;
&lt;li&gt;For testing, select t2.micro (free tier eligible).&lt;/li&gt;
&lt;/ul&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%2Fq4je7a8zkkvk3rhc7dj8.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%2Fq4je7a8zkkvk3rhc7dj8.png" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Next: Configure Instance Details.&lt;/li&gt;
&lt;/ul&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%2F75k0vi6xce38dy0d6gjm.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%2F75k0vi6xce38dy0d6gjm.png" alt="Image description" width="663" height="718"&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%2Fri19d8s0mlu164ya2el8.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%2Fri19d8s0mlu164ya2el8.png" alt="Image description" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Create an EBS Volume&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Navigate to EC2 Console → Volumes → Create volume.&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%2F6mki773ju29nt40wjhn1.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%2F6mki773ju29nt40wjhn1.png" alt="Image description" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Size: Specify size (e.g., 10 GiB).&lt;/li&gt;
&lt;li&gt;Availability Zone (AZ): Match the AZ of your EC2 instance (critical!).&lt;/li&gt;
&lt;/ul&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%2F7g87su4tlrxpnk47fli1.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%2F7g87su4tlrxpnk47fli1.png" alt="Image description" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Create volume.&lt;/li&gt;
&lt;/ul&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%2F5j0rj8flsex44qmajrpl.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%2F5j0rj8flsex44qmajrpl.png" alt="Image description" width="800" height="206"&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%2Fjq8oqqfiey9phrflakaa.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%2Fjq8oqqfiey9phrflakaa.png" alt="Image description" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;- Step 3: Attach the EBS Volume to an EC2 Instance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Attach Volume:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right-click the new volume → Attach volume.&lt;/li&gt;
&lt;/ul&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%2Fqo34b7tdgtgubp87us2r.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%2Fqo34b7tdgtgubp87us2r.png" alt="Image description" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instance: Select your EC2 instance.&lt;/li&gt;
&lt;li&gt;Device name: Use /dev/sdf (Linux) or /dev/xvdf.&lt;/li&gt;
&lt;li&gt;Click Attach.&lt;/li&gt;
&lt;/ul&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%2Fhxkmb2pdqyhm05aihph4.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%2Fhxkmb2pdqyhm05aihph4.png" alt="Image description" width="800" height="292"&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%2Flp8jxvc3wgqg8ssor7cr.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%2Flp8jxvc3wgqg8ssor7cr.png" alt="Image description" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Mount the EBS Volume on Linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- SSH into the EC2 Instance:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -i "my-key.pem" ubuntu@ec2-13-51-36-103.eu-north-1.compute.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fbts804termc6aq5aesob.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%2Fbts804termc6aq5aesob.png" alt="Image description" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Format and Mount:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List disks: lsblk (identify the new volume, e.g., nvme1n1).&lt;/li&gt;
&lt;/ul&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%2F2n39cm4bj6xnr2kdfdyh.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%2F2n39cm4bj6xnr2kdfdyh.png" alt="Image description" width="800" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Format the volume:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkfs -t ext4 /dev/nvme1n1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Facbk7vnsroxgp63mej11.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%2Facbk7vnsroxgp63mej11.png" alt="Image description" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Create a mount directory:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkdir /mnt/ebs-volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- Mount the volume:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mount /dev/nvme1n1 /mnt/ebs-volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;- Auto-mount on reboot:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "/dev/nvme1n1 /mnt/ebs-volume ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F7b98nvocimfj52o8x2kd.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%2F7b98nvocimfj52o8x2kd.png" alt="Image description" width="800" height="98"&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%2Faoqvko6juntios5zlisn.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%2Faoqvko6juntios5zlisn.png" alt="Image description" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;- Confirm if your Ebs-volume remain persistent after Reboot&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Reboot Instance&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%2Fdrzzssktfdsecty8e2s0.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%2Fdrzzssktfdsecty8e2s0.png" alt="Image description" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Re-Connect to Instance&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%2Fd3vjq00kuy9a1kk2tzn8.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%2Fd3vjq00kuy9a1kk2tzn8.png" alt="Image description" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirm the Ebs-Volume remained mounted&lt;/strong&gt;&lt;br&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%2F7ardw34c98od849y2w9w.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%2F7ardw34c98od849y2w9w.png" alt="Image description" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Task 3. Create an EBS Snapshot&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Objective: Backup your EBS volume.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Step 1: Create a Snapshot&lt;/strong&gt;&lt;br&gt;
Navigate to EC2 Console → Volumes → Select your EBS volume.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create Snapshot:&lt;/li&gt;
&lt;li&gt;Click Actions → Create snapshot.&lt;/li&gt;
&lt;/ul&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%2F0zdolzdxfhze3aukr83l.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%2F0zdolzdxfhze3aukr83l.png" alt="Image description" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: Add a name (e.g., my-ebs-backup-2023).&lt;/li&gt;
&lt;li&gt;Click Create snapshot.&lt;/li&gt;
&lt;/ul&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%2F3irk0frtzujdje908jhd.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%2F3irk0frtzujdje908jhd.png" alt="Image description" width="800" height="314"&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%2F0tb66w27gm2ym5lqgn9x.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%2F0tb66w27gm2ym5lqgn9x.png" alt="Image description" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Step 2: Verify Snapshot (Optional)&lt;/strong&gt;&lt;br&gt;
Go to Snapshots in the EC2 console. Your snapshot will appear once complete.&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%2Fdzrxgn5t9u0q8khxlshh.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%2Fdzrxgn5t9u0q8khxlshh.png" alt="Image description" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This project provided a hands-on exploration of two foundational AWS services: Amazon S3 for scalable object storage and Amazon EBS for persistent block storage. By completing the tasks, we’ve gained practical experience in automating data lifecycle management, provisioning storage resources, and ensuring data durability through backups. Below is a detailed breakdown of the key takeaways:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Key Achievements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Automated Data Lifecycle Management with S3:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You configured lifecycle policies to transition objects between storage classes (Standard → S3-IA → Glacier) and delete them after a defined period. This demonstrates how businesses can optimize costs by aligning storage costs with data access patterns.&lt;/p&gt;

&lt;p&gt;Real-World Use Case: Archiving logs, media, or compliance data that loses relevance over time but requires long-term retention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- EBS Volume Setup and Integration with EC2:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By creating, attaching, and mounting an EBS volume, you learned how block storage complements EC2 instances. This is critical for applications requiring persistent data (e.g., databases, file servers).&lt;/p&gt;

&lt;p&gt;Challenge Addressed: Ensuring data persists even if the EC2 instance is stopped or terminated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Data Protection with EBS Snapshots:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Snapshots provide point-in-time backups stored in S3, enabling disaster recovery. This is essential for compliance (e.g., GDPR, HIPAA) and minimizing downtime.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awschallenge</category>
      <category>cloudcomputing</category>
      <category>cloudskills</category>
    </item>
    <item>
      <title>Deploy a Scalable Web App on Azure using Terraform</title>
      <dc:creator>Seyi Lufadeju</dc:creator>
      <pubDate>Tue, 18 Feb 2025 17:59:28 +0000</pubDate>
      <link>https://forem.com/seyilufadejucyberservices/deploy-a-scalable-web-app-on-azure-using-terraform-2eh4</link>
      <guid>https://forem.com/seyilufadejucyberservices/deploy-a-scalable-web-app-on-azure-using-terraform-2eh4</guid>
      <description>&lt;h2&gt;
  
  
  INTRODUCTION
&lt;/h2&gt;

&lt;p&gt;This guide walks you through deploying a static website on Azure using Terraform. You’ll use Azure Storage for hosting the website and Azure CDN for global scalability and performance. By the end, you’ll have a fully automated infrastructure-as-code setup.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
Azure Account: &lt;a href="https://azure.microsoft.com/en-us/free/" rel="noopener noreferrer"&gt;Create a free account&lt;/a&gt; .&lt;br&gt;
Terraform Installed: &lt;a href="https://www.terraform.io/downloads" rel="noopener noreferrer"&gt;Download here&lt;/a&gt;.&lt;br&gt;
Azure CLI: &lt;a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli" rel="noopener noreferrer"&gt;Installation guide&lt;/a&gt;.&lt;br&gt;
Git (optional): To clone the sample code.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 1: Set Up Azure Authentication&lt;/strong&gt;&lt;br&gt;
Authenticate Terraform to manage Azure resources&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az login  #Log in to Azure via CLI
az account set --subscription="YOUR_SUBSCRIPTION_ID"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwv0h6g9mk8sh7z3adzfv.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%2Fwv0h6g9mk8sh7z3adzfv.png" alt="Image description" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Step 2: Project Structure&lt;/strong&gt;&lt;br&gt;
Create a directory with the following structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform-azure-webapp/
├── main.tf           # Terraform configuration
├── variables.tf      # Input variables
├── outputs.tf        # Output URLs
└── www/              # Sample website files
    ├── index.html
    └── style.css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fb98uaq4hu6hassc396os.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%2Fb98uaq4hu6hassc396os.png" alt="Image description" width="559" height="328"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Step 3: Write Terraform Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;variables.tf&lt;/li&gt;
&lt;/ul&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%2F4vnz3gxww4cqmkugbuwo.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%2F4vnz3gxww4cqmkugbuwo.png" alt="Image description" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;main.tf&lt;/li&gt;
&lt;/ul&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%2Frccfi3d49on8jzcbfrjg.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%2Frccfi3d49on8jzcbfrjg.png" alt="Image description" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;outputs.tf&lt;/li&gt;
&lt;/ul&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%2F9s8tevulq3afcp01a9l6.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%2F9s8tevulq3afcp01a9l6.png" alt="Image description" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Step 4: Create Sample Website Files&lt;/strong&gt;&lt;br&gt;
Add the following files to the www/ directory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;www/index.html&lt;/li&gt;
&lt;/ul&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%2F2wokdofk032v4wpe7aaz.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%2F2wokdofk032v4wpe7aaz.png" alt="Image description" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;www/style.css&lt;/li&gt;
&lt;/ul&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%2F1zqwmq5uw4ms6q0nac92.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%2F1zqwmq5uw4ms6q0nac92.png" alt="Image description" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 5: Deploy Infrastructure&lt;/strong&gt;&lt;br&gt;
Run Terraform commands:&lt;/p&gt;

&lt;p&gt;terraform init    #Initialize providers/modules&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%2F83o9jeq7zo692n0ry8iq.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%2F83o9jeq7zo692n0ry8iq.png" alt="Image description" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;terraform plan    # Preview changes&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%2Flmcdrzn4c337wfqu5u43.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%2Flmcdrzn4c337wfqu5u43.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;terraform apply   # Deploy resources (type "yes" to confirm)&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%2Folcjlgs1xfqbthocxf8v.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%2Folcjlgs1xfqbthocxf8v.png" alt="Image description" width="800" height="322"&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%2Fnx817o073a58tjtiie98.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%2Fnx817o073a58tjtiie98.png" alt="Image description" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;After deployment, Terraform will output:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;storage_website_url: Direct URL to the storage-hosted website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;cdn_endpoint_url: CDN-accelerated URL.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F10ccvs8dcywraeeavdeu.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%2F10ccvs8dcywraeeavdeu.png" alt="Image description" width="800" height="282"&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%2Fiwsp7jsa91jq7eznq72i.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%2Fiwsp7jsa91jq7eznq72i.png" alt="Image description" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step 7: Clean Up Resources&lt;/strong&gt;&lt;br&gt;
Avoid unnecessary costs by destroying resources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform destroy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F9jllirubbsdibldg2ncb.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%2F9jllirubbsdibldg2ncb.png" alt="Image description" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
In this project, we:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Used Terraform to automate Azure infrastructure deployment.&lt;/li&gt;
&lt;li&gt;Hosted a static website on Azure Storage with HTTPS support.&lt;/li&gt;
&lt;li&gt;Accelerated content delivery globally using Azure CDN.&lt;/li&gt;
&lt;li&gt;Practiced infrastructure-as-code principles for reproducibility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This setup provides a foundation for scalable web apps, with Terraform ensuring consistency and reducing manual errors. &lt;/p&gt;

</description>
      <category>terraform</category>
      <category>azure</category>
      <category>devops</category>
      <category>cloudskills</category>
    </item>
  </channel>
</rss>
