<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.bauerautomate.com/blogs/tag/sharepoint/feed" rel="self" type="application/rss+xml"/><title>Bauer Automate - Blog Posts #SharePoint</title><description>Bauer Automate - Blog Posts #SharePoint</description><link>https://www.bauerautomate.com/blogs/tag/sharepoint</link><lastBuildDate>Wed, 22 Apr 2026 18:56:59 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[5 Business Processes That Are Still Shockingly Manual (and Easy to Automate)]]></title><link>https://www.bauerautomate.com/blogs/post/5-business-processes-that-are-still-shockingly-manual-and-easy-to-automate</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/Blog Banners -2-.jpg?v=1770312037"/>Despite years of digital transformation, many organizations still rely on manual business processes to run critical operations. Email/folder-based app ]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_2QMkKL6wT-qKsQ5Qv_iWVQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_DFM-WLdqQwyqm5YuAsKj7g" data-element-type="row" class="zprow zpalign-items-center zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_Has_3Az6SsaHCcsHeaC8oQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_8kOccl8Nq7dnzavawvI_kA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_8kOccl8Nq7dnzavawvI_kA"] .zpimage-container figure img { width: 1095px ; height: 615.94px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" style="cursor:pointer;" href="javascript:;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src='https://cdn1.zohoecommerce.com/Blog%20Banners%20-2-.jpg?v=1770312035&storefront_domain=www.bauerautomate.com' size="fit" alt="From Manual to Automated Where Microsoft Power Platform Delivers the Biggest ROI. Blog post by Bauer Automate." title="From Manual to Automated Where Microsoft Power Platform Delivers the Biggest ROI. Blog post by Bauer Automate." data-lightbox="true"/></picture></a></figure></div>
</div><div data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p>Despite years of digital transformation, many organizations still rely on manual business processes to run critical operations. Email/folder-based approvals, spreadsheet-driven reporting, and repetitive data entry remain common — even though business process automation tools are widely available.</p><p><br/></p><p>These manual workflows don’t just slow teams down. They increase errors, reduce visibility, and prevent organizations from scaling efficiently.</p><p><br/></p><p>The good news is that many of these processes are ideal candidates for workflow automation using modern low-code automation platforms.</p><p>Below are five manual business processes that are still shockingly common — and easy to automate.</p></div></div></div></div></div>
</div></div></div></div></div><div data-element-id="elm_o1G3oOckI7amwrfQ1K6T_A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_QNUScO2a6tVwbiTh5Ohlzg" data-element-type="row" class="zprow zpalign-items-center zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_ACoq-N85V76Tl6cqTsWtQg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_96AU5Izjiuh19N4mT9yMKg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:20px;">1. Approval Workflow Automation (Time Off, Purchases, Expenses)</span></p></div></h3></div>
<div data-element-id="elm_fm7n3O2ZTAXZacwRO8lClA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_fm7n3O2ZTAXZacwRO8lClA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div style="color:inherit;">Approval workflows are one of the most common examples of manual business processes. Time-off requests, purchase approvals, and expense sign-offs are often handled through long email threads with no visibility or audit trail.</div><br/><div><span style="font-weight:bold;color:rgb(93, 47, 143);">High-Level Approval Automation Example</span></div><div><ul><li><span style="font-weight:bold;">Request Intake: </span>Microsoft Forms or Power Apps</li><li style="color:inherit;"><span style="font-weight:bold;">Data Storage: </span>SharePoint list</li><li style="color:inherit;"><span style="font-weight:bold;">Workflow Automation: </span>Power Automate routes approvals based on rules</li><li style="color:inherit;"><span style="font-weight:bold;">Notifications: </span>Email and Microsoft Teams</li><li style="color:inherit;"><span style="font-weight:bold;">Tracking: </span>Centralized approval status and history</li></ul></div><br/><div style="color:inherit;">This type of approval workflow automation replaces inbox chaos with a structured, trackable process.</div><br/><div style="color:inherit;"><br/></div><div style="color:inherit;"><span style="font-weight:bold;">Estimated Setup Time:&nbsp;</span><span style="color:inherit;">4-8 hours (basic approval workflow), or&nbsp;</span><span style="color:inherit;">8-12 hours (multi-level workflow automation)</span></div><div style="color:inherit;"><br/></div><div style="color:inherit;"><span style="font-weight:bold;">Typical Time Saved:&nbsp;</span><span style="color:inherit;">~10-15 minutes per request |&nbsp;</span><span style="color:inherit;">≈ 40-60 hours saved per year</span></div></div></div>
</div><div data-element-id="elm_QmXUuJ_60ca2_F0MnGvBFg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><p><span style="color:inherit;font-size:20px;">2. Repetitive Data Entry and System-to-System Automation</span></p></div></h3></div>
<div data-element-id="elm_KO8UD05cBc98RPRuBLRvBQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_KO8UD05cBc98RPRuBLRvBQ"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><p style="color:inherit;">Manual data entry across systems is one of the biggest drains on productivity. Teams often copy the same data into spreadsheets, CRMs, accounting systems, or internal tools.</p><p style="color:inherit;"><b><br/></b></p><p><b style="color:rgb(93, 47, 143);">High-Level Data Entry Automation Example</b></p><ul><li><b>Single Data Capture:</b> Form or Power App</li><li><b style="color:inherit;">Primary Data Store:</b><span style="color:inherit;"> SharePoint or Dataverse</span></li><li><b style="color:inherit;">Workflow Automation:</b><span style="color:inherit;"> Power Automate syncs data across systems</span></li><li><b style="color:inherit;">Validation Rules:</b><span style="color:inherit;"> Reduce errors and rework</span></li></ul><p style="color:inherit;"><br/></p><p style="color:inherit;">By automating this business workflow, organizations eliminate duplicate work and improve data accuracy.</p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><b><br/></b></p><p style="color:inherit;"><b>Estimated Setup Time:&nbsp;</b><span style="color:inherit;">6-12 hours</span></p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><b>Typical Time Saved:&nbsp;</b><span style="color:inherit;">3-5 minutes per entry |&nbsp;</span><span style="color:inherit;">≈ 60-100 hours saved per year</span></p></div></div>
</div><div data-element-id="elm_OZCE7ZMd3PgS8-YSI9GY0g" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:20px;">3. Document Automation and File Management</span></p></div></div></h3></div>
<div data-element-id="elm_cOWGpD5Adan-xd8hHpd_QA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_cOWGpD5Adan-xd8hHpd_QA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><p style="color:inherit;">Many organizations still rely on manual document creation for proposals, contracts, letters, and internal documentation. These manual workflows often lead to inconsistent formats and version control issues.</p><p style="color:inherit;"><br/></p><p><b style="color:rgb(93, 47, 143);">High-Level Document Automation Example:</b></p><ul><li><b>Data Input:</b> Power App or Form</li><li><b style="color:inherit;">Document Automation:</b><span style="color:inherit;"> Generate Word or PDF files from templates</span></li><li><b style="color:inherit;">File Management:</b><span style="color:inherit;"> Store documents automatically in SharePoint</span></li><li><b style="color:inherit;">Notifications:</b><span style="color:inherit;"> Automated sharing and alerts</span></li></ul><p style="color:inherit;"><br/></p><p style="color:inherit;">This form of document automation ensures consistency while reducing manual effort.</p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><br/></p><p style="color:inherit;"><b>Estimated Setup Time:&nbsp;</b><span style="color:inherit;">6-12 hours</span></p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><b>Typical Time Saved:&nbsp;</b><span style="color:inherit;">10-20 minutes per document |&nbsp;</span><span style="color:inherit;">≈ 85-170 hours saved per year</span></p></div></div>
</div><div data-element-id="elm_MSxdFdhDXFbWDcsH0CJ8rA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:20px;">4. Automated Reporting and Workflow Automation</span></p></div></div></div></h3></div>
<div data-element-id="elm_RdI7AUPtKmCnY169q5WkJg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_RdI7AUPtKmCnY169q5WkJg"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><p style="color:inherit;">Reporting is still one of the most manual business processes in many organizations. Data is exported, cleaned, and reassembled in spreadsheets before being shared with stakeholders.</p><p style="color:inherit;"><b><br/></b></p><p><b style="color:rgb(93, 47, 143);">High-Level Automated Reporting Example</b></p><ul><li><b>Data Sources:</b> SharePoint, Dataverse, or line-of-business systems</li><li><b style="color:inherit;">Workflow Automation:</b><span style="color:inherit;"> Scheduled data refresh via Power Automate</span></li><li><b style="color:inherit;">Reporting:</b><span style="color:inherit;"> Power BI dashboards with automated updates</span></li><li><b style="color:inherit;">Distribution:</b><span style="color:inherit;"> Automated report sharing</span></li></ul><p style="color:inherit;"><br/></p><p style="color:inherit;">This approach to automated reporting ensures leaders always have access to up-to-date information.</p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><br/></p><p style="color:inherit;"><b>Estimated Setup Time:&nbsp;</b><span style="color:inherit;">8-16 hours</span></p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><b>Typical Time Saved:&nbsp;</b><span style="color:inherit;">2-5 hours per reporting cycle |&nbsp;</span><span style="color:inherit;">≈ 25-60 hours saved per year</span></p></div></div>
</div><div data-element-id="elm_JMxHqiAbi_G4JDsAdWAUxA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:20px;">5. Business Process Automation for Onboarding</span></p></div></div></div></div></h3></div>
<div data-element-id="elm_ecmR1DmIiVsEA4b2j_7xsA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ecmR1DmIiVsEA4b2j_7xsA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><p style="color:inherit;">Employee and vendor onboarding often spans multiple departments and systems, making it one of the most fragmented manual workflows in an organization.</p><p style="color:inherit;"><br/></p><p><b style="color:rgb(93, 47, 143);">High-Level Onboarding Automation Example</b></p><ul><li><b>Intake:</b> Onboarding Form or Power App</li><li><b style="color:inherit;">Workflow Automation:</b><span style="color:inherit;"> Automated task assignment and reminders</span></li><li><b style="color:inherit;">Tracking:</b><span style="color:inherit;"> Central SharePoint list or app</span></li><li><b style="color:inherit;">Communication:</b><span style="color:inherit;"> Automated status updates</span></li></ul><p style="color:inherit;"><br/></p><p style="color:inherit;">This type of business process automation improves consistency while reducing onboarding time.</p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><br/></p><p style="color:inherit;"><b>Estimated Setup Time:&nbsp;</b><span style="color:inherit;">8-14 hours</span></p><p style="color:inherit;">&nbsp;</p><p style="color:inherit;"><b>Typical Time Saved:&nbsp;</b><span style="color:inherit;">1-2 hours per onboarding |</span><span style="color:inherit;font-size:7pt;">&nbsp;</span><span style="color:inherit;">≈ 25-50 hours saved per year</span></p></div></div>
</div><div data-element-id="elm_Ul-E8b-GaxkvUKRGzf3BTA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Ul-E8b-GaxkvUKRGzf3BTA"].zpelem-heading { padding-block-start:50px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-center " data-editor="true"><div><p><span style="font-size:20px;color:rgb(93, 47, 143);">Ready to Automate the Work That Slows Your Team Down?</span></p></div></h2></div>
<div data-element-id="elm_oWZPVCMBAH7D7wtVSatCMA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_oWZPVCMBAH7D7wtVSatCMA"].zpelem-text{ padding-block-end:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p>Learn how Bauer Automate helps organizations replace manual business processes with secure, scalable workflow automation using Microsoft Power Platform.</p><p><br/></p><p>Whether you’re looking to automate approvals, reporting, document management, or system integrations, we focus on practical automation that delivers real ROI — fast.</p></div></div></div></div></div></div>
</div><div data-element-id="elm_dLbKsAVC1fs9b0mHAgHA3w" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_dLbKsAVC1fs9b0mHAgHA3w"] .zpbutton.zpbutton-type-primary{ margin-block-end:100px; } </style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact" target="_blank"><span class="zpbutton-content">Book a FREE Automation Discovery Call</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 11 Feb 2026 09:03:41 -0700</pubDate></item><item><title><![CDATA[From Manual to Automated: Where Microsoft's Power Platform Delivers the Biggest ROI]]></title><link>https://www.bauerautomate.com/blogs/post/january-blog-from-manual-to-automated-where-microsoft-power-platform-delivers-the-biggest-roi</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/From Manual to Automated-1.jpg?v=1767807283"/>Most organizations don’t struggle because they lack software — they struggle because too much work still happens manually. Emails are forwarded. Spread ]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_2QMkKL6wT-qKsQ5Qv_iWVQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_DFM-WLdqQwyqm5YuAsKj7g" data-element-type="row" class="zprow zpalign-items-center zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_Has_3Az6SsaHCcsHeaC8oQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_8kOccl8Nq7dnzavawvI_kA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_8kOccl8Nq7dnzavawvI_kA"] .zpimage-container figure img { width: 1095px ; height: 615.94px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" style="cursor:pointer;" href="javascript:;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src='https://cdn1.zohoecommerce.com/From%20Manual%20to%20Automated-1.jpg?v=1767810905&storefront_domain=www.bauerautomate.com' size="fit" alt="From Manual to Automated Where Microsoft Power Platform Delivers the Biggest ROI. Blog post by Bauer Automate." title="From Manual to Automated Where Microsoft Power Platform Delivers the Biggest ROI. Blog post by Bauer Automate." data-lightbox="true"/></picture></a></figure></div>
</div><div data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div>Most organizations don’t struggle because they lack software — they struggle because too much work still happens manually.</div><br/><div>Emails are forwarded. Spreadsheets are copied. Approvals are chased. Data is re-entered across systems. These small inefficiencies compound quickly, costing time, money, and focus.</div><br/><div>This is where Microsoft Power Platform consistently delivers one of the strongest returns on investment we see with clients.</div><br/><div>Not because it replaces people — but because its workflow automation tools removes insignificant manual repetitive tasks, allowing your team to focus on what truly matters. Plus, it is already included with a Microsoft 365 subscription, so <span style="font-weight:bold;">no extra subscriptions are required</span>!</div></div></div></div></div>
</div></div></div></div></div><div data-element-id="elm_hVH2leP1QLO-kI6J9Zr0Zg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_ZWwZKVTjX9kKliOTAPIjfw" data-element-type="row" class="zprow zpalign-items-center zpjustify-content-flex-start "><style type="text/css"></style><div data-element-id="elm_2WClnJAxs0p0I-MaghUi7Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-5 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_GQFTG1nFTB4EgQD7jtQy9A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_GQFTG1nFTB4EgQD7jtQy9A"] .zpimage-container figure img { width: 439px ; height: 292.76px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_GQFTG1nFTB4EgQD7jtQy9A"] .zpimage-container figure img { width:500px ; height:341.02px ; } } @media (max-width: 767px) { [data-element-id="elm_GQFTG1nFTB4EgQD7jtQy9A"] .zpimage-container figure img { width:500px ; height:341.02px ; } } [data-element-id="elm_GQFTG1nFTB4EgQD7jtQy9A"].zpelem-image { margin-block-start:30px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src='https://cdn1.zohoecommerce.com/woman-resting-her-head-office-desk.jpg?v=1767807177&storefront_domain=www.bauerautomate.com' width="500" height="341.02" loading="lazy" size="fit" alt="Manual Processes kill ROI. Frustrated worker. Blog post by Bauer Automate." title="Manual Processes kill ROI. Frustrated worker. Blog post by Bauer Automate."/></picture></a></figure></div>
</div></div><div data-element-id="elm_VUrJ3b4CQXBRXT08Skw50Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-7 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_jFd7NoVNXAayaFf8G5COsg" data-element-type="iconHeadingText" class="zpelement zpelem-iconheadingtext "><style type="text/css"></style><div class="zpicon-container zpicon-align-left "><style></style><span class="zpicon zpicon-common zpicon-size-md zpicon-style-none "><svg viewBox="0 0 352 512" height="352" width="512" xmlns="http://www.w3.org/2000/svg"><path d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg></span><h2 class="zpicon-heading " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Why Manual Processes Quietly Kill ROI</span></h2><div class="zpicon-text-container " data-editor="true"><div style="color:inherit;"><p>Manual workflows often feel “good enough” until you step back and measure them:</p><ul><li>Time lost to repetitive data entry</li><li>Errors caused by copy-paste or version confusion</li><li>Delays from approval bottlenecks</li><li>Lack of visibility into who owns what and when</li></ul><p><br/></p><p>The real cost isn’t just hours — it’s decision latency, burnout, and missed opportunities.</p><p>Automation of manual processes fixes this by making work predictable, auditable, and fast.</p></div>
</div></div></div></div></div></div></div><div data-element-id="elm_o1G3oOckI7amwrfQ1K6T_A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_QNUScO2a6tVwbiTh5Ohlzg" data-element-type="row" class="zprow zpalign-items-center zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_ACoq-N85V76Tl6cqTsWtQg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_cDIommO1LH6dFCVxgdvmbQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_cDIommO1LH6dFCVxgdvmbQ"].zpelem-heading { padding-block-start:50px; padding-block-end:0px; margin-block-end:0px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">The 5 Areas Where Power Platform Delivers the Biggest ROI</span></h2></div>
<div data-element-id="elm_96AU5Izjiuh19N4mT9yMKg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:20px;">1. Request &amp; Approval Workflows</span></p></div></h3></div>
<div data-element-id="elm_fm7n3O2ZTAXZacwRO8lClA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_fm7n3O2ZTAXZacwRO8lClA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><p style="color:inherit;">Nearly every business runs on requests:</p><ul style="color:inherit;"><li>Time off</li><li>Purchase approvals</li><li>Policy exceptions</li><li>Access requests</li><li>Vendor onboarding</li></ul><p style="color:inherit;">When these live in email, the process breaks down fast.</p><p style="color:inherit;"><br/></p><p style="color:inherit;"><b>Power Automate</b> + <b>Power Apps</b> turn these into structured workflows with:</p><ul style="color:inherit;"><li>Clear ownership</li><li>Automated routing</li><li>Real-time status visibility</li><li>Audit history</li></ul><p style="color:inherit;"><b><br/></b></p><p><span style="color:rgb(93, 47, 143);background-color:rgb(244, 244, 78);"><b>ROI impact:</b> Faster cycle times, fewer follow-ups, less admin overhead.</span></p></div></div></div></div>
</div><div data-element-id="elm_QmXUuJ_60ca2_F0MnGvBFg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><p><span style="color:inherit;font-size:20px;">2. Data Collection &amp; Validation</span></p></div></h3></div>
<div data-element-id="elm_KO8UD05cBc98RPRuBLRvBQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_KO8UD05cBc98RPRuBLRvBQ"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><p style="color:inherit;">Forms filled out incorrectly create downstream rework.</p><p style="color:inherit;">With Power Apps and Microsoft Forms, organizations can:</p><ul style="color:inherit;"><li>Enforce required fields</li><li>Validate data at entry</li><li>Standardize inputs across teams</li><li>Write directly to SharePoint or Dataverse</li></ul><p style="color:inherit;">This removes cleanup work before it even starts.</p><p style="color:inherit;"><br/></p><p><span style="color:rgb(93, 47, 143);background-color:rgb(244, 244, 78);"><b>ROI impact:</b> Fewer errors, higher data quality, cleaner reporting.</span></p></div></div></div></div></div>
</div><div data-element-id="elm_OZCE7ZMd3PgS8-YSI9GY0g" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:20px;">3. Reporting &amp; Decision Visibility</span></p></div></div></h3></div>
<div data-element-id="elm_cOWGpD5Adan-xd8hHpd_QA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_cOWGpD5Adan-xd8hHpd_QA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><div><p style="color:inherit;">Manual reporting usually means:</p><ul style="color:inherit;"><li>Exporting spreadsheets</li><li>Manual report creation</li><li>Reconciling numbers</li><li>Questioning accuracy</li></ul><div style="color:inherit;"><br/></div>
<p style="color:inherit;">Power BI connects directly to live data sources, giving leaders:</p><ul style="color:inherit;"><li>Real-time dashboards</li><li>Automated refreshes</li><li>Single source of truth</li></ul><p style="color:inherit;">No more chasing numbers — just decisions.</p><p style="color:inherit;"><br/></p><p><span style="color:rgb(93, 47, 143);background-color:rgb(244, 244, 78);"><b>ROI impact:</b> Faster insights, less analyst time, better decisions.</span></p></div></div></div></div></div></div>
</div><div data-element-id="elm_MSxdFdhDXFbWDcsH0CJ8rA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:20px;">4. Document Management &amp; Metadata Automation</span></p></div></div></div></h3></div>
<div data-element-id="elm_RdI7AUPtKmCnY169q5WkJg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_RdI7AUPtKmCnY169q5WkJg"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><div><div><p style="color:inherit;">Documents are expensive when they’re misfiled, duplicated, or lost.</p><p style="color:inherit;">With <b>SharePoint</b> + <b>Power Automate (and a sprinkle of AI)</b>, teams can:</p><ul style="color:inherit;"><li>Auto-tag documents with metadata</li><li>Route files to the right libraries</li><li>Enforce naming standards</li><li>Apply security by destination</li></ul><p style="color:inherit;"><b><br/></b></p><p><span style="color:rgb(93, 47, 143);background-color:rgb(244, 244, 78);"><b>ROI impact:</b> Reduced search time, improved compliance, lower risk.</span></p></div></div></div></div></div></div></div>
</div><div data-element-id="elm_JMxHqiAbi_G4JDsAdWAUxA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:20px;">5. System Integration Without Custom Code</span></p></div></div></div></div></h3></div>
<div data-element-id="elm_ecmR1DmIiVsEA4b2j_7xsA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ecmR1DmIiVsEA4b2j_7xsA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><div><div><div><p style="color:inherit;">Many organizations rely on disconnected tools:</p><ul style="color:inherit;"><li>Accounting systems</li><li>CRMs</li><li>Line-of-business apps</li><li>Power Platform automation acts as the glue:</li><li>Sync data automatically</li><li>Trigger actions across systems</li><li>Reduce duplicate entry</li></ul><p style="color:inherit;">And it does this without long custom development cycles.</p><p style="color:inherit;"><br/></p><p><span style="color:rgb(93, 47, 143);background-color:rgb(244, 244, 78);"><b>ROI impact:</b> Lower integration costs, faster deployments, scalable automation.</span></p></div></div></div></div></div></div></div></div>
</div><div data-element-id="elm_OcFlNA9GqpVXRU5zz7OPOQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><div><div><div><div><p><span style="font-size:30px;color:rgb(93, 47, 143);">Why Power Platform ROI Is So Strong</span></p></div></div></div></div></div></h3></div>
<div data-element-id="elm_4cuyNXqrODAqtpb6-UEdRg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4cuyNXqrODAqtpb6-UEdRg"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><div><div><div><div style="color:inherit;"><p>The platform delivers ROI quickly because:</p><ul><li>It builds on workflow automation tools organizations already license (Microsoft 365)</li><li>It supports incremental automation&nbsp; (start small, scale fast)</li><li>It empowers both IT and business users</li><li>It reduces dependency on custom code</li></ul><p>You don’t need a massive transformation to see value — just the right workflows automated first.</p></div></div></div></div></div></div></div></div></div>
</div><div data-element-id="elm_LKKKrhey7lgfrv2xEZgqcA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_LKKKrhey7lgfrv2xEZgqcA"].zpelem-heading { padding-block-start:50px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><div><div><div><div><div><p><span style="font-size:30px;color:rgb(93, 47, 143);">Final Thought</span></p></div></div></div></div></div></div></h3></div>
<div data-element-id="elm_mgejz83WuAXe956Cbr0Pcw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_mgejz83WuAXe956Cbr0Pcw"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><div><div><div><div style="color:inherit;"><div style="color:inherit;"><p>Automating manual processes isn’t about replacing human work.</p><p>It’s about removing the parts of work humans shouldn’t be doing.</p><p><br/></p><p>When manual processes are replaced with structured, automated workflows, teams move faster, make better decisions, and focus on higher-value work.</p><p>&nbsp;</p><p>That’s where Microsoft Power Platform consistently delivers the biggest ROI.</p></div></div></div></div></div></div></div></div></div></div>
</div><div data-element-id="elm_Ul-E8b-GaxkvUKRGzf3BTA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Ul-E8b-GaxkvUKRGzf3BTA"].zpelem-heading { padding-block-start:50px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-center " data-editor="true"><div><p><span style="font-size:20px;color:rgb(93, 47, 143);">Ready to Automate the Work That Slows Your Team Down?</span></p></div></h3></div>
<div data-element-id="elm_oWZPVCMBAH7D7wtVSatCMA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_oWZPVCMBAH7D7wtVSatCMA"].zpelem-text{ padding-block-end:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><div><div><div><div><div><div><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div>Learn how Bauer Automate helps organizations identify high-impact manual processes and replace them with secure, scalable automation using Microsoft Power Platform.</div><div><br/></div><div>Whether it’s approvals, reporting, document management, or system integrations, we focus on practical automation that delivers real ROI — fast.</div></div></div></div></div></div></div></div></div></div></div></div></div>
</div><div data-element-id="elm_dLbKsAVC1fs9b0mHAgHA3w" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_dLbKsAVC1fs9b0mHAgHA3w"] .zpbutton.zpbutton-type-primary{ margin-block-end:100px; } </style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact" target="_blank"><span class="zpbutton-content">Book a FREE Automation Discovery Call</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 08 Jan 2026 09:16:51 -0700</pubDate></item><item><title><![CDATA[Two Years of Reflection at the CPPUG — And Why 2026 Has Us Excited]]></title><link>https://www.bauerautomate.com/blogs/post/Two-Year-Reflection-at-the-CPPUG</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/20251028_224604699_iOS.jpg"/>When we look back at the last two years of running the Calgary Power Platform User Group (CPPUG), it still feels a bit surreal. This group didn’t star ]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_2QMkKL6wT-qKsQ5Qv_iWVQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_DFM-WLdqQwyqm5YuAsKj7g" data-element-type="row" class="zprow zpalign-items-center zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_Has_3Az6SsaHCcsHeaC8oQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div>When we look back at the last two years of running the Calgary Power Platform User Group (CPPUG), it still feels a bit surreal. This group didn’t start with us — we had the privilege of taking it over at a time when things were quiet and activity had slowed.</div><div><br/></div><div>What began as an opportunity to revive something meaningful quickly turned into a mission: to rebuild the CPPUG into a space that truly brings Power Platform enthusiasts in Calgary together — not just for events, but as a real resource for learning, support, and community. Office Hours became a core part of that vision, giving people a place to ask questions, learn from each other, and grow together.</div><div><br/></div><div>Today, CPPUG feels louder, fuller, and more alive than ever.</div><div><br/></div><div>We’ve seen new faces turn into familiar ones. We’ve watched Office Hours grow from small, question-driven sessions into packed, high-energy discussions. And month after month, the room reminds us why this community matters.</div></div></div></div>
</div><div data-element-id="elm_gY6j3uhae_sCnoQZMxHwXg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">A Community That Just Keeps Showing Up</span></h2></div>
<div data-element-id="elm_7vNBWMIbnHd0ZWrvvPzOOQ" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_7vNBWMIbnHd0ZWrvvPzOOQ"] .zpimagetext-container figure img { width: 541px !important ; height: 406px !important ; } } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" style="cursor:pointer;" href="javascript:;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="https://cdn1.zohoecommerce.com/CPPUG%20-%20May%202025.jpg?v=1764782600&storefront_domain=www.bauerautomate.com" size="custom" alt="" data-lightbox="true"/></picture></a></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p></p><div style="color:inherit;"><div></div><div style="color:inherit;"><div></div><div style="color:inherit;"><div></div><div style="color:inherit;"><div></div><p><span style="color:inherit;"><span style="font-size:17px;">Every</span><span style="font-size:17px;"> single meetup — whether it’s one of our monthly Office Hours or one of our networking-style events — has had its own story.</span></span></p><div><span style="font-size:17px;"><br/></span></div><div><span style="font-size:17px;">We’ve shared wins.<br/></span><span style="font-size:17px;color:inherit;">We’ve learned from “oops” moments.</span></div><div></div><div><span style="font-size:17px;">We’ve debated best practices.</span></div><div><span style="font-size:17px;">And we’ve laughed a lot more than any tech user group probably should.</span></div><br/><div><span style="color:inherit;font-size:17px;">None of this works without the people who show up — the ones who share knowledge freely, mentor new builders, ask brave questions, and welcome first-timers like they’ve been here all along.</span></div><div><span style="color:inherit;font-size:17px;"><br/></span></div><div></div><span style="font-size:17px;"><div></div></span><div><span style="font-size:17px;">That's the real magic of this group.</span></div></div></div></div></div></div>
</div></div><div data-element-id="elm_xY6XcKMZp8wP-c1GAUR9KA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_xY6XcKMZp8wP-c1GAUR9KA"].zpelem-heading { padding-block-start:50px; padding-block-end:0px; margin-block-end:0px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">A Big Milestone: The Power Platform Conference</span></h2></div>
<div data-element-id="elm_AfAt8baU6gne5_mJXFGV3A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_AfAt8baU6gne5_mJXFGV3A"] .zpimage-container figure img { width: 800px ; height: 450.00px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-large zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" style="cursor:pointer;" href="javascript:;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src='https://cdn1.zohoecommerce.com/20251028_224604699_iOS.jpg?v=1764782969&storefront_domain=www.bauerautomate.com' size="large" alt="" data-lightbox="true"/></picture></a></figure></div>
</div><div data-element-id="elm_Emw65wedpyu_IL01bBa2Zg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Emw65wedpyu_IL01bBa2Zg"].zpelem-text{ padding-block-end:0px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div>One of our favourite moments this year was attending the Power Platform Community Conference in Las Vegas and representing the CPPUG on a global stage! Being able to share the story of our group — how we stepped in to rebuild it, how Calgary’s community is thriving, and how we intentionally make learning fun — was a powerful and proud moment.</div><div><br/></div><div>And then came one of those “small world” experiences we’ll never forget.</div><br/><div>One of our CPPUG stickers made its way all the way to Mexico — through someone Ryley had worked on a past project with. A member of his company attended the conference, brought stickers back for the team… and that old colleague messaged Ryley saying, “I just got a Calgary Power Platform User Group sticker.”</div><br/><div>From Calgary to Vegas to Mexico — unreal.</div><div><br/></div><div><div style="text-align:center;">P.S. If you want to watch our presentation at the Power Platform Conference, you can view it <a href="https://youtu.be/TsA2tOfh8s0?si=M4ustWr1MGYa5vde" title="here" target="_blank" rel="">here</a>:</div></div></div></div></div>
</div><div data-element-id="elm_SIxDLQFsB8rOkeJ3U74uxQ" data-element-type="buttonicon" class="zpelement zpelem-buttonicon "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_SIxDLQFsB8rOkeJ3U74uxQ"] .zpbutton.zpbutton-type-primary{ margin-block-end:20px; } </style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none zpbutton-icon-align-left " href="https://youtu.be/TsA2tOfh8s0?si=M4ustWr1MGYa5vde"><span class="zpbutton-icon "><svg viewBox="0 0 576 512" height="576" width="512" xmlns="http://www.w3.org/2000/svg"><path d="M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"></path></svg></span><span class="zpbutton-content">Watch Our PPCC 2025 Presentation</span></a></div>
</div><div data-element-id="elm_B4W_zVqjSEsHxA4hSh_IsA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_B4W_zVqjSEsHxA4hSh_IsA"].zpelem-heading { padding-block-start:50px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Looking Ahead to 2026</span></h2></div>
<div data-element-id="elm_wri8Mah5IUxfRgmHmkmKyA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_wri8Mah5IUxfRgmHmkmKyA"].zpelem-text{ padding-block-end:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div>If the last two years were about rebuilding and momentum, 2026 is all about expansion and elevation.</div><br/><div>We’re planning:</div><div><ul><li><span style="color:inherit;">Bigger, more dynamic events</span></li><li>New training and learning opportunities</li><li>Stronger partnerships behind the scenes</li><li>And brand new experiences… including our first hackathon that everyone’s been waiting for 😉</li></ul></div><div><br/></div><div>We want to make the CPPUG even more accessible — more hands-on, more welcoming, and more representative of everyone shaping the Power Platform space in Calgary and beyond.</div><div><br/></div><div><br/></div><div>Expect:</div><div><ul><li>More Office Hours</li><li>More networking</li><li>More community highlights</li><li>More fun</li><li>And definitely more photos — because our group pictures are basically tradition now</li></ul></div></div></div></div>
</div><div data-element-id="elm_AuWT-yKmWW_erCK2oBDHpQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_AuWT-yKmWW_erCK2oBDHpQ"].zpelem-heading { padding-block-start:50px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">A Huge Thank You</span></h2></div>
<div data-element-id="elm_vpluU2qvqFt9srZwyfxfog" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div>Running this group takes time, behind-the-scenes planning, and a lot of heart — and we wouldn’t trade any of it. Thank you to everyone who has attended, volunteered, presented, shared posts, or supported us from afar. You are the reason this group continues to grow.</div><br/><div>2024 and 2025 were transformational.</div><div>2026 is going to be unforgettable.</div><div style="color:inherit;"><br/></div><div style="color:inherit;"><br/></div><br/><div>— The CPPUG Team</div><div>Calgary Power Platform User Group</div></div></div></div>
</div><div data-element-id="elm_ACy97VXeO29wR0zn_mOR3Q" data-element-type="row" class="zprow zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_AMgWYXghjW6JFFim7dQ3Eg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_rxBTKLEMi5N4clSd3du3lg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_rxBTKLEMi5N4clSd3du3lg"] .zpimage-container figure img { width: 533px ; height: 355.33px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" style="cursor:pointer;" href="javascript:;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src='https://cdn1.zohoecommerce.com/2.png?v=1764792073&storefront_domain=www.bauerautomate.com' size="fit" alt="" data-lightbox="true"/></picture></a></figure></div>
</div></div><div data-element-id="elm_voZJrPJT1YG2fzkAjqtFmA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_ito1g6TIO-oPgMg_pGhppw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_ito1g6TIO-oPgMg_pGhppw"] .zpimage-container figure img { width: 533px ; height: 355.33px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" style="cursor:pointer;" href="javascript:;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src='https://cdn1.zohoecommerce.com/1.png?v=1764792082&storefront_domain=www.bauerautomate.com' size="fit" alt="" data-lightbox="true"/></picture></a></figure></div>
</div></div></div><div data-element-id="elm_q34PIYoVaiRCJ8nhMqsWzQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_q34PIYoVaiRCJ8nhMqsWzQ"].zpelem-heading { padding-block-start:50px; } </style><h3
 class="zpheading zpheading-style-none zpheading-align-center " data-editor="true"><span style="color:rgb(93, 47, 143);font-size:20px;">Want to Be A Part of the CPPUG Team?</span></h3></div>
<div data-element-id="elm_gPc9VFibLsZvYSH71din8Q" data-element-type="row" class="zprow zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_8cvSbQOBhkquQV6DV0YDLQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_QaHjitAMZwgUGD4goYLmhA" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_QaHjitAMZwgUGD4goYLmhA"] .zpbutton.zpbutton-type-primary{ margin-block-end:100px; } </style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="https://youtu.be/zyR6SHwL79A" target="_blank"><span class="zpbutton-content">Learn About CPPUG</span></a></div>
</div></div><div data-element-id="elm_2vqFXTblIncj4MRrNco5jg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_jyJrrOHP0zLeU1L7I7Dvog" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_jyJrrOHP0zLeU1L7I7Dvog"] .zpbutton.zpbutton-type-primary{ margin-block-end:100px; } </style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact" target="_blank"><span class="zpbutton-content">Contact Us!</span></a></div>
</div></div><div data-element-id="elm_L4TIRuAie1Z_5JJO8ctyQg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_9Sh4-YBz-IzdhOOOsBWK7A" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_9Sh4-YBz-IzdhOOOsBWK7A"] .zpbutton.zpbutton-type-primary{ margin-block-end:100px; } </style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="https://www.flickr.com/photos/200648377@N04/albums/" target="_blank"><span class="zpbutton-content">View Our Event photos</span></a></div>
</div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 03 Dec 2025 11:59:32 -0700</pubDate></item><item><title><![CDATA[Automating Microsoft Teams Memberships with Power Automate & Graph API: One Nite Band Workflow]]></title><link>https://www.bauerautomate.com/blogs/post/automating-microsoft-teams-memberships-with-power-automate-graph-api</link><description><![CDATA[]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_2QMkKL6wT-qKsQ5Qv_iWVQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_DFM-WLdqQwyqm5YuAsKj7g" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_Has_3Az6SsaHCcsHeaC8oQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_JAS3QcQTSl6arOF8L81CdA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true"><span style="color:inherit;font-size:24px;">How We Streamlined Musician Scheduling Using Power Platform &amp; Microsoft Graph</span></h2></div>
<div data-element-id="elm_XStVuyXGQEC2rUkwpUbAXQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div style="text-align:center;color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><span style="color:inherit;"><img src="/Sun%20Jul%2020%202025.png" alt="" style="width:417px !important;height:425.92px !important;max-width:100% !important;"></span><img src="/Sun%20Jul%2020%202025-1.png" alt="" style="color:inherit;width:402px !important;height:425.48px !important;max-width:100% !important;"></div><div style="color:inherit;"><br/></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div><div data-element-id="elm_SpN6wbe4sxlzc78nH_vz2A" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Introduction: From Simple to Sophisticated</span></h2></div>
<div data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pxt5qFdN4iDLXqZjOFzCRw"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div><span style="font-style:italic;">This post is a collaboration between Ryley Bauer and Thanishque Harshaa.&nbsp;<br/></span><span style="color:inherit;"><span style="font-style:italic;"><br/></span>What started as a straightforward project quickly evolved into a layered, enterprise-grade automation system.</span></div><div><br/></div><div>A local band—One Nite Band—needed a smarter way to manage incoming show requests and musician availability. Their goal? Replace a messy, manual process with a scalable, repeatable solution using Microsoft Teams, Power Automate, SharePoint, and the Microsoft Graph API.</div><div><br/></div><div><div style="color:inherit;"><div><span style="font-weight:bold;">Core Challenge:</span></div><div><ul><li><span style="color:inherit;">Track incoming event bookings</span></li><li>Invite the right musicians to “bid” for availability based on their based on role and priority</li><li>Automatically assign accepted musicians to a collaboration space</li></ul></div><br/><div>What started as a “weekend Power Automate flow” turned into a deep dive into identity resolution, schema enforcement, and navigating the nuanced constraints of Microsoft Teams and Azure Active Directory. While the use case was built for musicians, the architecture applies to any project requiring dynamic team assembly—whether it’s teams of developers, analysts,&nbsp;<span style="color:inherit;">designers,&nbsp;</span><span style="color:inherit;">technicians</span><span style="color:inherit;">,&nbsp;</span><span style="color:inherit;">consultants, creatives, etc.</span></div></div></div></div></div>
</div><div data-element-id="elm_gY6j3uhae_sCnoQZMxHwXg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Project Goal: Automate Smart Role-Based Channel Assignment in Microsoft Teams</span></h2></div>
<div data-element-id="elm_VK6wA54V66rMtifAGKJZTQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VK6wA54V66rMtifAGKJZTQ"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>The key objective was to automate how internal and external musicians (like drummers, vocalists, and guitarists) were added to their respective Teams channels based on:</div><div><ul><li><span style="color:inherit;"><span style="font-weight:bold;">Priority:</span> Invitations were sent based on a role-specific hierarchy</span></li><li><span style="font-weight:bold;">Relevance: </span>Only the required roles for the event were contacted</li><li><span style="font-weight:bold;">Automation: </span>Accepted musicians were granted channel access automatically via Teams channel membership.</li><li><span style="font-weight:bold;">Traceability: </span>All actions were integrated with SharePoint and Power Automate for tracking.</li></ul></div><br/><div>To avoid clutter and confusion, general requests were routed through public channels, keeping private channels reserved for more specialized teams, while allowing the wider team to coordinate openly.</div></div></div>
</div><div data-element-id="elm_xY6XcKMZp8wP-c1GAUR9KA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_xY6XcKMZp8wP-c1GAUR9KA"].zpelem-heading { padding-block-end:0px; margin-block-end:0px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Key Technical Learnings and Challenges</span></h2></div>
<div data-element-id="elm_ofKvjD9NuTkHErgMCagx8Q" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">1. Internal vs. External Users: It's Not Just a Checkbox</span></h2></div>
<div data-element-id="elm_Emw65wedpyu_IL01bBa2Zg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Emw65wedpyu_IL01bBa2Zg"].zpelem-text{ padding-block-end:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>At first, we treated all users the same. Big mistake. Some of the issues we ran into include:</div><div><ul><li><span style="color:inherit;">External users contain <span style="font-weight:bold;">#EXT#</span> in their <span style="font-weight:bold;">userPrincipalName</span>, a reliable pattern we used to differentiate them.</span></li><li>You can’t assign external users as owners in private Teams channels as this throws an instant Graph API error</li><li>You can’t reference external users in Graph API until they’ve accepted an Azure AD invitation</li></ul></div><br/><div><span style="color:inherit;"><span style="font-weight:bold;">Solution: </span>We added conditional logic to gracefully handle the onboarding of external members, avoiding hard errors and flow failures.</span></div><div><br/></div><div><span style="font-weight:bold;">Takeaway: </span>External users require manual onboarding or invitation acceptance before you can automate their involvement.</div></div></div>
</div><div data-element-id="elm_D3f9ROh-M9TKajlk00t-fA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">2. Why concat() Almost Broke the Flow</span></h2></div>
<div data-element-id="elm_mnk2RhuT3YWf1kvLsQ35rQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_mnk2RhuT3YWf1kvLsQ35rQ"].zpelem-text{ padding-block-end:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>An early approach we used was by using <span style="font-weight:bold;">concat())</span> to build JSON payloads dynamically.</div><div><br/></div><div>That however, did not age well.&nbsp;</div><br/><div>Even one <span style="font-weight:bold;">null</span> value (like a missing user ID) would break the entire <span style="font-weight:bold;">concat()</span> chain, causing the flow to fail with hard-to-trace errors.</div><div><br/></div><div><span style="font-weight:bold;">Solution:</span></div><div><ul><li><span style="color:inherit;">Use array variables to build each member object</span></li><li>Wrap dynamic fields with guards: if(empty(...), '', ...)</li><li>Debug payloads one object at a time</li></ul></div></div></div>
</div><div data-element-id="elm_h08_KHF_OCenz9J2X_oJJw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">3. User GUIDs Are Mandatory for Graph API</span></h2></div>
<div data-element-id="elm_HVfYThFzt9KHE_zwZooOhw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HVfYThFzt9KHE_zwZooOhw"].zpelem-text{ padding-block-end:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>The Graph API requires GUIDs, not usernames or emails.</div><div><br/></div><div>The <span style="font-weight:bold;">user@odata.bind</span> value must be:&nbsp;</div><div><span style="font-weight:bold;">&quot;user@odata.bind&quot;: &quot;https://graph.microsoft.com/v1.0/users/{userId}&quot;</span></div><div><br/></div><div>…in which the userid must be the GUID which was retried using the Get User Profile (V2) in Office 365 actions.</div><div><br/></div><div><span style="font-weight:bold;">*Note: </span>If this step was skipped, the member addition will have failed silently or throw vague schema errors.</div></div></div>
</div><div data-element-id="elm_2QmtK1Y624r7CpKKXjE-wA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">4. Schema Errors &amp; Permission Pitfalls</span></h2></div>
<div data-element-id="elm_aIkPYCIGDF7kkwOIZfbCcA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_aIkPYCIGDF7kkwOIZfbCcA"].zpelem-text{ padding-block-end:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>The Graph API is unforgiving. Common issues included:</div><div><ul><li>“Property members in payload has a value that does not match schema”</li><li>“Guest users cannot be added as owner”</li></ul></div><div><br/></div><div><span style="font-weight:bold;">Solution:</span></div><div><ul><li><span style="color:inherit;">Validate user type before assigning owner/member roles</span></li><li>Keep the templates for owner/member schema separate</li><li>Only add accepted external users</li></ul></div></div></div>
</div><div data-element-id="elm_ymwnLzkTlKHYvdKuAEdsqA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">5. Array Variables: Your Flow’s Best Friend</span></h2></div>
<div data-element-id="elm_8VCDpSgqBPSC98nyTqBhSw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_8VCDpSgqBPSC98nyTqBhSw"].zpelem-text{ padding-block-end:20px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Switching to array variables was a huge turning point for our project.</div><div><br/></div><div>Instead of stitching strings together, we appended validated user objects into a clean array and passed that to the HTTP request. This gave us control, modularity, and fault tolerance. Our robust member arrays instead looked like this:</div><br/><div>{</div><div>&nbsp; &quot;values&quot;: [</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &quot;@odata.type&quot;: &quot;#microsoft.graph.aadUserConversationMember&quot;,</div><div>&nbsp; &nbsp; &nbsp; &quot;roles&quot;: [&quot;member&quot;],</div><div>&nbsp; &nbsp; &nbsp; &quot;user@odata.bind&quot;: &quot;https://graph.microsoft.com/v1.0/users/{userId}&quot;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; ]</div><div>}</div><br/><div><br/></div><br/><div><span style="font-weight:bold;">Result:&nbsp;</span><span style="color:inherit;">This made testing and debugging seamless, as we could preview each object before sending, as well as add failover logic easily.</span></div></div></div>
</div><div data-element-id="elm_m581_gVWhB6ETr6uCd2p-w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:inherit;font-size:25px;">6. Unexpected Microsoft Teams Constraints</span></h2></div>
<div data-element-id="elm_NGRQthkpXJLccpdVuDZTAA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_NGRQthkpXJLccpdVuDZTAA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>Even with flawless logic, one of the unexpected hurdles we hit came from the Microsoft Teams limitations, which include:</div><div><ul><li><span style="color:inherit;">Only 30 private channels per team</span></li><li>Certain roles can’t be added as owners</li><li>Graph API schema is rigid—any deviation causes full rejection</li></ul></div><br/><div>Although these were not power Automate issues, they were platform constraints by Microsoft Teams that required careful workaround via trial and error.</div></div></div>
</div><div data-element-id="elm_B4W_zVqjSEsHxA4hSh_IsA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Real-World Impact: From Jam Nights to Project Teams</span></h2></div>
<div data-element-id="elm_wri8Mah5IUxfRgmHmkmKyA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_wri8Mah5IUxfRgmHmkmKyA"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>This automation now powers real-time musician scheduling for a rotating band roster—ensuring the right people get contacted, and the right channels stay clean and efficient.</div><div><br/></div><div>But this system also models a powerful project resourcing tool beyond. We built a <span style="font-weight:bold;">Project Management </span>platform where roles (e.g., dev, QA, designer) are mapped, priority candidates are invited first, and project workspaces are created dynamically with full support for internal and external collaborators.</div><br/><div>With a few tweaks, this could be a full-fledged project resourcing engine for any Microsoft 365 environment.</div></div></div>
</div><div data-element-id="elm_AuWT-yKmWW_erCK2oBDHpQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:30px;color:rgb(93, 47, 143);">Final Thoughts: Beyond the Flow</span></h2></div>
<div data-element-id="elm_vpluU2qvqFt9srZwyfxfog" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_vpluU2qvqFt9srZwyfxfog"].zpelem-text{ padding-block-end:50px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div>This wasn’t just a flow—it was an education.</div><div><br/></div><div>It taught me about:</div><div><ul><li><span style="color:inherit;">Microsoft identity models</span></li><li>Power Platform resiliency</li><li>Real-world system design with API constraints</li></ul></div><br/><div>On some days, it felt like duct-taping XML to JSON. Other days, everything clicked, and the system worked beautifully.</div><div><br/></div><div>What started as a simple ask—“Can you assign musicians to Teams?”—became a milestone in my journey as a Power Platform developer. It deepened my API knowledge, strengthened my problem-solving under pressure skills, and gave me hands-on skills that I’ll carry into every project moving forward.</div></div></div>
</div><div data-element-id="elm_q34PIYoVaiRCJ8nhMqsWzQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-center " data-editor="true"><span style="font-size:20px;color:rgb(93, 47, 143);">Want to Learn More or Set Up A System that Works for You?</span></h3></div>
<div data-element-id="elm_zKPUQrHdSkyAso8TpajUmg" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"> [data-element-id="elm_zKPUQrHdSkyAso8TpajUmg"] .zpbutton.zpbutton-type-primary{ margin-block-end:100px; } </style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact" target="_blank"><span class="zpbutton-content">Contact Us!</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 31 Jul 2025 17:23:56 -0600</pubDate></item><item><title><![CDATA[Using Power Automate to Create a Photo Library and Add it to the Navigation]]></title><link>https://www.bauerautomate.com/blogs/post/using-power-automate-to-create-a-photo-library-and-add-it-to-the-navigation</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/Cat 43/IMG_0355-COLLAGE.jpg"/>A quick process for adding a photo library to a site!]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_XvnQtp1NQFeNcPSBXj7Tbg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_hWN5OyQtRmKP3T-Ij06bvQ" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_scAn7y0oTgKgNG_WIUDnzQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_emNyfPWnQcCzU-IdjqPVjw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_emNyfPWnQcCzU-IdjqPVjw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-center " data-editor="true">Adding a photo library programmatically</h2></div>
<div data-element-id="elm_aBYogGFdQ562IJt3vlDc3Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_aBYogGFdQ562IJt3vlDc3Q"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p style="text-align:left;">One of our clients came to us with a request for creating a SharePoint site automatically based on a project management list. If a project was set to &quot;Start&quot;, then a SharePoint site would be created. That will be covered in another article, but one of the interesting asks was to automatically include a photo library that would also be displayed in the QuickLaunch Navigation.</p><p style="text-align:left;">I referenced this article for the API syntax:&nbsp;<a href="http://www.ludovicperrichon.com/sharepoint-rest-api-call-with-powerautomate/#createlink">http://www.ludovicperrichon.com/sharepoint-rest-api-call-with-powerautomate/#createlink</a><br></p><ol><li style="text-align:left;">Create your flow however you like, a simple way to set this up is to create an instant flow and use the button trigger with a single input for the SiteURL.&nbsp;</li><li style="text-align:left;">Create a &quot;Send HTTP request to SharePoint&quot; step.&nbsp;</li><ol><li style="text-align:left;"><span style="font-weight:bold;">Site address: </span>SiteURL</li><li style="text-align:left;"><span style="font-weight:bold;">Method:</span> POST</li><li style="text-align:left;"><span style="font-weight:bold;">URI:</span> _api/web/lists</li><li style="text-align:left;"><span style="font-weight:bold;">Headers:</span>&nbsp;&nbsp;&nbsp;</li><ol><li style="text-align:left;">Accept | application/json;odata=verbose</li><li style="text-align:left;">Content-Type | application/json;odata=verbose</li></ol><li style="text-align:justify;"><span style="text-align:left;color:inherit;font-weight:bold;">Body:&nbsp;</span></li><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">{</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;__metadata&quot;:{</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;type&quot;: &quot;SP.List&quot;</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">},</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;AllowContentTypes&quot;: true,</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;BaseTemplate&quot;: 109,</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;ContentTypesEnabled&quot;: false,</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;Description&quot;: &quot;Photo library for __________&quot;,</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">&quot;Title&quot;: &quot;Photos&quot;</span></p><p style="text-align:left;"><span style="color:inherit;font-style:italic;font-size:10px;">}</span></p></ol><li style="text-align:left;"><span style="text-align:justify;color:inherit;">Add another &quot;HTTP to SharePoint&quot; step</span></li><ol><li style="text-align:left;"><span style="font-weight:bold;">Site address:&nbsp;</span>SiteURL</li><li style="text-align:left;"><span style="font-weight:bold;">Method:</span>&nbsp;POST</li><li style="text-align:left;"><span style="font-weight:bold;">URI:</span>&nbsp;_api/web/Navigation/QuickLaunch</li><li style="text-align:left;"><span style="font-weight:bold;">Headers:</span>&nbsp;&nbsp;&nbsp;</li><ol><li style="text-align:left;">Accept | application/json;odata=verbose</li><li style="text-align:left;">Content-Type | application/json;odata=verbose</li></ol><li style="text-align:justify;"><span style="text-align:left;font-weight:bold;">Body:&nbsp;</span></li><p style="text-align:left;"><span style="font-style:italic;font-size:10px;">{</span></p><p style="text-align:left;"><span style="font-style:italic;font-size:10px;">&quot;__metadata&quot;: { &quot;type&quot;: &quot;SP.NavigationNode&quot;},</span></p><p style="text-align:left;"><span style="font-style:italic;font-size:10px;">&quot;IsExternal&quot;: false,</span></p><p style="text-align:left;"><span style="font-style:italic;font-size:10px;">&quot;Title&quot;: &quot;Photos&quot;,</span></p><p style="text-align:left;"><span style="font-style:italic;font-size:10px;">&quot;Url&quot;: &quot;<span style="font-weight:bold;">SITEURL</span>/photos&quot;<br>}</span></p><p style="text-align:center;"><span style="font-style:italic;font-size:10px;"><br></span></p></ol></ol><p style="text-align:center;"><img src="https://lh3.googleusercontent.com/vFVkvFi42SpjPjkRRGXFXu5Pp_6zw4Kp6EG1-cHY2xL_JyZ0urEWxDLjc_rQ_unjnaaFnFLudSb-RIFAcff_dq_7B4-sLA86vbhBSMp0mLghYyrm-l26R6Vbi6PP-s-hbI1KNmqQGxHP528nBjIeng" width="507" height="800" style="font-size:11pt;color:inherit;"></p></div></div></div>
</div><div data-element-id="elm_jIFV_g6QRESDP0J_IhyDjg" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_jIFV_g6QRESDP0J_IhyDjg"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"></style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/services"><span class="zpbutton-content">Get Started Now</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sat, 01 Apr 2023 22:07:46 -0600</pubDate></item><item><title><![CDATA[Using PowerShell to Save or Clone an Existing SharePoint Online Site to Publish a the Global Template to the "From Your Organization" Menu ]]></title><link>https://www.bauerautomate.com/blogs/post/powershell-clone-site</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/Screenshot_20201123-090421_Snapchat.jpg"/>How to export, save or clone an existing SharePoint site to the global template store]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Vt3oGhcvQpmQq6egGxkEkw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_JNOkKyXGRt-D61-mHHmgzg" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"> [data-element-id="elm_JNOkKyXGRt-D61-mHHmgzg"].zprow{ border-radius:1px; } </style><div data-element-id="elm_NCFk5iNLRzKgVLE2LXjniQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_NCFk5iNLRzKgVLE2LXjniQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_NTvWFpeSoG_7VoIRlPqcfA" data-element-type="iframe" class="zpelement zpelem-iframe "><style type="text/css"> [data-element-id="elm_NTvWFpeSoG_7VoIRlPqcfA"].zpelem-iframe{ border-radius:1px; } </style><div class="zpiframe-container zpiframe-align-center"><iframe class="zpiframe " src="https://www.youtube.com/embed/D1ldOGlRO3o" width="560" height="315" align="center" allowfullscreen frameBorder="0"></iframe></div>
</div><div data-element-id="elm_WidgRbl_Q9iOyABuI2i9MQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_WidgRbl_Q9iOyABuI2i9MQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><div style="text-align:left;"><div style="color:inherit;"><div style="text-align:left;"><div style="color:inherit;"><p>SharePoint Online is a powerful tool for creating intranet sites, and it's even more powerful when you can create and use custom templates to streamline the process for multiple projects or clients. Unfortunately, creating a template from an existing SharePoint Online site can be a difficult task, especially for non-programmers.</p><p><br></p><p>In the past, creating a template was as simple as a <a href="https://support.microsoft.com/en-us/office/create-and-use-site-templates-in-sharepoint-server-versions-60371b0f-00e0-4c49-a844-34759ebdd989#:%7E:text=Save%20Site%20as%20Template%20in%20SharePoint%20Server%202013%2CInclude%20Content%20check%20box.%20...%20.%20See%20More." title="few clicks in SharePoint classic" target="_blank" rel="">few clicks in SharePoint classic</a>, but with the new SharePoint Online, it's not so easy anymore. I've tried various methods, such as using flows and http requests, but I've found that the best way to clone a site multiple times is by using PowerShell to export the existing site and create a template from it.</p><p><br></p><p>I created a simple script based on <a href="https://learn.microsoft.com/en-us/powershell/module/sharepoint-online/get-spositescriptfromweb?view=sharepoint-ps#example-1" title="Microsoft's documentation" target="_blank" rel="">Microsoft's documentation</a>, and even corrected a typo in the documentation regarding spaces in list and library names. <a href="https://github.com/MicrosoftDocs/OfficeDocs-SharePoint-PowerShell/issues/355" title="I even corrected a typo on the docs" target="_blank" rel="">I even corrected a typo on the docs</a>! The internal names, such as &quot;Shared%20Documents&quot; had to be used instead of &quot;Shared Documents&quot;.</p><p><br></p><p>In the upcoming Part 2 of this post, I will review the entire workflow, from a SharePoint list for projects, to a Power Automate flow that creates the site, provides permissions, applies the template, copies over some template files, and even applies customizations to the home page.</p><p><br></p><p>In summary, publishing an existing site as a template using PowerShell is the best way to clone a site multiple times. It's a little technical, but with the right script and a little bit of tweaking, you can make this process a lot more manageable.</p><p><br></p><p><span style="color:inherit;">Before proceeding, make sure to&nbsp;<a href="https://learn.microsoft.com/en-us/powershell/sharepoint/sharepoint-online/connect-sharepoint-online" target="_blank" rel="">install the SharePoint Online Management Shell</a>. The script I've provided includes a check and installation for the module, but I recommend installing it beforehand.&nbsp;</span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Open PowerShell as administrator and try my sample code below.&nbsp;</span><span style="color:inherit;">Adapting the </span><a href="https://learn.microsoft.com/en-us/powershell/module/sharepoint-online/get-spositescriptfromweb?view=sharepoint-ps#example-1" title="sample script " target="_blank" rel="">sample script </a><span style="color:inherit;">with some parameters and handling the module installation, we can use the following:</span></p></div></div></div></div></div></div>
</div><div data-element-id="elm_GN7qsEHSknplRdjYj_r9aA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_GN7qsEHSknplRdjYj_r9aA"].zpelem-text{ background-color:rgba(243,206,240,0.62); background-image:unset; border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;line-height:1;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div><span style="font-style:italic;font-size:12px;"># install the module if you don't already have it</span></div><span style="font-size:12px;"><div><span style="font-style:italic;">&nbsp;if(</span></div><div><span style="font-style:italic;">-not (</span></div><div><span style="font-style:italic;">Get-Module Microsoft.Online.SharePoint.PowerShell -ListAvailable)){</span></div><div><span style="font-style:italic;">&nbsp;Install-Module Microsoft.Online.SharePoint.PowerShell -Scope CurrentUser -Force</span></div><div><span style="font-style:italic;">&nbsp;}</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;">&nbsp;# Choices for operations, set to either $true or $false</span><br></div><div><span style="font-style:italic;">&nbsp;$exportFromWeb = $true</span></div><div><span style="font-style:italic;">&nbsp;$exportBackupFile = $true</span></div><div><span style="font-style:italic;">&nbsp;$createGlobalTemplate = $true</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;">&nbsp;# SharePoint base URL</span><br></div><div><span style="font-style:italic;">&nbsp;$baseURL = &quot;ryleybauer&quot;</span></div><div><span style="font-style:italic;">&nbsp;$companyDisplayName = &quot;Bauer Automate&quot;</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;">&nbsp;# Edit these parameters to define your template</span><br></div><div><span style="font-style:italic;">&nbsp;$newSiteTitle = &quot;Quick Project Template&quot;</span></div><div><span style="font-style:italic;">&nbsp;$shortName = &quot;Projects&quot;</span></div><div><span style="font-style:italic;"><br></span></div><div><span style="font-style:italic;">&nbsp;# These variables are generated from the parameters above</span></div><div><span style="font-style:italic;">&nbsp;$adminURL = ' https://' + $baseURL + '-admin.sharepoint.com'</span></div><div><span style="font-style:italic;">&nbsp;$siteURL = 'https://' + $baseURL + '.sharepoint.com/sites/' + $shortName</span></div><div><span style="font-style:italic;">&nbsp;$outFolder = $env:USERPROFILE + '\Downloads\' + $newSiteTitle + ' \ '</span></div><div><span style="font-style:italic;">&nbsp;$outFile = $outFolder + $newSiteTitle + '.txt '</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;"># Select Source Data</span><br></div><div><span style="font-style:italic;">&nbsp;$lists = &quot;Shared%20Documents&quot;, &quot;SitePages&quot;, &quot;Lists/Losses&quot;, &quot;Lists/Projects%20List&quot;</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;"># Connect to SharePoint Online</span><br></div><div><span style="font-style:italic;">Connect-SPOService -Url $adminURL</span></div><div><br></div><div><span style="font-style:italic;"># Generate Script from existing site</span></div><div><span style="font-style:italic;">if ($exportFromWeb){</span></div><div><span style="font-style:italic;">&nbsp; &nbsp;$sourceSiteScript = Get-SPOSiteScriptFromWeb -WebUrl $siteURL -IncludeLinksToExportedItems -IncludedLists ($lists)</span></div><div><span style="font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;"># Optionally create a backup file in the user' s documents folder</span><br></div><div><span style="font-style:italic;">if ($exportBackupFile) {</span></div><div><span style="font-style:italic;">&nbsp; &nbsp;New-Item -Path $outFolder -ItemType Directory</span></div><div><span style="font-style:italic;">&nbsp; &nbsp;$sourceSiteScript | Out-File -filepath $outFile</span></div><div><span style="font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;"># Optionally publish as global template and site design</span><br></div><div><span style="font-style:italic;">if ($createGlobalTemplate) {</span></div><div><span style="font-style:italic;">&nbsp; &nbsp;$SiteScript = Add-SPOSiteScript -Title $newSiteTitle -Content $sourceSiteScript</span></div><div><span style="font-style:italic;">&nbsp; &nbsp;$SiteDesign = Add-SPOSiteDesign -Title $newSiteTitle -WebTemplate 64 -SiteScripts $SiteScript.Id</span></div><div><span style="font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-style:italic;color:inherit;"># Get site template list to show the ID of the newly created template and confirm it was successful</span><br></div><div><span style="font-style:italic;">&nbsp; &nbsp;Get-SPOSiteDesign</span></div></span></div></div></div></div></div></div></div>
</div><div data-element-id="elm_NujwtX2Lpf2aSIGIo3qQFg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_NujwtX2Lpf2aSIGIo3qQFg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div><div style="color:inherit;"><p>When I first started working with SharePoint Site Designs and Site Scripts, I hadn't used them before and wasn't familiar with their structure. However, I found a great resource in DevFacto's blog post on <a href="https://www.devfacto.com/blog/sharepoint-site-designs-site-scripts" title="Getting Started with SharePoint Site Designs and Site Scripts" target="_blank" rel="">Getting Started with SharePoint Site Designs and Site Scripts</a>. It helped me understand the anatomy of a site script, which was especially helpful when I needed to split my template file...</p><div style="color:inherit;"><div style="text-align:center;">...</div><div style="text-align:center;">I didn't want to split the template file</div><p style="text-align:center;">...</p></div><p>I initially didn't want to split the template file, but I learned that <span style="font-weight:bold;">site scripts are limited to 100,000 characters</span>. My site had multiple lists and libraries with lots of columns and formatting, so I realized that I had more work ahead of me. Excited for the challenge, I decided to split my file by list and library. This way, it would be more modular for future use and each list/library file could be used individually in a new template if needed. If your template is simple and the file is less than 100,000 characters, then you can skip the next section where I discuss splitting the file.</p><p><br></p><p>Reading DevFacto's <a href="https://www.devfacto.com/blog/sharepoint-site-designs-site-scripts" title="post" target="_blank" rel="">post</a> was particularly helpful as it gave me a better understanding of the structure of the site script. The <a href="https://www.devfacto.com/blog/sharepoint-site-designs-site-scripts" title="post" target="_blank" rel="">post</a> does a great job of outlining the basic structure of the script that I had to use for each file:</p><p></p><div style="text-align:center;"><img src="https://sitebuilder-799202073.zohositescontent.com/Sat%20Jan%2014%202023-1.png" alt="" style="color:inherit;width:236px;"></div>&nbsp;The structure of the script helped me to split my file by list and library which made it more modular for future use. My template site had 3 libraries and 7 lists, so I created 10 files. Each file had the same structure and looked something like this:<p></p></div></div><div style="text-align:center;"><img src="https://sitebuilder-799202073.zohositescontent.com/Sat%20Jan%2014%202023-2.png" alt="" style="width:636.56px;"><br></div><div style="text-align:left;"><span style="color:inherit;">My template site had 3 libraries and 7 lists, so I had created 10 files. If you opened the files, each of them looked basically like this:&nbsp;</span></div></div></div>
</div><div data-element-id="elm_RPv1ymUSg6AK7Cxxq-i-Og" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_RPv1ymUSg6AK7Cxxq-i-Og"].zpelem-text{ background-color:rgba(243,206,240,0.62); background-image:unset; border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;line-height:1;"><div><span style="font-size:12px;font-style:italic;">{</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &quot;$schema&quot;: &quot;schema.json&quot;,</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &quot;actions&quot;: [{</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;verb&quot;: &quot;createSPList&quot;,</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;listName&quot;: &quot;Shared Documents&quot;,</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;templateType&quot;: 101,</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;subactions&quot;: [{</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;verb&quot;: &quot;setDescription&quot;,</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;description&quot;: &quot;Project team can use this Documents Library to store deliverable documents.&quot;</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div><div><span style="font-size:12px;font-style:italic;">//EXTRA STEPS HERE</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; ],</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &quot;bindata&quot;: {},</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; &quot;version&quot;: 1</span></div><div><span style="font-size:12px;font-style:italic;">};</span></div></div></div></div></div>
</div><div data-element-id="elm_NSe9Vffi3g5l5O09vOaEmg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_NSe9Vffi3g5l5O09vOaEmg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Once we put all of that together, and understand the anatomy of a site script, we can clone very complex site templates.</p><p>If you take the original script from above and add a few more parameters to check if the script should import one or more files instead, you get the following:</p></div>
</div><div data-element-id="elm_a2dBP9G5DfiTpQCtRLDn7g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_a2dBP9G5DfiTpQCtRLDn7g"].zpelem-text{ background-color:rgba(243,206,240,0.62); background-image:unset; border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;line-height:1;"><div><span style="font-size:12px;font-style:italic;"># install the module if you don 't already have it</span></div><div><span style="font-size:12px;font-style:italic;">if (</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; -not (</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; &nbsp; Get-Module Microsoft.Online.SharePoint.PowerShell -ListAvailable</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; )</span></div><div><span style="font-size:12px;font-style:italic;">) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; Install-Module Microsoft.Online.SharePoint.PowerShell -Scope CurrentUser -Force</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Choices for operations, set to either $true or $false</span></div><div><span style="font-size:12px;font-style:italic;">$exportFromWeb = $true</span></div><div><span style="font-size:12px;font-style:italic;">$importFromFile = $false</span></div><div><span style="font-size:12px;font-style:italic;">$importFromMultipleFiles = $false</span></div><div><span style="font-size:12px;font-style:italic;">$exportBackupFile = $false</span></div><div><span style="font-size:12px;font-style:italic;">$createGlobalTemplate = $false</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># SharePoint base URL</span></div><div><span style="font-size:12px;font-style:italic;">$baseURL = &quot;ryleybauer&quot;</span></div><div><span style="font-size:12px;font-style:italic;">$companyDisplayName = &quot;Bauer Automate&quot;</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Edit these parameters to define your template</span><br></div><div><span style="font-size:12px;font-style:italic;">$newSiteTitle = &quot;Project Template&quot;</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Select your existing site. The short name is the URL section after &quot;https://bauerautomate.sharepoint.com/sites/SHORTNAME&quot;&nbsp;</span></div><div><span style="font-size:12px;font-style:italic;">$existingSiteShortName = &quot;Projects&quot;</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># These variables are generated from the parameters above</span></div><div><span style="font-size:12px;font-style:italic;">$adminURL = ' https://' + $baseURL + '-admin.sharepoint.com'</span></div><div><span style="font-size:12px;font-style:italic;">$siteURL = 'https://' + $baseURL + '.sharepoint.com/sites/' + $existingSiteShortName</span></div><div><span style="font-size:12px;font-style:italic;">$outFolder = $env:USERPROFILE + '\Downloads\' + $newSiteTitle + ' \ '</span></div><div><span style="font-size:12px;font-style:italic;">$outFile = $outFolder + $newSiteTitle + '.txt '</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Select Source Data</span></div><div><span style="font-size:12px;font-style:italic;">$lists = &quot;Shared%20Documents&quot;,&quot;SitePages&quot;,&quot;Lists/Losses&quot;,&quot;Lists/Projects%20List&quot;</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Generate a name for each script - same as above - add as many as needed to match above</span></div><div><span style="font-size:12px;font-style:italic;">$inFile1Name = $newSiteTitle + &quot; - Projects&quot;</span></div><div><span style="font-size:12px;font-style:italic;">$inFile2Name = $newSiteTitle + &quot; - Documents&quot;</span></div><div><span style="font-size:12px;font-style:italic;">$inFile3Name = $newSiteTitle + &quot; - SitePages&quot;</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Input files from existing template that was split into multiple files - add as many as needed, and I recommend 1 per list/library to keep it modular</span><br></div><div><span style="font-size:12px;font-style:italic;">$inFile1 = $outFolder + ' \' + $inFile1Name + '.txt '</span></div><div><span style="font-size:12px;font-style:italic;">$inFile2 = $outFolder + ' \' + $inFile2Name + '.txt '</span></div><div><span style="font-size:12px;font-style:italic;">$inFile3 = $outFolder + ' \' + $inFile3Name + '.txt '</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Connect to SharePoint Online</span></div><div><span style="font-size:12px;font-style:italic;">Connect-SPOService -Url $adminURL</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Generate Script from existing site</span></div><div><span style="font-size:12px;font-style:italic;">if ($exportFromWeb) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $sourceSiteScript = Get-SPOSiteScriptFromWeb -WebUrl $siteURL -IncludeLinksToExportedItems -IncludedLists ($lists)</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;"># Apply Script from existing single file</span></div><div><span style="font-size:12px;font-style:italic;">if ($importFromFile) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; [string]$sourceSiteScript = Get-Content $inFile1</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Optionally create a backup file in the user' s documents folder</span><br></div><div><span style="font-size:12px;font-style:italic;">if ($exportBackupFile) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; New-Item -Path $outFolder -ItemType Directory</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $sourceSiteScript | Out- File - filepath $outFile</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Optionally publish as global template and site design from single file</span><br></div><div><span style="font-size:12px;font-style:italic;">if ($createGlobalTemplate -and -not $importFromMultipleFiles) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $SiteScript = Add -SPOSiteScript -Title $newSiteTitle -Content $sourceSiteScript</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $SiteDesign = Add -SPOSiteDesign -Title $newSiteTitle -WebTemplate 64 -SiteScripts $SiteScript.Id</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Apply Script from existing multiple files - add as many as needed</span><br></div><div><span style="font-size:12px;font-style:italic;">if ($importFromMultipleFiles) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; [string]$sourceSiteScript1 = Get -Content $inFile1</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; [string]$sourceSiteScript2 = Get -Content $inFile2</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; [string]$sourceSiteScript3 = Get -Content $inFile3</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Optionally publish as global template and site design from multiple files - add as many as needed</span><br></div><div><span style="font-size:12px;font-style:italic;">if ($createGlobalTemplate -and $importFromMultipleFiles) {</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $SiteScript1 = Add -SPOSiteScript -Title $inFile1Name -Content $sourceSiteScript1</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $SiteScript2 = Add -SPOSiteScript -Title $inFile2Name -Content $sourceSiteScript2</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $SiteScript3 = Add -SPOSiteScript -Title $inFile3Name -Content $sourceSiteScript3</span></div><div><br></div><div><span style="font-size:12px;font-style:italic;">&nbsp; # add as many as needed to the end of this line to add all of the scripts to the site design</span></div><div><span style="font-size:12px;font-style:italic;">&nbsp; $SiteDesign = Add -SPOSiteDesign -Title $newSiteTitle -WebTemplate 64 -SiteScripts ($SiteScript1.Id,$SiteScript2.Id,$SiteScript3.Id)</span></div><div><span style="font-size:12px;font-style:italic;">}</span></div><span style="font-style:italic;"><br></span><div><span style="font-size:12px;font-style:italic;color:inherit;"># Get site template list to show the ID of the newly created template and confirm it was successful</span><br></div><div><div style="line-height:1;"><span style="font-size:12px;font-style:italic;">Get-SPOSiteDesign</span></div></div></div></div></div></div></div>
</div><div data-element-id="elm_sPgqJx0XS1WzAlUvnwrpDw" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_sPgqJx0XS1WzAlUvnwrpDw"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"></style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/services"><span class="zpbutton-content">See how we can help today!</span></a></div>
</div><div data-element-id="elm_2UfmA1_jGS-3sClOruSSag" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"> [data-element-id="elm_2UfmA1_jGS-3sClOruSSag"].zprow{ border-radius:1px; } </style><div data-element-id="elm_wU7iT7Ktl0Yq9KQZaz9xmQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_wU7iT7Ktl0Yq9KQZaz9xmQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_z6ssqHvoPg8_eBA-kWlWpA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_z6ssqHvoPg8_eBA-kWlWpA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Recent Blogs</h2></div>
<div data-element-id="elm_9FeMc_RfLinTYldZPptrhQ" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.1.0/mustache.js"></script><div id="template" style="display:none;"><div data-element-type="row" class="zprow zpalign-items-flex-start zpjustify-content-flex-start "> {{#blog_list}} <div data-element-type="column" class="zpelem-col zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><a href="{{link}}">{{title}}</a></h3></div>
<div data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left " data-editor="true"><p>{{{description}}}</p></div>
</div><div data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-left"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="{{link}}" target="_blank"><span class="zpbutton-content">Read More</span></a></div>
</div></div> {{/blog_list}} </div></div><script>
function renderList(list) {

    var template = document.getElementById('template').innerHTML;
    var rendered = Mustache.render(template, list);
    document.getElementById('list').innerHTML = rendered;
}

function getFeeds() {
    $X.get({
        url: '/blogs/feed',
        handler: function() {
            var result = this.responseText;
            if (window.DOMParser) {
                parser = new DOMParser();
                xmlDoc = parser.parseFromString(result, "text/xml");
            } else // Internet Explorer 
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
                xmlDoc.loadXML(result);
            }
            var items = xmlDoc.getElementsByTagName('item');
            renderList({ blog_list: itemsToJSON(items) })
        }
    });
}

function itemsToJSON(items) {
    var blog_list = [];
    for (var i = 0; i < 3; i++) {
        var blog_post_json = {};
        var blog_post = items[i];
        var children = blog_post.children;
        for (var j = 0; j < children.length; j++) {
            var tagName = children[j].tagName;
            blog_post_json[tagName] = children[j].textContent;
        }
        blog_list.push(blog_post_json);
    }
    return blog_list;
}
document.addEventListener('DOMContentLoaded', getFeeds);
</script><div id="list">Loading...</div>
</div></div></div></div></div></div><div data-element-id="elm_pY6V5Ldk6tSrGdAHMy8jkA" data-element-type="row" class="zprow zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_pY6V5Ldk6tSrGdAHMy8jkA"].zprow{ border-radius:1px; } </style><div data-element-id="elm_mz4HVubrCVSxhCL2sCJY7Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_mz4HVubrCVSxhCL2sCJY7Q"].zpelem-col{ border-radius:1px; } </style></div>
</div></div></div></div> ]]></content:encoded><pubDate>Sat, 14 Jan 2023 17:56:09 -0700</pubDate></item><item><title><![CDATA[How to Customize your Modern Microsoft SharePoint Online Site using Classic Features Webparts and Content Types]]></title><link>https://www.bauerautomate.com/blogs/post/sharepoint-hidden-classic-apps</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/Cat 43/3.png"/>If you're looking for the SharePoint classic apps and you also had trouble finding the button, this post is for you! Add photo library and wiki!]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_zgb8JkReS_eUAvH0CHxlXQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_pmqXc9sXR8CjWJovDHBflw" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_jCLYTdT_QomkF7Oov0D1uQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_jCLYTdT_QomkF7Oov0D1uQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_49c6n5UN7j9dq9s4o_QpKA" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_49c6n5UN7j9dq9s4o_QpKA"] div.zpspacer { height:12px; } @media (max-width: 768px) { div[data-element-id="elm_49c6n5UN7j9dq9s4o_QpKA"] div.zpspacer { height:calc(12px / 3); } } </style><div class="zpspacer " data-height="12"></div>
</div><div data-element-id="elm_vVbK5ZGPSPWfHZFpOJSAiw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_vVbK5ZGPSPWfHZFpOJSAiw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;text-align:left;"><div style="color:inherit;"><div><span style="font-weight:bold;">BONUS</span>: Read more to find the hidden SharePoint classic button for webparts and apps!&nbsp;</div><div><br></div><div>As someone who's been around SharePoint for a while, I have gotten used to a few of the classic features that have recently been changed. The other day, I was trying to add a &quot;Photos&quot; library to my site and couldn't find it in the options with the new UI. Turns out they've done a good job of hiding the &quot;classic experience&quot; button. Read below to see the button's new location!&nbsp;</div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">If you're a seasoned veteran to SharePoint and trying to customize your new Modern Microsoft SharePoint Online (SPO) site, then you've come to the right place.&nbsp;</span><br></div><br><div>I'm going to show you how to use classic features of SharePoint and web parts to customize your new site.&nbsp;</div><div><br></div><div><span style="font-weight:bold;">Let's get started!&nbsp;</span></div><div><ol><li><span style="color:inherit;">Navigate to &quot;Site Contents:&quot;</span></li><li><span style="color:inherit;">Select &quot;New&quot;<br></span></li><li><span style="color:inherit;">Choose Option: &quot;App&quot;&nbsp;</span><br></li><li><span style="color:inherit;font-weight:bold;">Hidden within the first paragraph click on &quot;Classic Experience&quot;&nbsp;</span><br></li><li><span style="color:inherit;">Select your desired App&nbsp;</span></li></ol></div><br><div><span style="color:inherit;">Below are screenshot guides to better help you...</span><br></div><div><span style="color:inherit;"><br></span></div><div><div style="color:inherit;"><div>Some of my favourite Classic SharePoint content types to use are:&nbsp;</div><div><ul><li>Calendar: This is a great way to keep everyone up to date on what's going on in the office. It's also a good way for meeting minutes and other important information. The calendar can be displayed on the front page or within an individual page as well.&nbsp;</li><li>Photo / Picture Library: If you need pictures for your site then this is a great place to start! You can add pictures from your local computer or from any other computer connected to the network by using File Explorer, or you can use Microsoft Photos&nbsp; &nbsp;</li><li>Wiki: A wiki is a great way to put together Frequently Asked Questions (FAQs) or create knowledge base articles about your business. If you have any questions about something then just ask them here! The community will help out with answers too!&nbsp; &nbsp;</li><li>Announcements: This is a great way to let people know when there's an event happening at your company or if it's time for an update on your blog posts or social media accounts like Facebook Twitter , Instagram etc.. You can also add links back into these pages so that people can easily find them&nbsp;</li></ul></div><br><div><br></div><div>SharePoint is a powerful tool for online collaboration. It's the ideal place to host your company's information and projects, if you are looking for help on how to better use this tool, feel free to connect with me:&nbsp;</div><div><br></div><div>If you found this blog post and guide helpful, buy me a coffee&nbsp;</div></div></div><div><span style="color:inherit;"><br></span></div><div><img src="/Blog%20Resources/Classic%20SP%201.png"><span style="color:inherit;"><br></span></div><div><br></div><div><img src="/Blog%20Resources/Classic%20SP%202.png"><br></div><div><br></div><div><img src="/Blog%20Resources/Classic%20SP%203.png"><br></div><div><br></div><div><br></div><div><span style="color:inherit;"><br></span></div></div></div></div>
</div><div data-element-id="elm_0-9InLJDKR3EWgtY9QdSUQ" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_0-9InLJDKR3EWgtY9QdSUQ"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"></style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/services"><span class="zpbutton-content">See how we can help today!</span></a></div>
</div><div data-element-id="elm_PQZ3QN_7hrZfAnU_0IRBdw" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"> [data-element-id="elm_PQZ3QN_7hrZfAnU_0IRBdw"].zprow{ border-radius:1px; } </style><div data-element-id="elm_3Ep93PWTXW-Cv2zzQwOy2g" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_3Ep93PWTXW-Cv2zzQwOy2g"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_G8Z317zVcusoqgaFPLICqw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_G8Z317zVcusoqgaFPLICqw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Recent Blogs</h2></div>
<div data-element-id="elm_8kD18yRojqOCUcnlVODNlg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.1.0/mustache.js"></script><div id="template" style="display:none;"><div data-element-type="row" class="zprow zpalign-items-flex-start zpjustify-content-flex-start "> {{#blog_list}} <div data-element-type="column" class="zpelem-col zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><a href="{{link}}">{{title}}</a></h3></div>
<div data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left " data-editor="true"><p>{{{description}}}</p></div>
</div><div data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-left"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="{{link}}" target="_blank"><span class="zpbutton-content">Read More</span></a></div>
</div></div> {{/blog_list}} </div></div><script>
function renderList(list) {

    var template = document.getElementById('template').innerHTML;
    var rendered = Mustache.render(template, list);
    document.getElementById('list').innerHTML = rendered;
}

function getFeeds() {
    $X.get({
        url: '/blogs/feed',
        handler: function() {
            var result = this.responseText;
            if (window.DOMParser) {
                parser = new DOMParser();
                xmlDoc = parser.parseFromString(result, "text/xml");
            } else // Internet Explorer 
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
                xmlDoc.loadXML(result);
            }
            var items = xmlDoc.getElementsByTagName('item');
            renderList({ blog_list: itemsToJSON(items) })
        }
    });
}

function itemsToJSON(items) {
    var blog_list = [];
    for (var i = 0; i < 3; i++) {
        var blog_post_json = {};
        var blog_post = items[i];
        var children = blog_post.children;
        for (var j = 0; j < children.length; j++) {
            var tagName = children[j].tagName;
            blog_post_json[tagName] = children[j].textContent;
        }
        blog_list.push(blog_post_json);
    }
    return blog_list;
}
document.addEventListener('DOMContentLoaded', getFeeds);
</script><div id="list">Loading...</div>
</div></div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 05 Jan 2023 14:08:58 -0700</pubDate></item><item><title><![CDATA[How to Copy a Modern SharePoint Page]]></title><link>https://www.bauerautomate.com/blogs/post/how-to-copy-a-modern-sharepoint-page</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bauerautomate.com/Cat 43/6.png"/>I shared a blog on another site showing a quick way to copy a modern SharePoint page across different site collections.]]></description><content:encoded><![CDATA[
<div class="zpcontent-container blogpost-container "><div data-element-id="elm_BUBy1femSR-2b2eHdo26jA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer"><div data-element-id="elm_1qVVSsWRR_yR8pAJD7MfPA" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"></style><div data-element-id="elm_WH1P9OvzQoOYRwh0bNGAoA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_WH1P9OvzQoOYRwh0bNGAoA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_I0MrhJZplTWS8HfiMi9kqQ" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_I0MrhJZplTWS8HfiMi9kqQ"] div.zpspacer { height:12px; } @media (max-width: 768px) { div[data-element-id="elm_I0MrhJZplTWS8HfiMi9kqQ"] div.zpspacer { height:calc(12px / 3); } } </style><div class="zpspacer " data-height="12"></div>
</div><div data-element-id="elm_4VtOXtUiQdeMcf-JXYo72w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4VtOXtUiQdeMcf-JXYo72w"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p>In a past life, I contributed to an article on instructions for how to copy a modern Microsoft SharePoint page from one site collection to another using Microsoft Power Automate.&nbsp;<span style="color:inherit;">Typically, you can only copy classic and modern pages within the same site collection, unless you're clever and literally treat them as files.&nbsp;</span></p></div>
</div><div data-element-id="elm_3B0rqHitQqGsnGK6eCXiCg" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_3B0rqHitQqGsnGK6eCXiCg"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"></style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="https://www.devfacto.com/blog/one-sharepoint-modern-page" target="_blank"><span class="zpbutton-content">Read the How To Article</span></a></div>
</div><div data-element-id="elm_BnE7DtxmtjKfkDGQpcfRkQ" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_BnE7DtxmtjKfkDGQpcfRkQ"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center"><style type="text/css"></style><a role="button" class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/services"><span class="zpbutton-content">See how we can help today!</span></a></div>
</div><div data-element-id="elm_j0MRPcHew9iDJEmGm-qT_Q" data-element-type="row" class="zprow zpalign-items- zpjustify-content- "><style type="text/css"> [data-element-id="elm_j0MRPcHew9iDJEmGm-qT_Q"].zprow{ border-radius:1px; } </style><div data-element-id="elm_yEcxvQZvNbvrGCjRBziWcg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_yEcxvQZvNbvrGCjRBziWcg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_aHDOfMJOU801JuxTf5qPyQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_aHDOfMJOU801JuxTf5qPyQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Recent Blogs</h2></div>
<div data-element-id="elm_vuHZJdfpEvAREyF0EvK1dg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.1.0/mustache.js"></script><div id="template" style="display:none;"><div data-element-type="row" class="zprow zpalign-items-flex-start zpjustify-content-flex-start "> {{#blog_list}} <div data-element-type="column" class="zpelem-col zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><a href="{{link}}">{{title}}</a></h3></div>
<div data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left " data-editor="true"><p>{{{description}}}</p></div>
</div><div data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-left"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="{{link}}" target="_blank"><span class="zpbutton-content">Read More</span></a></div>
</div></div> {{/blog_list}} </div></div><script>
function renderList(list) {

    var template = document.getElementById('template').innerHTML;
    var rendered = Mustache.render(template, list);
    document.getElementById('list').innerHTML = rendered;
}

function getFeeds() {
    $X.get({
        url: '/blogs/feed',
        handler: function() {
            var result = this.responseText;
            if (window.DOMParser) {
                parser = new DOMParser();
                xmlDoc = parser.parseFromString(result, "text/xml");
            } else // Internet Explorer 
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
                xmlDoc.loadXML(result);
            }
            var items = xmlDoc.getElementsByTagName('item');
            renderList({ blog_list: itemsToJSON(items) })
        }
    });
}

function itemsToJSON(items) {
    var blog_list = [];
    for (var i = 0; i < 3; i++) {
        var blog_post_json = {};
        var blog_post = items[i];
        var children = blog_post.children;
        for (var j = 0; j < children.length; j++) {
            var tagName = children[j].tagName;
            blog_post_json[tagName] = children[j].textContent;
        }
        blog_list.push(blog_post_json);
    }
    return blog_list;
}
document.addEventListener('DOMContentLoaded', getFeeds);
</script><div id="list">Loading...</div>
</div></div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 28 Dec 2022 17:39:57 -0700</pubDate></item></channel></rss>