<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
    <channel>
        <title><![CDATA[Hudu Community - Automation Library]]></title>
        <description><![CDATA[Hudu Community - Automation Library]]></description>
        <link>https://community.hudu.com</link>
        <image>
            <url>https://tribe-s3-production.imgix.net/qiXF5cFYiRxKydUgnbPag?fit=max&amp;w=500&amp;auto=compress,format</url>
            <title>Hudu Community - Automation Library</title>
            <link>https://community.hudu.com</link>
        </image>
        <generator>Bettermode RSS Generator</generator>
        <lastBuildDate>Sat, 04 Apr 2026 02:24:18 GMT</lastBuildDate>
        <atom:link href="/rss/OXZUm9fx7qDM/posts" rel="self" type="application/rss+xml"/>
        <pubDate>Sat, 04 Apr 2026 02:24:18 GMT</pubDate>
        <copyright><![CDATA[2026 Hudu Community]]></copyright>
        <language><![CDATA[en-US]]></language>
        <ttl>60</ttl>
        <webfeeds:icon></webfeeds:icon>
        <webfeeds:related layout="card" target="browser"/>
        <item>
            <title><![CDATA[Moving Assets Between Layouts using GUI - Doing things the Easier Way!]]></title>
            <description><![CDATA[Move assets from one Hudu asset layout to another with a guided GUI workflow. The tool helps you map fields, fill required values, combine multiple source fields with `Smoosh`, handle merge-on-match ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/asset-layout-transfer-gui---doing-things-the-easy-way-LVSWR9VyOqclRo2</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/asset-layout-transfer-gui---doing-things-the-easy-way-LVSWR9VyOqclRo2</guid>
            <dc:creator><![CDATA[Mason Stelter]]></dc:creator>
            <pubDate>Fri, 03 Apr 2026 21:51:40 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Move assets from one Hudu asset layout to another with a guided GUI workflow. The tool helps you map fields, fill required values, combine multiple source fields with `Smoosh`, handle merge-on-match behavior, and relink supported related objects.</strong><br><br><a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Migrations/Migrating-Assets-Between-Layouts">https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Migrations/Migrating-Assets-Between-Layouts</a></p><div data-embed-url="https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Migrations/Migrating-Assets-Between-Layouts" data-type="embed"></div><hr><p></p><h2 class="text-xl" data-toc-id="213f5bed-d2c6-410a-bca4-acac89d6f363" id="213f5bed-d2c6-410a-bca4-acac89d6f363"><strong>Quick summary</strong></h2><ol><li><p><strong>Run </strong><code>HuduAssetLayoutTransfer.exe</code></p></li><li><p><strong>Choose the source and destination layouts</strong></p></li><li><p><strong>Pick merge behavior for matching assets</strong></p></li><li><p><strong>Review each destination field in the mapping wizard</strong></p></li><li><p><strong>Confirm the final plan and run the transfer</strong></p></li></ol><hr><p></p><h2 class="text-xl" data-toc-id="764197b4-5c91-449d-9229-0ac2b115bd2b" id="764197b4-5c91-449d-9229-0ac2b115bd2b"><strong>What This Tool Does</strong></h2><p><strong>- Transfers asset data from one Hudu layout into another</strong></p><p><strong>- Supports field-by-field mapping through the GUI</strong></p><p><strong>- Lets you use constant values for required destination fields</strong></p><p><strong>- Supports </strong><code>SMOOSH</code><strong> to combine multiple source fields into one destination field</strong></p><p><strong>- Can normalize or strip HTML from rich text when needed</strong></p><p><strong>- Supports structured </strong><code>AddressData</code><strong> destination mapping</strong></p><p><strong>- Supports </strong><code>ListSelect</code><strong> destination mapping, including optional creation of missing list items</strong></p><p><strong>- Can merge or skip when a likely matching asset already exists in the destination</strong></p><p><strong>- Relinks supported related records such as passwords, uploads, articles, and photos</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="e786387e-6852-46bb-aa82-2dc185db43b0" id="e786387e-6852-46bb-aa82-2dc185db43b0"><strong>What Gets Carried Over</strong></h2><p><strong>- Any source asset fields you choose to map</strong></p><p><strong>- AssetTag relations, converted into direct relations where applicable</strong></p><p><strong>- Related passwords</strong></p><p><strong>- Related procedures</strong></p><p><strong>- Related articles</strong></p><p><strong>- Attached uploads</strong></p><p><strong>- Public photos</strong></p><p><strong>- Related photos *</strong></p><p><strong><em>*Photo relinking requires Hudu 2.41.0 or later.</em></strong></p><hr><p></p><h2 class="text-xl" data-toc-id="69fe69dc-7abc-4f65-9650-30b2024000fa" id="69fe69dc-7abc-4f65-9650-30b2024000fa"><strong>Requirements</strong></h2><p><strong>- PowerShell </strong><code>7.5.1</code><strong> or later on Windows PC</strong></p><p><strong>- A Hudu base URL</strong></p><p><strong>- A Hudu API key</strong></p><p><strong>- An existing source layout and destination layout</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="8eca4c7e-7dc6-458b-afa1-4a46bc0126a8" id="8eca4c7e-7dc6-458b-afa1-4a46bc0126a8"><strong>Quick Start</strong></h2><h3 class="text-lg" data-toc-id="4466b5dc-e74c-45f5-92c6-0c3c4803cca4" id="4466b5dc-e74c-45f5-92c6-0c3c4803cca4"><strong>1. Launch the tool</strong></h3><p>Run <code>HuduAssetLayoutTransfer.exe.</code></p><figure data-align="center" data-size="best-fit" data-id="kmOMNZSyQRbPRZe67fepZ" data-version="v2" data-type="image"><img data-id="kmOMNZSyQRbPRZe67fepZ" src="https://tribe-s3-production.imgix.net/kmOMNZSyQRbPRZe67fepZ?auto=compress,format"></figure><p><strong>The tool opens a GUI window and a terminal window. The terminal is mainly there for logging and troubleshooting.</strong></p><h3 class="text-lg" data-toc-id="9d4de4a7-9442-4908-b0cc-6b5ed995aad8" id="9d4de4a7-9442-4908-b0cc-6b5ed995aad8"><strong>2. Enter your Hudu connection details</strong></h3><p><strong>Provide your Hudu URL and API key.</strong></p><figure data-align="center" data-size="best-fit" data-id="WEXHTrNCnYxnh6inahYXi" data-version="v2" data-type="image"><img data-id="WEXHTrNCnYxnh6inahYXi" src="https://tribe-s3-production.imgix.net/WEXHTrNCnYxnh6inahYXi?auto=compress,format"></figure><h3 class="text-lg" data-toc-id="29bb97de-9b81-4e9a-89b9-7c065b0b1d83" id="29bb97de-9b81-4e9a-89b9-7c065b0b1d83"><strong>3. Choose the source and destination layouts</strong></h3><p><strong>Pick the layout you are moving from and the layout you are moving to.</strong></p><figure data-align="center" data-size="best-fit" data-id="QFy3G87xpnWGG2X5nqZzt" data-version="v2" data-type="image"><img data-id="QFy3G87xpnWGG2X5nqZzt" src="https://tribe-s3-production.imgix.net/QFy3G87xpnWGG2X5nqZzt?auto=compress,format"></figure><p><strong>You will then get a confirmation step to review or change the selection.</strong></p><figure data-align="center" data-size="best-fit" data-id="1wjiKZN4Ogb9oMzppSpCm" data-version="v2" data-type="image"><img data-id="1wjiKZN4Ogb9oMzppSpCm" src="https://tribe-s3-production.imgix.net/1wjiKZN4Ogb9oMzppSpCm?auto=compress,format"></figure><h3 class="text-lg" data-toc-id="c3fa6e63-445d-4ff4-8434-a967ab8a62d3" id="c3fa6e63-445d-4ff4-8434-a967ab8a62d3"><strong>4. Choose merge behavior for matches</strong></h3><p><strong>If an incoming source asset appears to match an existing destination asset, you can choose how the tool should behave.</strong></p><figure data-align="center" data-size="best-fit" data-id="wnVP9hYRUlPoGGeeNnK3j" data-version="v2" data-type="image"><img data-id="wnVP9hYRUlPoGGeeNnK3j" src="https://tribe-s3-production.imgix.net/wnVP9hYRUlPoGGeeNnK3j?auto=compress,format"></figure><p><strong>You can also optionally rename the source layout after the transfer is complete.</strong></p><figure data-align="center" data-size="best-fit" data-id="nMlrXSR145JKu8sNeFbEW" data-version="v2" data-type="image"><img data-id="nMlrXSR145JKu8sNeFbEW" src="https://tribe-s3-production.imgix.net/nMlrXSR145JKu8sNeFbEW?auto=compress,format"></figure><h3 class="text-lg" data-toc-id="07a15239-c55f-46f6-9f88-b14e51089e28" id="07a15239-c55f-46f6-9f88-b14e51089e28"><strong>5. Decide whether to archive the original source assets</strong></h3><p><strong>This is usually recommended once you are confident the transfer plan is correct.</strong></p><figure data-align="center" data-size="best-fit" data-id="6TEMafRZtcLgvmWPNuD7N" data-version="v2" data-type="image"><img data-id="6TEMafRZtcLgvmWPNuD7N" src="https://tribe-s3-production.imgix.net/6TEMafRZtcLgvmWPNuD7N?auto=compress,format"></figure><h3 class="text-lg" data-toc-id="992fa023-558f-432f-b910-983c4d57c8cb" id="992fa023-558f-432f-b910-983c4d57c8cb"><strong>6. Review field mappings</strong></h3><p><strong>If the source and destination layouts already line up closely, the tool may offer a direct transfer path.</strong></p><figure data-align="center" data-size="best-fit" data-id="C1lLT304j3hnAXFsCwpoy" data-version="v2" data-type="image"><img data-id="C1lLT304j3hnAXFsCwpoy" src="https://tribe-s3-production.imgix.net/C1lLT304j3hnAXFsCwpoy?auto=compress,format"></figure><p><strong>Otherwise, you will work through the field mapping wizard one destination field at a time.</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="f814719d-bc43-4313-ad08-a909e6b91233" id="f814719d-bc43-4313-ad08-a909e6b91233"><strong>Merge Modes</strong></h2><p><strong>When a source asset appears to match a destination asset, choose one of these behaviors:</strong></p><p><strong>- Merge-FillBlanks: destination wins; source only fills missing values</strong></p><p><strong>- Merge-PreferSource: source wins; destination acts as fallback</strong></p><p><strong>- Merge-Concat: keeps both values for text-like fields and chooses a winner for non-text fields</strong></p><p><strong>- Skip: do not transfer the source asset if a match is found</strong></p><p><strong>Use Merge-Concat when you want to preserve both sets of notes or descriptive text. Use Merge-FillBlanks when the destination is already your source of truth.</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="074e78c7-5e47-44fa-863b-d434adce07d2" id="074e78c7-5e47-44fa-863b-d434adce07d2"><strong>Field Mapping Workflow</strong></h2><p><strong>Each destination field is reviewed in the GUI. For every field, choose one mapping mode:</strong></p><p><strong>- Source Field: map from one source field</strong></p><p><strong>- Constant Value: always write the same literal value</strong></p><p><strong>- SMOOSH: combine multiple source fields into one destination field</strong></p><p><strong>- Skip: leave the destination field unmapped</strong></p><p><strong>The mapping editor also shows a live snapshot of:</strong></p><p><strong>- Configured destination fields</strong></p><p><strong>- Pending destination fields</strong></p><p><strong>- Skipped destination fields</strong></p><p><strong>- Mapped source fields</strong></p><p><strong>- Unmapped source fields</strong></p><p></p><p><strong>Use </strong><code>Back</code><strong> and </strong><code>Next</code><strong> to move through the review loop. </strong><code>Back</code><strong> discards any in-progress edits for the current field unless that field was already saved earlier.</strong></p><hr><p></p><h3 class="text-lg" data-toc-id="70721efe-9d6b-4bfb-a00e-4a32889712d0" id="70721efe-9d6b-4bfb-a00e-4a32889712d0"><strong>Standard Source Mapping</strong></h3><p><strong>This is the most common path: pick a source field and optionally enable Strip HTML.</strong></p><figure data-align="center" data-size="best-fit" data-id="9mvHAjcM5SAuvpAhYLIfb" data-version="v2" data-type="image"><img data-id="9mvHAjcM5SAuvpAhYLIfb" src="https://tribe-s3-production.imgix.net/9mvHAjcM5SAuvpAhYLIfb?auto=compress,format"></figure><p><strong>Use Strip HTML when moving from rich text or embed-like source fields into plain text destination fields.</strong></p><hr><p></p><h3 class="text-lg" data-toc-id="a6650e68-d226-40bf-a75b-3fb735283eb9" id="a6650e68-d226-40bf-a75b-3fb735283eb9"><strong>Constant Mapping</strong></h3><p><strong>Use this when a destination field should always receive the same value.</strong></p><figure data-align="center" data-size="best-fit" data-id="omPOPyoxrAi3GFTG56KtU" data-version="v2" data-type="image"><img data-id="omPOPyoxrAi3GFTG56KtU" src="https://tribe-s3-production.imgix.net/omPOPyoxrAi3GFTG56KtU?auto=compress,format"></figure><p><strong>This is especially useful for required destination fields that have no good source equivalent.</strong></p><hr><h3 class="text-lg" data-toc-id="b1d05b09-a3ce-488c-9620-e37d2760ecbc" id="b1d05b09-a3ce-488c-9620-e37d2760ecbc"><br><strong>ListSelect Mapping</strong></h3><p><strong>For </strong><code>ListSelect</code><strong> destination fields, choose a source field and define which source values should map to which destination list items.</strong></p><figure data-align="center" data-size="best-fit" data-id="OydnBHKLmZrcp6Z2yeQ9R" data-version="v2" data-type="image"><img data-id="OydnBHKLmZrcp6Z2yeQ9R" src="https://tribe-s3-production.imgix.net/OydnBHKLmZrcp6Z2yeQ9R?auto=compress,format"></figure><p><strong>This is helpful when the source data is inconsistent and needs to be normalized into one controlled list.</strong></p><p><strong>Example:</strong></p><p>- Source values like floor, ground, or dirt can map to destination option ground stuff</p><p>- Source values like sunny or sunshine can map to solar stuff</p><p>Matching is case-insensitive and uses first-match-wins behavior.</p><p>If the destination list may be missing values, enabling Add missing list items is usually the right choice.</p><hr><p></p><h3 class="text-lg" data-toc-id="c5681aaf-b023-481e-894a-657ea59357ac" id="c5681aaf-b023-481e-894a-657ea59357ac"><strong>AddressData Mapping</strong></h3><p><code>AddressData</code><strong> fields can be mapped by parts:</strong></p><p><strong>- </strong><code>address_line_1</code></p><p><strong>- </strong><code>address_line_2</code></p><p><strong>- </strong><code>city</code></p><p><strong>- </strong><code>state</code></p><p><strong>- </strong><code>zip</code></p><p><strong>- </strong><code>country_name</code></p><p><strong>The tool builds the destination address object only when at least one address component is present.</strong></p><hr><p></p><h3 class="text-lg" data-toc-id="2b50c143-a624-422a-837a-ba973944ee62" id="2b50c143-a624-422a-837a-ba973944ee62"><strong>SMOOSH Mapping</strong></h3><p>SMOOSH lets you combine multiple source fields into one destination field. It is usually most useful for RichText, Heading, or other notes-style destinations.</p><figure data-align="center" data-size="best-fit" data-id="nVKcJMYkxa51asIxu5MFa" data-version="v2" data-type="image"><img data-id="nVKcJMYkxa51asIxu5MFa" src="https://tribe-s3-production.imgix.net/nVKcJMYkxa51asIxu5MFa?auto=compress,format"></figure><p><strong>Example rich text output:</strong></p><pre><code>Serial Number:
9JD2NLAL4
Notes:
This is a good computer (link)</code></pre><p><strong>Example plain text output:</strong></p><pre><code>9JD2NLAL4; This is a good computer; John 
https://huduurl.huducloud.com/a/computerslug</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="8acc55d1-5f7e-48ca-b2c5-5a30b05f7bf8" id="8acc55d1-5f7e-48ca-b2c5-5a30b05f7bf8"><strong>Per-Job Settings</strong></h2><p><strong>After field mapping, the tool asks a few follow-up questions depending on how your plan is configured.</strong></p><p></p><p><code>$includeblanksduringsmoosh</code> (default - $false) -</p><p>Includes empty values when building SMOOSH output.</p><p><code>$includeLabelInSmooshedValues</code> (default - $true)-</p><p>Prepends the source field label before each SMOOSHed value.</p><p><code>$excludeHTMLinSMOOSH</code> (default - $false)-</p><p>Strips HTML and flattens SMOOSH output into cleaner plain text.</p><p><code>$includeRelationsForArchived</code> (default - $true)</p><p>Preserves relations even when the related object is archived.</p><hr><p></p><h2 class="text-xl" data-toc-id="1bbe5e6c-0906-4ece-91fc-720e2db3fffb" id="1bbe5e6c-0906-4ece-91fc-720e2db3fffb"><strong>How Matching Works</strong></h2><p><strong>Before creating a destination asset, the tool checks whether a likely match already exists.</strong></p><p><strong>A source asset is treated as a likely match when:</strong></p><p><strong>- It belongs to the same company as a destination asset, and</strong></p><p><strong>- The names are the same, or the destination name starts with or ends with the source name</strong></p><p><strong>Very short names are intentionally not matched too aggressively.</strong></p><p><strong>This matching logic helps prevent accidental duplicates while still allowing flexible merge behavior.</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="eb0dcf3e-4199-4440-89f8-05f73e6f3b50" id="eb0dcf3e-4199-4440-89f8-05f73e6f3b50"><strong>Review, Outputs, and Logs</strong></h2><p><strong>Before the transfer runs, the tool shows a final summary of the mapping plan, including:</strong></p><p><strong>- Direct mappings</strong></p><p><strong>- Constants</strong></p><p><strong>- SMOOSH target and source count</strong></p><p><strong>- Skipped fields</strong></p><p><strong>- Merge behavior</strong></p><p><strong>- Archive preference</strong></p><p><strong>After the transfer, the tool writes a timestamped JSON results file such as:</strong></p><p>- <code>transferresults_YYYYMMDD_HHMMSS.json</code></p><p><strong>The console output also includes field-level and relation-level progress messages to help with troubleshooting.</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="99ae7538-cfb4-4ffd-b912-abf598cb1591" id="99ae7538-cfb4-4ffd-b912-abf598cb1591"><strong>Troubleshooting Tips</strong></h2><h3 class="text-lg" data-toc-id="c3189f25-6ddd-47bb-ac20-b2b828dd3977" id="c3189f25-6ddd-47bb-ac20-b2b828dd3977">Plain text fields showing HTML</h3><p>Enable Strip HTML on the specific field mapping, especially when the source field is RichText, Heading, or Embed-like content.</p><h3 class="text-lg" data-toc-id="4b0df898-7ebb-4f66-80d1-ec27e0727a84" id="4b0df898-7ebb-4f66-80d1-ec27e0727a84">ListSelect values not landing where expected</h3><p>Double-check the whenvalues mapping and remember that matching is case-insensitive and uses the first matching destination option.</p><h3 class="text-lg" data-toc-id="ae7e0475-9ca5-4e52-8b6b-c092b435f1a0" id="ae7e0475-9ca5-4e52-8b6b-c092b435f1a0">Email fields look messy</h3><p>Make sure the destination field is typed or labeled as an email field so the email cleanup logic can normalize the value correctly.</p><h3 class="text-lg" data-toc-id="7f70623c-f0dd-4e25-b76d-d45cb065e974" id="7f70623c-f0dd-4e25-b76d-d45cb065e974">Address casing looks odd</h3><p>The helper logic normalizes common US state names and country variants such as US, USA, and United States.</p><hr><p></p><h2 class="text-xl" data-toc-id="c37c5bdc-458e-4a42-b39f-264c14b3274b" id="c37c5bdc-458e-4a42-b39f-264c14b3274b"><strong>Tips</strong></h2><p>- Prefer matching destination field types when possible</p><p>- Use constants to satisfy required destination fields that have no good source value</p><p>- Use SMOOSH for notes-style destinations rather than trying to cram several inputs into a single normal field</p><p>- For plain text destinations, consider both Strip HTML and excludeHTMLinSMOOSH=$true</p><p>- Start with a small test layout or a small company subset before running a large migration</p><p><strong>---</strong></p><h2 class="text-xl" data-toc-id="30f68e15-70bb-4b27-8831-588ce351f009" id="30f68e15-70bb-4b27-8831-588ce351f009"><strong>Changelog</strong></h2><p>- v0.3 - Initial public draft of the layout-switching documentation, November 19, 2025</p><p>- v0.5 - Added merge-on-match options, February 23, 2026</p><p>- v0.6 - Added constant fallback values and combined relation handling on match, March 3, 2026</p><p>- v0.8 - Added password, photo, public photo, and upload reattribution, March 4, 2026</p><p>- v1.0 - Finalized GUI, added forward,back buttons, and field indicator panel.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Self-Hosters: Consider Migrating your old AssetTags to the new AssetTag format-Here's How:]]></title>
            <description><![CDATA[HEY THERE, SELF-HOSTERS, DIY FANATICS, AND FELLOW LINUX PENGUINS-

I wanted to post a guide for our self-hosters for migrating from the old AssetTag format-
While many of you have likely already made the...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/self-hosters--consider-migrating-your-old-assettags-to-the-new-assettag-Q4wyr6yWjJpARlS</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/self-hosters--consider-migrating-your-old-assettags-to-the-new-assettag-Q4wyr6yWjJpARlS</guid>
            <category><![CDATA[Asset Tags]]></category>
            <category><![CDATA[Linux]]></category>
            <category><![CDATA[Main App]]></category>
            <category><![CDATA[maintenance]]></category>
            <category><![CDATA[Migrations]]></category>
            <category><![CDATA[Rake]]></category>
            <category><![CDATA[Self-hosted]]></category>
            <dc:creator><![CDATA[Mason Stelter]]></dc:creator>
            <pubDate>Wed, 01 Apr 2026 18:32:34 GMT</pubDate>
            <content:encoded><![CDATA[<h2 id="2c6dd3cb-74db-40ff-8a14-7b2823b518d2" data-toc-id="2c6dd3cb-74db-40ff-8a14-7b2823b518d2" class="text-xl">Hey there, self-hosters, DIY fanatics, and fellow linux penguins-</h2><p>I wanted to post a guide for our self-hosters for migrating from the old AssetTag format-<br>While many of you have <em>likely already made the switch</em>, there's likely a few that haven't yet. Thankfully, doing this is <strong>super-easy</strong>.</p><p><u>it is always a good idea to kick off a backup first</u><br><br>First, you'll need to access your container host, which is most likely a linux host. It doesn't matter whether you access a headless box via ssh or a fancy desktop environment. <br><br>You'll just need to start a new terminal session <em>(with a user in the docker group or root)</em>, and run the below command to start the process-</p><pre class="language-bash"><code class="language-bash">docker exec -it -u 0 $(docker ps --filter "name=app" --format "{{.ID}}") bin/rake convert_asset_tags:to_new_format</code></pre><p><br>If you're nervous or have a large instance, you can tee the output to a file for later review with the below one-liner. This just results in everything being logged to a file named something like- <code>tags_result_1775068117.txt</code></p><pre class="language-bash"><code class="language-bash">docker exec -it -u 0 $(docker ps --filter "name=app" --format "{{.ID}}") bin/rake convert_asset_tags:to_new_format 2&gt;&amp;1 | tee "tags_result_$(date +%s).txt"</code></pre><p><br>You'll see a stream of text while this is working through the process. It's quite fast, but you'll see exactly how many fields have been converted to the new AssetTag format <em>(and how many already were in this format)</em></p><figure data-type="image" data-version="v2" data-id="CAjWVlnoSXdo5pNrlQMsB" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/CAjWVlnoSXdo5pNrlQMsB?auto=compress,format" data-id="CAjWVlnoSXdo5pNrlQMsB"></figure><p><br>It's always good to have the latest + greatest! Let us know if you have any questions!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Central Hudu Audit Report]]></title>
            <description><![CDATA[HUDU CENTRAL AUDIT REPORT SCRIPT INSTRUCTIONS

See link in Community Repo [https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Administration/Auditing-Items]

=========================================================

WHAT THIS SCRIPT DOES

---------------------

The script signs in to ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/central-hudu-audit-report-gW3GSbJ2VU4TjeU</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/central-hudu-audit-report-gW3GSbJ2VU4TjeU</guid>
            <category><![CDATA[API]]></category>
            <category><![CDATA[KB]]></category>
            <category><![CDATA[Main App]]></category>
            <dc:creator><![CDATA[David Kniskern]]></dc:creator>
            <pubDate>Tue, 24 Mar 2026 19:49:29 GMT</pubDate>
            <content:encoded><![CDATA[<p>HUDU CENTRAL AUDIT REPORT SCRIPT INSTRUCTIONS</p><p><a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Administration/Auditing-Items">See link in Community Repo</a><br><br>=========================================================</p><p>WHAT THIS SCRIPT DOES</p><p>---------------------</p><p>The script signs in to Microsoft Azure, reads your Hudu API key and Hudu site URL from Azure Key Vault, calls the Hudu API, and builds one Central Knowledge Base article with inventory counts. Each run refreshes that article's HTML content.</p><p></p><p>The KB article includes:</p><p>- Executive Global Summary: fixed list of resource types (companies, assets, layouts, KB articles, passwords, expirations, folders, password folders, procedures, networks, websites, IP addresses, rack storages/items, VLANs, VLAN zones) with Active / Archived / Total where the API supports it.</p><p>- Per-company totals and a full Company Resource Breakdown (every company, every listed resource type, zeros included), plus per-company archived sum and grand total rows.</p><p>- Asset detail sections (by layout globally, by company, by layout per company).</p><p>- Data Retrieval Errors: any API/list failures and notes (for example duplicate KB article titles).</p><p>- Article selection: the script looks up the KB article whose title exactly matches $CentralReportArticleName (default "Central Audit Report"). If found, it updates that article. If several articles share the title, it updates the one with the latest updated_at timestamp (tie-break: higher article id) and records a warning in Data Retrieval Errors listing the other ids. If not found, it creates a new article with that title.</p><p>- Documentation, that lives in the comment block at the top of: hudu_central_audit_<a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://report.ps">report.ps</a>1</p><p></p><p></p><p>REQUIREMENTS (READ CAREFULLY PLEASE)</p><p>-----------------------------</p><p>1) PowerShell 7 or newer is required. Do not use Windows PowerShell 5.1 for this script. The script file includes #Requires -Version 7.0 so it will refuse to run on 5.1.</p><p>2) Run PowerShell 7 "As Administrator" for the session where you will execute the script. Some environments need this for module installs or policy; use an elevated window for consistency.</p><p>3) Entra ID + Azure Key Vault secrets. This script does not embed your Hudu API key or URL in plain text. You sign in with the Azure Az PowerShell modules; the script then calls Get-AzKeyVaultSecret.</p><p>Note: "Entra ID" (Azure AD) is only how your admin may sign you into Azure. The script itself reads named secrets from a Key Vault. In Entra you can create secrets under: Azure Portal(Entra ID) → Key vaults → your vault → Objects → Secrets.</p><p>4) Your Azure account (or the account you use with Connect-AzAccount) needs at least Get and List on the secrets used for Hudu URL and Hudu API key. The script does not write any Key Vault secrets for the report.</p><p></p><p></p><p></p><p>CONFIGURATION YOU MUST EDIT (IN THE SCRIPT)</p><p>--------------------------------------------</p><p>Open hudu_central_audit_<a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://report.ps">report.ps</a>1 and find the section:</p><p>CONFIGURATION - EDIT THESE VALUES</p><p>Set these to match your Key Vault and secret names:</p><p>$AzVault_Name = "your-key-vault-name"</p><p>$AzVault_HuduApiKeySecretName = "AUDITAPI"</p><p>(Secret value = your Hudu x-api-key. ~ You can get this in your Hudu instance as a Super-Admin from Admin &gt; API Key.)</p><p>$AzVault_HuduBaseDomainSecretName = "AUDITURL"</p><p>(Secret value = your Hudu base URL or hostname. Examples that all work after normalization: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://hudu.com">hudu.com</a> | <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://hudu.com">https://hudu.com</a> | <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://hudu.com/">https://hudu.com/</a> )</p><p>$CentralReportArticleName = "Central Audit Report"</p><p>(Exact KB article title the script creates or updates. Must match the article name you want in Hudu.)</p><p>-ReportDetailLevel</p><p>Controls how much data the script includes in the KB article.</p><p>You can choose from:</p><p>Executive (default)</p><p>Includes global summary and data retrieval errors only.</p><p>Smallest payload. Use if the KB article fails to render (500 error) due to size.</p><p>Full</p><p>Includes all tables: global summary, company totals, company resource breakdown, assets by layout, assets by company, assets by layout per company.</p><p>Best for complete auditing. May hit Hudu HTML size limits on very large instances (500+ companies).</p><p>Compact</p><p>Includes global summary, company grand totals, assets by layout (global), and assets by company.</p><p>Skips heavy per-company breakdown tables. Good balance of detail and size.</p><p>Example usage: -ReportDetailLevel Compact</p><p>Full audit example: -ReportDetailLevel Full</p><p></p><p></p><p>CREATING KEY VAULT SECRETS (ENTRA ID STEPS)</p><p>------------------------------------------</p><p>1) Azure Portal → Key vaults → select your vault.</p><p>2) Objects → Secrets → Generate/Import.</p><p>3) Name: use the same name as in the script (e.g. AUDITAPI, AUDITURL).</p><p>4) Secret value: paste the Hudu API key or URL/domain as appropriate.</p><p>5) Save.</p><p></p><p></p><p>DUPLICATE KB ARTICLE TITLES</p><p>----------------------------</p><p>Avoid duplicate titles. If more than one article uses $CentralReportArticleName, the script updates the most recently updated article (see Article selection above) and logs a warning with the other article ids. Consolidate or rename duplicates in Hudu so only one central report article remains.</p><p></p><p></p><p>OPTIONAL SWITCHES</p><p>-----------------</p><p>-DryRun</p><p>Connects and gathers data but does not POST or PUT the KB article. Prints what it would do.</p><p></p><p>-VerifyEndpoints</p><p>After validating Hudu credentials, calls each API path the report uses and prints row counts. Does not update the KB article. Use this to confirm API access and pagination behavior.</p><p></p><p>-ReportDetailLevel</p><p>Controls how much data the script includes in the KB article. Choose from:</p><p></p><p>Executive (default):</p><ol><li><p>Smallest payload. Use if the KB article fails to render (500 error) due to size.</p></li><li><p>Includes global summary and data retrieval errors only.</p></li></ol><p></p><p></p><p>Full:</p><ol><li><p>Includes all tables: global summary, company totals, company resource breakdown, assets by layout, assets by company, assets by layout per company.</p></li><li><p>Best for complete auditing. May hit Hudu HTML size limits on very large instances (500+ companies).</p></li></ol><p></p><p></p><p>Compact:</p><ol><li><p>Includes global summary, company grand totals, assets by layout (global), and assets by company.</p></li><li><p>Skips heavy per-company breakdown tables. Good balance of detail and size.</p></li></ol><p></p><p>Examples -ReportDetailLevel Compact</p><p>Full audit: -ReportDetailLevel Full</p><p></p><p></p><p>NORMAL RUN (UPDATE OR CREATE THE ARTICLE)</p><p>-----------------------------------------</p><p>1) Install PowerShell 7+.</p><p>2) Open PowerShell 7 as Administrator.</p><p>3) Install Az modules if prompted (script may install Az.Accounts and Az.KeyVault for the current user).</p><p>4) Edit the CONFIGURATION section in hudu_central_audit_<a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://report.ps">report.ps</a>1.</p><p>5) Run:</p><p>pwsh -File "C:\path\to\hudu_central_audit_<a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://report.ps">report.ps</a>1"</p><p>For a full (largest) report in one run:</p><p>pwsh -File "C:\path\to\hudu_central_audit_<a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://report.ps">report.ps</a>1" -ReportDetailLevel Full</p><p>(Use your actual path to the script folder.)</p><p>6) Sign in to Azure if Connect-AzAccount appears.</p><p>7) Wait for "Updated central KB article" or "Created central KB article" action in Hudu.</p><p></p><p></p><p>EDGE CASES AND TROUBLESHOOTING</p><p>------------------------------</p><p>- Empty or wrong AUDITURL: fix the secret value; the script normalizes scheme and trailing slashes but must end with a resolvable host.</p><p>- Empty AUDITAPI: validation fails with a clear error.</p><p>- Access denied on Key Vault: grant your identity Secret Get and List on the vault (or on those secrets via RBAC).</p><p>- "Endpoint verification" failures: run with -VerifyEndpoints and read which path failed; often, pagination or permissions on a specific resource type.</p><p>- If you rename the central article in Hudu but not in the script, the script will create a new article using $CentralReportArticleName.</p><p>- If the KB article fails to render (500 error) on very large instances, try -ReportDetailLevel Compact or Executive to reduce payload size. Try increasing your rate limit if you run into this issue. Additional resources may be required if the API rate limit change does not address your issues.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Want a way to migrate your data from IT Glue easily?]]></title>
            <description><![CDATA[Migrating from IT Glue is the biggest new-customer request we get. We have amazing scripts that handle this, so we thought: how about an easy-to-run tool?!

Here's what it looks like:


You can find the ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/want-a-way-to-migrate-your-data-from-it-glue-easily-0QRJEB7Ldk3abPY</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/want-a-way-to-migrate-your-data-from-it-glue-easily-0QRJEB7Ldk3abPY</guid>
            <category><![CDATA[mirgation]]></category>
            <category><![CDATA[Powershell]]></category>
            <dc:creator><![CDATA[Cameron Granger]]></dc:creator>
            <pubDate>Tue, 24 Mar 2026 02:34:15 GMT</pubDate>
            <content:encoded><![CDATA[<p>Migrating from IT Glue is the biggest new-customer request we get. We have amazing scripts that handle this, so we thought: how about an easy-to-run tool?! <br><br>Here's what it looks like:</p><figure data-align="center" data-size="original" data-id="H83uf1uxHZ2OZnqzbyMXl" data-version="v2" data-type="image"><img data-id="H83uf1uxHZ2OZnqzbyMXl" src="https://tribe-s3-production.imgix.net/H83uf1uxHZ2OZnqzbyMXl?auto=compress,format"></figure><figure data-align="center" data-size="original" data-id="u8AsTcss0nzSAjYT5tXzc" data-version="v2" data-type="image"><img data-id="u8AsTcss0nzSAjYT5tXzc" src="https://tribe-s3-production.imgix.net/u8AsTcss0nzSAjYT5tXzc?auto=compress,format"></figure><p><br>You can find the latest copy of the executable (Windows 10+ | x86_64 only) in our main GitHub repository here: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://github.com/Hudu-Technologies-Inc/ITGlue-Hudu-Migration">ITGlue-Hudu-Migration</a> (file calledITGlue-Hudu-Migration-GUI.exe)</p><p>Or directly download the executable: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://github.com/Hudu-Technologies-Inc/ITGlue-Hudu-Migration/raw/refs/heads/main/ITGlue-Hudu-Migration-GUI.exe">https://github.com/Hudu-Technologies-Inc/ITGlue-Hudu-Migration/raw/refs/heads/main/ITGlue-Hudu-Migration-GUI.exe</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hudu n8n node v1.9.2 released - improved ai tools]]></title>
            <description><![CDATA[Max Soukhomlinov has just released version 1.9.2 of the Hudu n8n community node - and this one’s a big upgrade for AI workflows.


WHAT'S NEW:

You can now add the Hudu node directly as a tool inside your ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/hudu-n8n-node-v1-9-2-released---improved-ai-tools-ZTtS9aTdQokaD7T</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/hudu-n8n-node-v1-9-2-released---improved-ai-tools-ZTtS9aTdQokaD7T</guid>
            <category><![CDATA[n8n]]></category>
            <dc:creator><![CDATA[Cameron Granger]]></dc:creator>
            <pubDate>Tue, 03 Mar 2026 21:02:57 GMT</pubDate>
            <content:encoded><![CDATA[<p>Max Soukhomlinov has just released <strong>version 1.9.2</strong> of the Hudu n8n community node - and this one’s a big upgrade for AI workflows.</p><figure data-align="center" data-size="best-fit" data-id="9Frn77TukPNpNx5ER1iiw" data-version="v2" data-type="image"><img data-id="9Frn77TukPNpNx5ER1iiw" src="https://tribe-s3-production.imgix.net/9Frn77TukPNpNx5ER1iiw?auto=compress,format"></figure><h2 class="text-xl" data-toc-id="94093ec7-0aa1-415d-9f92-6c9b621eaa04" id="94093ec7-0aa1-415d-9f92-6c9b621eaa04">What's new:</h2><p>You can now add the Hudu node directly as a tool inside your n8n workflows.</p><p>Just:</p><ul><li><p>Specify the target entity</p></li><li><p>Define the allowed operations</p></li></ul><p>Everything else is handled by the node.</p><p>You can install n8n-nodes-hudu here: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://www.npmjs.com/package/n8n-nodes-hudu"><u>https://www.npmjs.com/package/n8n-nodes-hudu</u></a></p><p>For more information, <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://www.reddit.com/r/hudu/comments/1rg5971/hudu_n8n_node_v192_released_improved_ai_tools/?share_id=eDMLEfjg-9EiVFvGLwykY&amp;utm_content=2&amp;utm_medium=ios_app&amp;utm_name=ioscss&amp;utm_source=share&amp;utm_term=1">see this Reddit Post!</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Activity Log Drilldown Helper]]></title>
            <description><![CDATA[Interactive Filter + Human‑Readable Formatter

This script is a small activity log explorer for Hudu.

Instead of writing individual Where-Object filters every time you want to answer questions like:

 * “Show...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/activity-log-drilldown-helper-XGgdBQNbR2pmQNp</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/activity-log-drilldown-helper-XGgdBQNbR2pmQNp</guid>
            <category><![CDATA[Powershell]]></category>
            <dc:creator><![CDATA[Mason Stelter]]></dc:creator>
            <pubDate>Thu, 29 Jan 2026 23:03:13 GMT</pubDate>
            <content:encoded><![CDATA[<p><em>Interactive Filter + Human‑Readable Formatter</em></p><p>This script is a small <strong>activity log explorer</strong> for <strong>Hudu</strong>.</p><p>Instead of writing individual <code>Where-Object</code> filters every time you want to answer questions like:</p><ul><li><p><em>“Show me everything where </em><code>record_type</code><em> is Article”</em></p></li><li><p><em>“Which user did update actions?”</em></p></li><li><p><em>“What activity happened from this IP?”</em></p></li><li><p><em>“What details were included in those events?”</em></p></li></ul><p>…it pulls a sample of activity logs, lets you <strong>pick an attribute</strong>, then <strong>pick a value</strong>, and prints the matching logs back out in a readable, <strong>story‑like format</strong>.</p><hr><h2 class="text-xl" data-toc-id="cb0c2f17-f923-4fb0-a700-55e4e1f95957" id="cb0c2f17-f923-4fb0-a700-55e4e1f95957"><strong>Why This Exists</strong></h2><p>Hudu activity logs are powerful — but digging through them manually gets old fast.</p><p>This helper turns raw activity data into an <strong>interactive, explorable audit tool</strong> that’s fast, readable, and human‑friendly.</p><figure data-align="center" data-size="best-fit" data-id="1TSJCHw1tbe4yphyNOpRZ" data-version="v2" data-type="image"><img data-id="1TSJCHw1tbe4yphyNOpRZ" src="https://tribe-s3-production.imgix.net/1TSJCHw1tbe4yphyNOpRZ?auto=compress,format"></figure><hr><h2 class="text-xl" data-toc-id="47700047-66b0-4395-8b32-dd7e0801a2d5" id="47700047-66b0-4395-8b32-dd7e0801a2d5"><strong>How to Run</strong></h2><p><strong>Open a new pwsh7 session on your windows device and perform one of the following:</strong><br><br><strong>the Oneliner [Ninja-Style]</strong></p><pre><code>irm 'https://raw.githubusercontent.com/Hudu-Technologies-Inc/Community-Scripts/refs/heads/main/Administration/Auditing-Activity-Logs/Audit-ActivityLogs.ps1' | iex</code></pre><p><strong>Clone+Start [Samurai-Style] </strong><em>(requires git scm installed)</em></p><pre><code>git clone https://github.com/Hudu-Technologies-Inc/Community-Scripts; cd .\Community-Scripts\Administration\Auditing-Activity-Logs; . .\Audit-ActivityLogs.ps1;</code></pre><p><strong>Download-Extract-Run [Ashigaru-Warrior-Style]</strong></p><pre><code>Invoke-WebRequest https://codeload.github.com/Hudu-Technologies-Inc/Community-Scripts/zip/refs/heads/main -OutFile Community-Scripts.zip; Expand-Archive -Path .\Community-Scripts.zip; cd .\Community-Scripts\Community-Scripts-main\Administration\Auditing-Activity-Logs; . .\Audit-ActivityLogs.ps1;</code></pre><p><br>After submitting required infos, You’ll see:</p><ol><li><p>A numbered list of <strong>attributes</strong> → pick one</p></li><li><p>A numbered list of <strong>values</strong> → pick one</p></li><li><p>Matching activity entries printed in <strong>green</strong></p></li></ol><hr><h2 class="text-xl" data-toc-id="7c1002d7-3f9b-4b5d-97a8-f1f61cbab3f9" id="7c1002d7-3f9b-4b5d-97a8-f1f61cbab3f9"><strong>Common Use Cases</strong></h2><ul><li><p><strong>Audit a single action type</strong><br><em>“Show me all delete actions”</em></p></li><li><p><strong>Track changes to a specific record type</strong><br><em>“Only Passwords activity”</em></p></li><li><p><strong>Investigate suspicious behavior</strong><br><em>“Everything from IP x.x.x.x”</em></p></li><li><p><strong>User troubleshooting</strong><br><em>“What did this user do around that time?”</em></p></li><li><p><strong>Client / company review</strong><br><em>“What activity happened under company X?”</em></p></li></ul><hr><h2 class="text-xl" data-toc-id="a332a1f2-155f-4bc1-aa32-92446f8163f9" id="a332a1f2-155f-4bc1-aa32-92446f8163f9"><strong>How It Works</strong></h2><h3 class="text-lg" data-toc-id="92c69147-0d97-4117-b757-338f0b6b1092" id="92c69147-0d97-4117-b757-338f0b6b1092"><strong>1. Pulls Activity Logs</strong></h3><p>You start with a set of activity log records<br>(whatever <code>Get-HuduActivityLogs</code> returns in your environment).</p><hr><h3 class="text-lg" data-toc-id="d9fb6f74-67a7-4b41-82dc-657d92894e81" id="d9fb6f74-67a7-4b41-82dc-657d92894e81"><strong>2. Builds Drilldown Attributes + Values</strong></h3><p>The script scans <strong>all properties</strong> present across the returned objects and builds a lookup table like:</p><ul><li><p><code>action</code> → <code>{ create, update, delete, … }</code></p></li><li><p><code>record_type</code> → <code>{ Article, Asset, Password, … }</code></p></li><li><p><code>user_name</code> → <code>{ Mason, Cameron, … }</code></p></li><li><p><code>company_name</code> → <code>{ Acme Inc, Contoso, … }</code></p></li><li><p><code>ip_address</code> → <code>{ 10.0.0.5, 203.0.113.42, … }</code></p></li></ul><p>This lets you <strong>browse the dataset</strong> without memorizing field names.</p><hr><h3 class="text-lg" data-toc-id="8bc91b0d-487d-47ee-8456-863239e386a4" id="8bc91b0d-487d-47ee-8456-863239e386a4"><strong>3. Interactive Selection</strong></h3><p>You are prompted to choose:</p><ol><li><p><strong>An attribute</strong> to filter by</p></li><li><p><strong>A value</strong> for that attribute</p></li></ol><p>No manual filtering required.</p><hr><h3 class="text-lg" data-toc-id="70c56f07-e6a2-4536-a5dc-98b185add551" id="70c56f07-e6a2-4536-a5dc-98b185add551"><strong>4. Human‑Readable Output</strong></h3><p>For each matching activity log entry, the script prints a friendly summary including:</p><ul><li><p><strong>Who</strong> did it (name → email fallback logic)</p></li><li><p><strong>What</strong> action occurred</p></li><li><p><strong>Which record</strong> (type + name)</p></li><li><p><strong>Company context</strong></p></li><li><p><strong>Source</strong> (browser / app + OS)</p></li><li><p><strong>IP address</strong></p></li><li><p><strong>Details</strong> (if present)</p></li><li><p><strong>Timestamp</strong> (<code>formatted_datetime</code>)</p></li></ul><p>The result reads more like an <strong>audit trail</strong> than raw JSON.</p><hr><hr><h2 class="text-xl" data-toc-id="ddb179ac-a646-4d46-b53d-524d8198c803" id="ddb179ac-a646-4d46-b53d-524d8198c803"><strong>Menu Reference</strong></h2><h3 class="text-lg" data-toc-id="e54e2ef4-4861-4f71-87bd-a42fdacfaf4f" id="e54e2ef4-4861-4f71-87bd-a42fdacfaf4f"><strong>Attribute Selection</strong></h3><p>This answers the question:</p><blockquote><p><em>“Which field do you want to filter on?”</em></p></blockquote><p>Common examples:</p><ul><li><p><code>record_type</code> — Article vs Asset vs Password</p></li><li><p><code>action</code> — create / update / delete</p></li><li><p><code>user_email</code> / <code>user_name</code></p></li><li><p><code>company_name</code></p></li><li><p><code>ip_address</code></p></li><li><p><code>app_type</code></p></li></ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flags and Flagtypes - Handling Data Quality, Ownership, and Special Cases, the EZ Way]]></title>
            <description><![CDATA[Flagging items can help identify critical items, high-sensitivity areas, items that need attention, or other conditions that require a second thought.


HERE ARE SOME WAYS YOU CAN EASILY ADD SUCH FLAGS ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/flags-and-flagtypes---handling-data-quality-ownership-and-special-3LsrT2ZmWgyJt1w</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/flags-and-flagtypes---handling-data-quality-ownership-and-special-3LsrT2ZmWgyJt1w</guid>
            <category><![CDATA[Colorful]]></category>
            <category><![CDATA[flag]]></category>
            <category><![CDATA[flagtype]]></category>
            <category><![CDATA[Improving Documentation Quality]]></category>
            <category><![CDATA[Ownership]]></category>
            <category><![CDATA[Special Cases]]></category>
            <dc:creator><![CDATA[Mason Stelter]]></dc:creator>
            <pubDate>Wed, 28 Jan 2026 22:46:56 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Flagging items can help identify critical items, high-sensitivity areas, items that need attention, or other conditions that require a second thought.</strong></p><h3 class="text-lg" data-toc-id="810ec2de-13f6-4d41-89c3-375c947001ba" id="810ec2de-13f6-4d41-89c3-375c947001ba"><strong>Here are some ways you can easily add such flags and apply them to suit your organizations needs-</strong></h3><p><code>Flags</code> and <code>FlagTypes</code> can help tighten focus around items in Hudu that need special care, more attention, review or revision. Being a powerful feature set for organization and notation, it's a good capability to have a handle on as a Hudu user, administrator or power-user.<br></p><figure data-align="center" data-size="best-fit" data-id="cfmbp2CpVT6VQ6EM0a04W" data-version="v2" data-type="image"><img data-id="cfmbp2CpVT6VQ6EM0a04W" src="https://tribe-s3-production.imgix.net/cfmbp2CpVT6VQ6EM0a04W?auto=compress,format"></figure><h3 class="text-lg" data-toc-id="55426191-d3a3-48a3-a2b2-f879117f0c03" id="55426191-d3a3-48a3-a2b2-f879117f0c03"><strong>Notes on FlagTypes</strong></h3><p><code>FlagTypes</code> can be applied to a <strong>variety of objects</strong> in Hudu</p><ul><li><p>Articles</p></li><li><p>Networks</p></li><li><p>Ip Addresses</p></li><li><p>VLAN Zones</p></li><li><p>Assets</p></li><li><p>Companies</p></li><li><p>Procedures</p></li><li><p>Rack Storages</p></li><li><p>Passwords</p></li></ul><p>While these are general categories that something might fit in, how you use them is up to you.</p><p><strong>The best part? You can pick from a variety of colors to represent any of your </strong><code>FlagTypes</code></p><p>You might have a <code>FlagType</code> named 'Needs Attention' or 'Under Review' for <strong>quality assurance purposes</strong> with the color Orange</p><p>You might have a <code>FlagType</code> named 'Handle With Care' or 'Special Case' for <strong>special cases or edge cases</strong> with the color Pink</p><p>You might have a <code>FlagType</code> named 'Mason' or 'Cameron' <strong>to define ownership of article or object</strong> with the color Green</p><p>You might have a <code>FlagType</code> named 'Invoices' or 'Cash on Delivery' <strong>to define characteristics of a company</strong> with the color Purple</p><p>You might have a <code>FlagType</code> named 'Deprecated' or 'EOL' <strong>to flag objects that aren't going to be in use much longer</strong> with the color Blue</p><p>You might have a <code>FlagType</code> named 'In-Service', 'Checked-Out' or 'Not-In-Service' <strong>to flag objects that are in a special state</strong> with the color Grey</p><h3 class="text-lg" data-toc-id="6a56c1f7-867f-441b-b870-4ac01bd72b0c" id="6a56c1f7-867f-441b-b870-4ac01bd72b0c"><strong>Notes on Flags</strong></h3><p><code>Flags</code> represent the individual attribution of a <code>flagtype</code> to an object For example, if you have a <code>FlagType</code> named 'Needs Attention' or 'Under Review' for <strong>quality assurance purposes</strong> with the color Orange, you might apply that to 6 <code>passwords</code>, 2 <code>companies</code>, and an <code>asset</code>. This would result in 9 new Flag objects. Flag objects can be revoked or changed at any time and any single object can have one, none, or several distinct/unique <code>flagtypes</code> attributed to them.</p><hr><h2 class="text-xl" data-toc-id="c8ef4963-e14f-41c1-88af-938984844871" id="c8ef4963-e14f-41c1-88af-938984844871"><strong>Firstly, you'll need to load the prerequisite helper functions with this one-liner (using pwsh7+), then you're ready to roll. Start a new pwsh session and run:</strong></h2><pre><code>irm 'https://raw.githubusercontent.com/Hudu-Technologies-Inc/Community-Scripts/refs/heads/main/Administration/Flags-And-Flagtypes/Prerequisites.ps1' | iex</code></pre><p>You can run this command from an existing powershell session start a new one Run-Command Dialog (Start+R / ❖+R) and typing 'pwsh'</p><p>If all the prerequisites are met (updated HuduAPI module and Hudu 2.40.0 or newer), you'll get a nice green message indicating that you're ready to go- If not, you might try with elevated permissions or after upgrading your hudu instance.</p><figure data-align="center" data-size="best-fit" data-id="r3CAxjgg2XcbqVVVSfDQT" data-version="v2" data-type="image"><img data-id="r3CAxjgg2XcbqVVVSfDQT" src="https://tribe-s3-production.imgix.net/r3CAxjgg2XcbqVVVSfDQT?auto=compress,format"></figure><p><em>Let's go through some scenarios.</em> <strong>Of course, you can and are encouraged to modify these scenarios to better suit your needs</strong></p><hr><p></p><h2 class="text-xl" data-toc-id="174617d2-a849-4952-8d4b-c753f80cd0d6" id="174617d2-a849-4952-8d4b-c753f80cd0d6"><strong>Scenario 1: we want to flag all assets that haven't been updated since </strong><code>$flagDate</code></h2><p>First, you'll need to set your <code>$flagDate</code> variable. This can be any date that you think any given <code>asset</code> <strong>should have been updated since</strong>. Most date formats are valid to set here, but to keep the day and month sections from being conflated with one another, the below formats are good. We give preference to international formats here.</p><pre><code>$flagDate = '26 Jan 2026 15:56'
# $flagdate = '26-01-2026 15:56'
# $flagdate = '26/01/2026 15:56'</code></pre><p>with your <code>flagdate</code> variable set, we can compare the dates, assign some flags, and take a closer look at these stale assets as a team-</p><pre><code>$allAssets = Get-HuduAssets | Where-Object {Compare-DateStrings -a $_.updated_at -b $flagDate}
$staleAssetesFlag = Select-OrCreateFlagType -description "Flag all assets not updated since $flagDate"
$allassets | ForEach-Object {New-HuduFlag -flagTypeId $staleAssetesFlag.id -flagableType "asset" -flaggableId $_.id}</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="d7f0791e-fbb6-4def-a3e3-e446f1402c8e" id="d7f0791e-fbb6-4def-a3e3-e446f1402c8e"><strong>Scenario 2: we want to flag all articles that have less than 100 characters in Length</strong></h2><p>For this snippet, we'll want to set what we think is an <strong>acceptable minimum length (in characters)</strong> for <code>articles</code>. Any articles shorter than this, we will flag for review-</p><pre><code>$minimumAcceptableLength = 100</code></pre><pre><code>$shortArticles = Get-HuduArticles | Where-Object {"$($_.content)".length -lt $minimumAcceptableLength}
$shortArticlesFlag = Select-OrCreateFlagType -description "Flag all articles with less than 100 characters"
$shortArticles | ForEach-Object {New-HuduFlag -flagTypeId $shortArticlesFlag.id -flagableType "article" -flaggableId $_.id}</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="462a4d40-74eb-4828-a572-796709c7fd71" id="462a4d40-74eb-4828-a572-796709c7fd71"><strong>Scenario 3: lets get a handle on weak passwords!</strong></h2><p>Weak passwords should be under a magnifying glass, since they can create a major security gap. In this example, we'll set a variable for <strong>minimum password length</strong> and for <strong>minimum unique characters used</strong>.</p><pre><code>$minimumpasswordLength=8
$minimumCharsUsed=6</code></pre><p>Once you've defined what you think are <strong>acceptable minimum values</strong> for <code>passwords</code>, you can <strong>'flag away'</strong></p><pre><code>$weakPasswords = get-hudupasswords | Where-Object {"$($_.asset_password.password ?? $_.password)".length -lt $minimumpasswordLength -or ("$($_.asset_password.password ?? $_.password)".ToCharArray() | Select-Object -Unique).Count -lt $minimumCharsUsed}
$weakPasswordsFlag = Select-OrCreateFlagType -description "Flag all weak passwords with either less than $minimumpasswordLength chars, or fewer than $minimumCharsUsed different chars"
$weakPasswords | ForEach-Object {New-HuduFlag -flagTypeId $weakPasswordsFlag.id -flagableType "password" -flaggableId $_.id}</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="1d984adc-eba8-402f-bf2a-a17da1c45da7" id="1d984adc-eba8-402f-bf2a-a17da1c45da7"><strong>Scenario 4: we want to flag all procedures that have too-few tasks/steps</strong></h2><p>If your organization has some procedures that might need to be evaluated, this can be a great starting point Firstly, we'll define what we think is an <strong>acceptable minimum number of steps or tasks</strong> a <code>procedure</code> should have</p><pre><code>$minimumAllowedSteps=2</code></pre><p>And we can then apply that to all the <code>procedures</code> in Hudu with the snippet below</p><pre><code>$weakProcedures = Get-HuduProcedures | Where-Object {$_.total -le $minimumAllowedSteps}
$proceduresFlag = Select-OrCreateFlagType -description "Flag all procedures that have $minimumAllowedSteps or fewer tasks/steps"
$weakProcedures | ForEach-Object {New-HuduFlag -flagTypeId $proceduresFlag.id -flagableType "procedure" -flaggableId $_.id}</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="b824a0a0-aeaa-47cc-9563-233eb283b3d5" id="b824a0a0-aeaa-47cc-9563-233eb283b3d5"><strong>Scenario 5: we want to flag all rack storages that are underutilized (less than X% capacity)</strong></h2><p>First, we'll need to define <strong>what we consider to be underutilized (as percent utilization)</strong>. In this example, we'll suppose <strong><em>10%</em></strong> or lower constitutes an underutilized <code>rack storage</code>, but you can change this as best suits your needs</p><pre><code>$minimumUtilization=10</code></pre><p>Then, we're ready to flag some <code>rack storages</code></p><pre><code>$underutilizedRacks = Get-HuduRackStorages | Where-Object {[int]($_.utilization) -le $minimumUtilization}
$racksFlag = Select-OrCreateFlagType -description "Flag all rack storages that are underutilized (less than $minimumUtilization% capacity)"
$underutilizedRacks | ForEach-Object {New-HuduFlag -flagTypeId $racksFlag.id -flagableType "rack" -flaggableId $_.id}</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="a7b074a3-1ad6-4cc0-b2a4-dbfcc8e9f250" id="a7b074a3-1ad6-4cc0-b2a4-dbfcc8e9f250"><strong>Scenario 6: we want to flag external networks so that they will be recognized and handled with care</strong></h2><p>This one is pretty straightforward and doesn't require any user-defined variables. We're just selecting for <strong>external</strong> <code>networks</code>. It can help to make these external <code>networks</code> easily identifiable so they may be <em>handled with extra care</em></p><pre><code>$externalNetworks = Get-HuduNetworks | Where-Object {[int]($_.network_type) -eq 1}
$externalNetworksFlag = Select-OrCreateFlagType -description "Flag all external networks"
$externalNetworks | ForEach-Object {New-HuduFlag -flagTypeId $externalNetworksFlag.id -flagableType "network" -flaggableId $_.id}</code></pre><hr><p></p><h2 class="text-xl" data-toc-id="b1890444-24ab-40a4-b5b7-414a0e2e5e3e" id="b1890444-24ab-40a4-b5b7-414a0e2e5e3e"><strong>Scenario 7: lets flag all publicly shared articles so that we don't update them with sensitive info by mistake</strong></h2><p>This is a <em>pretty big one</em>, especially if you have many <strong>internal</strong> and <strong>external</strong> <code>articles</code> to differentiate.</p><pre><code>$publicArticles = Get-HuduArticles | Where-Object {$_.enable_sharing -or $_.share_url}
$publicArticlesFlag = Select-OrCreateFlagType -description "Flag all publicly shared articles"
$publicArticles | ForEach-Object {New-HuduFlag -flagTypeId $publicArticlesFlag.id -flagableType "article" -flaggableId $_.id}</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Custom Microsoft Graph user imports]]></title>
            <description><![CDATA[Import ms365 users into Hudu without creating hudu cards.

I'm personally not a fan of the cards integrations in Hudu, so I created a script that:

 * Pulls users from ms365 graph based on specific ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/custom-microsoft-graph-user-imports-CfJ1wttqcXrXkLo</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/custom-microsoft-graph-user-imports-CfJ1wttqcXrXkLo</guid>
            <category><![CDATA[Automation]]></category>
            <category><![CDATA[ms365]]></category>
            <category><![CDATA[n8n]]></category>
            <dc:creator><![CDATA[Marcus]]></dc:creator>
            <pubDate>Tue, 06 Jan 2026 11:23:33 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Import ms365 users into Hudu without creating hudu cards.</strong></p><p>I'm personally not a fan of the cards integrations in Hudu, so I created a script that:</p><ul><li><p>Pulls users from ms365 graph based on specific distribution groups such as "All company employees" or whatever you use. Allowing you to add any graph data to the user asset in Hudu. Currently includes name, email, Phone number, Teams number, Title, Department.</p></li><li><p>Adds a list of all collaboration groups, security groups, mail-enabled security groups and distribution groups to the user asset.</p></li><li><p>Can easily be built upon the n8n flow to add more elements to the user asset.</p></li></ul><p></p><figure data-align="center" data-size="best-fit" data-id="HS29jsAeutOE36y4j7Qz8" data-version="v2" data-type="image"><img data-id="HS29jsAeutOE36y4j7Qz8" src="https://tribe-s3-production.imgix.net/HS29jsAeutOE36y4j7Qz8?auto=compress,format"></figure>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Converting from TextFields to ListSelect (DropDown) Fields]]></title>
            <description><![CDATA[Have you ever had a text field that you wish was.... More consistent? Maybe like a listselect field?

It's something that comes up now and again and is easier than ever.

This helpful little snippet is in...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/standardizing-data-from-textfields-to-listselect-fields-CaBn9byzxdRMOFi</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/standardizing-data-from-textfields-to-listselect-fields-CaBn9byzxdRMOFi</guid>
            <dc:creator><![CDATA[Mason Stelter]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 20:33:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Have you ever had a text field that you wish was.... More consistent? Maybe like a listselect field?</p><p>It's something that comes up now and again and is easier than ever.</p><p>This helpful little snippet is in our <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Administration/Listifying-Text-Fields">Community Repo</a>, or can be invoked with this oneliner, below.<br></p><pre><code> pwsh  -NoProfile -ExecutionPolicy Bypass -Command "irm 'https://raw.githubusercontent.com/Hudu-Technologies-Inc/Community-Scripts/main/Administration/Listifying-Text-Fields/Listify-Text-Field.ps1' | iex"</code></pre><p>First, you can select any layout that has a TextField</p><figure data-align="center" data-size="best-fit" data-id="I16MhZ4yZqKaKDbflh1OD" data-version="v2" data-type="image"><img data-id="I16MhZ4yZqKaKDbflh1OD" src="https://tribe-s3-production.imgix.net/I16MhZ4yZqKaKDbflh1OD?auto=compress,format"></figure><p><br>Then, you can simply select the field you would like to make a new ListSelect field for as a replacement. All of your data will be carried over to this new field and all unique values will be available in a new list assigned to it!<br></p><figure data-align="center" data-size="best-fit" data-id="WeJJLjjiue7pijsOHG3JT" data-version="v2" data-type="image"><img data-id="WeJJLjjiue7pijsOHG3JT" src="https://tribe-s3-production.imgix.net/WeJJLjjiue7pijsOHG3JT?auto=compress,format"></figure><p><br>After you select the desired field you'd like to change over, you'll be asked to confirm-- and if something doesn't seem right, you can exit with CTL+C key combination</p><figure data-align="center" data-size="best-fit" data-id="FqAChZatEsQ2tDjwfGwby" data-version="v2" data-type="image"><img data-id="FqAChZatEsQ2tDjwfGwby" src="https://tribe-s3-production.imgix.net/FqAChZatEsQ2tDjwfGwby?auto=compress,format"></figure><p><br>After you confirm by hitting enter, it will get to work.<br>The script will:</p><ul><li><p>grab all unique values for this field in your selected layout</p></li><li><p>create (or update) a new list containing unique values</p></li><li><p>add this field to your chosen layout</p></li><li><p>copy over values from source field to new list field for all assets in layout<br><br>And that's it! You may want to confirm things are looking as-expected, and then wrap up by removing the original field. Conveniently, this script opens up the administrative page for your chosen layout and the global asset view for your chosen layout.<br></p></li></ul><figure data-align="center" data-size="best-fit" data-id="PKWtv5jF2zAt8NFVuV6z6" data-version="v2" data-type="image"><img data-id="PKWtv5jF2zAt8NFVuV6z6" src="https://tribe-s3-production.imgix.net/PKWtv5jF2zAt8NFVuV6z6?auto=compress,format"></figure><p><br>Happy Listifying!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create Standardized Folder Structure Across KBs]]></title>
            <description><![CDATA[
Want a way to create a standardized folder structure across all of your Client's KB sections?


Maybe you want a standard structure something like:

 * SOPs
   
   * Adminstrative
   
   * New User Setup
   
   * Network Request Forms

 * ...]]></description>
            <link>https://community.hudu.com/script-library-awpwerdu/post/create-standardized-folder-structure-across-kbs-qqe0JuabEDX2rHG</link>
            <guid isPermaLink="true">https://community.hudu.com/script-library-awpwerdu/post/create-standardized-folder-structure-across-kbs-qqe0JuabEDX2rHG</guid>
            <category><![CDATA[KB]]></category>
            <category><![CDATA[Powershell]]></category>
            <dc:creator><![CDATA[Cameron Granger]]></dc:creator>
            <pubDate>Fri, 19 Dec 2025 22:50:12 GMT</pubDate>
            <content:encoded><![CDATA[<p><br>Want a way to create a standardized folder structure across all of your Client's KB sections? <br></p><p>Maybe you want a standard structure something like:</p><ul><li><p>SOPs</p><ul><li><p>Adminstrative</p></li><li><p>New User Setup</p></li><li><p>Network Request Forms</p></li></ul></li><li><p>Troubleshooting</p><ul><li><p>Network</p></li><li><p>Servers</p></li><li><p>Printers</p></li></ul></li></ul><p><strong>Using Script to create a templated KB Folder Structure Across Companies</strong></p><figure data-align="center" data-size="best-fit" data-id="WzV1sz6sYBlyKMLVSLnwf" data-version="v2" data-type="image"><img data-id="WzV1sz6sYBlyKMLVSLnwf" src="https://tribe-s3-production.imgix.net/WzV1sz6sYBlyKMLVSLnwf?auto=compress,format"></figure><p><strong>This guide shows what you will need:</strong></p><ul><li><p>How to create the Key Vault</p></li><li><p>How to create the two secrets</p></li><li><p>How to use them in your script</p></li><li><p>A minimal working example</p></li></ul><p>============================================================</p><p>This script utilizes Azure Key Vault keys for security so it's not storing your actual API key information.</p><p><strong>Create Azure Key Vault</strong></p><h2 class="text-xl" data-toc-id="2cc8ad31-815d-46ba-a544-c6aff109a503" id="2cc8ad31-815d-46ba-a544-c6aff109a503"><strong>1. Create the Azure Key Vault</strong></h2><p>Step 1 — Open Azure Portal</p><p>Go to: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://portal.azure.com"><u>https://portal.azure.com</u></a></p><p>Search for Key Vaults → click Create.</p><h2 class="text-xl" data-toc-id="8e2dd0d6-a4c4-42f0-9dac-320121d11993" id="8e2dd0d6-a4c4-42f0-9dac-320121d11993"><strong>Step 2 — Required fields</strong></h2><p>Project details:</p><ul><li><p>Subscription: your subscription</p></li><li><p>Resource group: choose or create one</p></li></ul><p>Instance details:</p><ul><li><p>Key Vault name: must be unique (example: Hudu-Automation-Vault)</p></li><li><p>Region: pick your region</p></li><li><p>Pricing tier: Standard</p></li></ul><p>Access Configuration:</p><ul><li><p>Permission model: Role-based access control (RBAC) (Required for PowerShell scripts)</p></li></ul><p>Networking:</p><ul><li><p>Public access: Enabled</p></li><li><p>Allow all networks (for now)</p></li></ul><p>Click Review + Create → Create.</p><h2 class="text-xl" data-toc-id="51fba5eb-563e-4555-a6c1-27abf824d4b8" id="51fba5eb-563e-4555-a6c1-27abf824d4b8"><strong>2. Give Yourself Permission</strong></h2><p>In your new Key Vault → left menu → Access Control (IAM) Click Add → Add role assignment</p><p>Select role:</p><ul><li><p>Key Vault Secrets User (read secrets only, recommended) OR</p></li><li><p>Key Vault Administrator (full access — only for setup)</p></li></ul><p>Add your Azure user</p><p>Save</p><p>You now have permission to read secrets from PowerShell.</p><h2 class="text-xl" data-toc-id="df1b4bde-2bd9-4038-b96d-7d01a925aec0" id="df1b4bde-2bd9-4038-b96d-7d01a925aec0"><strong>3. Create the Two Required Secrets</strong></h2><p>Inside your Key Vault → Secrets → Generate/Import.</p><p>Secret #1 — Hudu API Key</p><ul><li><p>Name: HuduAPIKey</p></li><li><p>Value: paste the API key from Hudu Path in Hudu: Admin → API Keys</p></li></ul><p>Click <strong>Create</strong>.</p><p>Secret #2 — HuduBaseURL</p><ul><li><p>Name: HuduBaseURL</p></li><li><p>Value example: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://docs.yourcompany.com"><u>https://docs.yourcompany.com</u></a></p></li></ul><p>OR: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="http://docs.yourcompany.com">docs.yourcompany.com</a></p><p>(Both work — the script normalizes it.)</p><p>Click <strong>Create</strong>.</p><p><strong>Run the Script</strong></p><figure data-align="left" data-size="half" data-id="kCKx4BzxUycuKl2ARmG5C" data-version="v2" data-type="image"><img data-id="kCKx4BzxUycuKl2ARmG5C" src="https://tribe-s3-production.imgix.net/kCKx4BzxUycuKl2ARmG5C?auto=compress,format"></figure><h2 class="text-xl" data-toc-id="d4f47383-6c6b-43a1-9981-d56019ec25ca" id="d4f47383-6c6b-43a1-9981-d56019ec25ca"><strong>4. Use the Script (Clean Version)</strong></h2><p><strong>Enter your Azure Vault Key and Hudu URL at the top of the script before running. </strong>Select either options 1 or 2 after company listings.</p><figure data-align="left" data-size="half" data-id="vpRAm6hz5L9sydZNpCzuX" data-version="v2" data-type="image"><img data-id="vpRAm6hz5L9sydZNpCzuX" src="https://tribe-s3-production.imgix.net/vpRAm6hz5L9sydZNpCzuX?auto=compress,format"></figure><p>Option 1 will apply your folder creation to all companies. Option 2 will apply your folder creation to the company IDs you enter.</p><p>If you select option to please format your IDs as follow: 1,2,4,5,etc</p><p>How to create folders:</p><figure data-align="left" data-size="half" data-id="qduDY3qgypy93NBlTswQT" data-version="v2" data-type="image"><img data-id="qduDY3qgypy93NBlTswQT" src="https://tribe-s3-production.imgix.net/qduDY3qgypy93NBlTswQT?auto=compress,format"></figure><p>Here's an example of what you would type:</p><pre><code>testing 0 
 testing 1 
 testing 2 
 testing 3 
  testing 4 
  testing 5 
   testing 6 
    testing 7 
    testing 8 
testing 9 
 testing 10 
  testing 11 

</code></pre><p>This creates the following structure:</p><ul><li><p>testing 0 (root)</p><ul><li><p>testing 1</p></li><li><p>testing 2</p></li><li><p>testing 3</p><ul><li><p>testing 4</p></li><li><p>testing 5</p><ul><li><p>testing 6</p><ul><li><p>testing 7</p></li><li><p>testing 8</p></li></ul></li></ul></li></ul></li></ul></li></ul><p>When done follow confirmation messages, and accept the creation.</p><p>The script will then create the folders, and silently remove any credentials used(API, Domain, Azure Secrets, etc).</p><p><br>You can view the script here:</p><div data-embed-url="https://github.com/Hudu-Technologies-Inc/Community-Scripts/tree/main/Information-and-Visualization/Templated-KB-Folder-Creation" data-type="embed"></div>]]></content:encoded>
        </item>
    </channel>
</rss>