<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://proworks.com/blog/rss/xslt"?>
<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>ProWorks Web Design, Development, and Umbraco Blog</title>
    <link>https://proworks.com/blog/</link>
    <description>ProWorks</description>
    <generator>Articulate, blogging built on Umbraco</generator>
    <item>
      <guid isPermaLink="false">4941</guid>
      <link>https://proworks.com/blog/archive/umbraco-ai-page-evaluator/</link>
      <category>umbraco</category>
      <category>ai</category>
      <title>Catch Weak Content Before It Goes Live with ProWorks Umbraco.AI Page Evaluator</title>
      <description>&lt;p&gt;In this day and age, its more important than ever to keep your website content clear, consistent, and on brand. AI infers what your organization does from what it reads on your website and, yes, it reads ALL of your content. Couple this with the rise of AI tools used to outline, write, and enhance marketing content, the risk of publishing AI slop (or even inaccurate information) is high. This is where the &lt;a rel="noopener" type="external" href="https://github.com/ProWorksCorporation/ProWorks-Umbraco.AI-Page-Evaluator" target="_blank" title="ProWorks Umbraco.AI Page Evaluator"&gt;ProWorks Umbraco.AI Page Evaluator&lt;/a&gt; shines.&lt;/p&gt;
&lt;h2&gt;What Is AI-Powered Page Evaluation?&lt;/h2&gt;
&lt;p&gt;AI-powered page evaluation uses a large language model (LLM) to analyze your page content and return structured feedback on key page indicators.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;landing page&lt;/strong&gt; can be evaluated and scored for clarity, messaging strength, objection handling, message hierarchy, and the call to action.&lt;/li&gt;
&lt;li&gt;A standard &lt;strong&gt;content page&lt;/strong&gt; can be evaluated on SEO performance, AEO/GEO performance, and accessibility compliance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;All pages&lt;/strong&gt; can be evaluated based on brand guidelines, brand voice, and how it supports the organization's marketing strategy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What is ProWorks Umbraco.AI Page Evaluator (AI Page Evaluator)?&lt;/h2&gt;
&lt;p&gt;Our AI Page Evaluator is an open-source add-on to the &lt;a rel="noopener" type="external" href="https://github.com/umbraco/Umbraco.AI/" target="_blank" title="Umbraco.AI"&gt;Umbraco.AI&lt;/a&gt; framework, which adds a back-office Evaluate Page button you can simply click on to send the page's content to an AI model and return a structured quality report directly inside the back-office, including scored checks, warnings, and actionable suggestions.&lt;/p&gt;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/uzfpov4h/screenshot-2026-04-14-162237.png" alt="Page Evaluator Scoring Report" width="900" height="490"&gt;&lt;/p&gt;
&lt;p&gt;This AI Page Evaluator started because we had a need to evaluate our own Landing Pages and Blog Posts on a rubric to verify content was clear, structured well, and communicated our intent. We had been doing this QA outside of Umbraco and preferred something that lived inside the editorial workflow and was frictionless for content editors to use.&lt;/p&gt;
&lt;p&gt;ProWorks Umbraco.AI Page Evaluator works with &lt;a rel="noopener" type="external" href="https://umbraco.com/" target="_blank" title="Umbraco"&gt;Umbraco&lt;/a&gt; 17.x in combination with the Umbraco.AI official package.&lt;/p&gt;
&lt;h2&gt;How To Get Started&lt;/h2&gt;
&lt;p&gt;The install is super-fast, and if you already use Umbraco.AI on Umbraco 17, configuration is fast as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Umbraco 17.3+&lt;/li&gt;
&lt;li&gt;Umbraco.AI&lt;/li&gt;
&lt;li&gt;.Net 10+&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Installation&lt;/h4&gt;
&lt;p&gt;Use NuGet to install AI Page Evaluator for your Umbraco project.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; &amp;gt; dotnet add package ProWorks.Umbraco.AI.PageEvaluator
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or search for &lt;strong&gt;ProWorks.Umbraco.AI.PageEvaluator&lt;/strong&gt; in the NuGet Package Manager in Visual Studio.&lt;/p&gt;
&lt;p&gt;Package page: &lt;a href="https://www.nuget.org/packages/ProWorks.Umbraco.AI.PageEvaluator"&gt;https://www.nuget.org/packages/ProWorks.Umbraco.AI.PageEvaluator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then build the project, run the website, and login to the back-office.&lt;/p&gt;
&lt;h4&gt;Configuration&lt;/h4&gt;
&lt;p&gt;In the back-office, go to the "AI" section. Verify you have a Connection to an AI API and a Profile created that uses the Connection that you want to use.&lt;/p&gt;
&lt;p&gt;Now go to the Page Evaluator area under Add-ons. Click the "Create New" button and follow the steps below:&lt;br&gt;&lt;br&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/3ibaot4t/screenshot-2026-04-28-165602.png" alt="Configuration Area" width="889" height="528"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fill in the &lt;strong&gt;Name &lt;/strong&gt;and &lt;strong&gt;Description &lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Select a &lt;strong&gt;Document Type&lt;/strong&gt; to apply the Page Evaluator to. Simply start typing a DocType name and choose the item from the list.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;AI Profile&lt;/strong&gt; to use for this Page Evaluator. Select the &lt;strong&gt;AI Context&lt;/strong&gt; if desired.&lt;br&gt;&lt;br&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/1vabd3fl/screenshot-2026-04-28-165951.png" alt="Configuration-1" width="783" height="578"&gt;&lt;/li&gt;
&lt;li&gt;Review the &lt;strong&gt;Properties to Evaluate&lt;/strong&gt; and remove any properties that aren't important for the type of Page Evaluation you are setting up.&lt;br&gt;&lt;br&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/psddlqul/screenshot-2026-04-28-170238.png" alt="Properties to Evaluate" width="666" height="430"&gt;&lt;/li&gt;
&lt;li&gt;Paste in the prompt you would like to use or open the &lt;strong&gt;Prompt Builder&lt;/strong&gt; to help guide you on building a prompt.&lt;br&gt;&lt;br&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/tifhcc2q/screenshot-2026-04-28-170336.png" alt="Screenshot 2026-04-28 170336.png" width="869" height="346"&gt;&lt;/li&gt;
&lt;li&gt;Be sure to &lt;strong&gt;Enable Scoring&lt;/strong&gt; if there are scoring values that will be a part of the prompt.&lt;br&gt;&lt;br&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/fvabbv1k/screenshot-2026-04-28-170829.png" alt="Enable Scoring" width="618" height="110"&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Test it Out&lt;/h4&gt;
&lt;p&gt;Go to the Content section. Find a page that is of the document type that you specified in the configuration.  Press the &lt;strong&gt;Evaluate Page&lt;/strong&gt; button in the bottom right area of the back-office.&lt;/p&gt;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/ueggilpw/umbraco-ai-page-evaluation.png" alt="Umbraco.AI Page Evaluation" width="542" height="77"&gt;&lt;/p&gt;
&lt;p&gt;Page properties will be sent to AI with your evaluation criteria. An evaluation report will display with recommendations, a list of items to review, and scoring (if enabled).&lt;/p&gt;
&lt;p&gt;The results are cached so that AI doesn't have to run each time you want to view the report (save those tokens!). It will re-run the report if the page has been saved since either the last run or if the evaluation criteria has been updated..&lt;/p&gt;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="https://proworks.com/media/0e5h2u5o/screenshot-2026-04-28-171542.png" alt="ProWorks Page Evaluation Report" width="1165" height="634"&gt;&lt;/p&gt;
&lt;h2&gt;Key Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Content clarity is now a competitive factor and AI systems interpret your pages before many visitors do.&lt;/li&gt;
&lt;li&gt;ProWorks Umbraco.AI Page Evaluator brings structured, content quality feedback directly into the Umbraco editor.&lt;/li&gt;
&lt;li&gt;It's open source, built by an Umbraco Platinum Partner, and available now on NuGet.&lt;/li&gt;
&lt;li&gt;Better content evaluation upstream means fewer post-launch surprises.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Check it Out!&lt;/h2&gt;
&lt;p&gt;Try the plugin, open an issue, suggest a feature. It's open source and we want to know how teams are using it.&lt;/p&gt;
&lt;p&gt;&lt;a style="color: #fff; background-image: none;" rel="noopener" type="external" href="https://github.com/ProWorksCorporation/ProWorks-Umbraco.AI-Page-Evaluator" target="_blank" title="View the package on Github" class="pw-button" data-anchor="#section-footer"&gt;View on Github&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h2&gt;Need Help?&lt;/h2&gt;
&lt;p&gt;If you'd like help implementing this as part of a broader content quality initiative, or if you're evaluating an Umbraco upgrade and want content quality to be part of that conversation, we'd love to talk.&lt;/p&gt;
&lt;p&gt;&lt;a style="color: #fff; background-image: none;" type="external" href="#section-footer" title="Request an Initial Consultation" class="pw-button" data-anchor="#section-footer"&gt;Schedule a Consultation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;Frequently Asked Questions (FAQ)&lt;/h2&gt;
&lt;div id="faq-56aaba21fce947e7a6fc15711e8217cf" class="accordion"&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-39f1deabb1ac4f2a9990ea5d36668607" aria-expanded="false" aria-controls="faq-item-39f1deabb1ac4f2a9990ea5d36668607"&gt; Does the plugin work with any AI provider, or only Claude / Anthropic? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-39f1deabb1ac4f2a9990ea5d36668607" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;It works with any AI provider configured in Umbraco.AI, including Anthropic Claude, OpenAI, and others. The plugin is provider-agnostic by design; you select the AI profile when setting up an evaluator configuration, so whichever model your team already has access to will work.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-13a35cfe03f24500b5877141b4887768" aria-expanded="false" aria-controls="faq-item-13a35cfe03f24500b5877141b4887768"&gt; What versions of Umbraco does it support? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-13a35cfe03f24500b5877141b4887768" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;The current release requires Umbraco CMS 17.3.x+, Umbraco.AI 1.8.x+, and .NET 10. If your site is on an earlier version of Umbraco, the plugin is not compatible yet. Support for additional versions may come in future releases.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-ee7fc7bd0f594e0d98f3c22916f27bb4" aria-expanded="false" aria-controls="faq-item-ee7fc7bd0f594e0d98f3c22916f27bb4"&gt; Does the plugin send my content to a third-party API? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-ee7fc7bd0f594e0d98f3c22916f27bb4" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;Yes, it sends page content to whichever AI provider you have configured in Umbraco.AI. Before sending, the plugin cleans the content: HTML tags are stripped and long property values are truncated to reduce token usage. If your organization has data sensitivity requirements, review your AI provider's data handling policies before deploying. You can also use the property filtering feature to exclude specific fields from the evaluation entirely.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-eaf3fd5658144d9fbeaefd8e82e38397" aria-expanded="false" aria-controls="faq-item-eaf3fd5658144d9fbeaefd8e82e38397"&gt; Can I control which content gets sent to the AI? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-eaf3fd5658144d9fbeaefd8e82e38397" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;Yes. When setting up an evaluator configuration, you can select exactly which document type properties to include in the evaluation. Any properties you do not select are excluded from the AI call. This is useful both for keeping sensitive fields private and for reducing token usage on pages with large amounts of irrelevant content.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-fd851378877c42f6aef7e6f10c536b3a" aria-expanded="false" aria-controls="faq-item-fd851378877c42f6aef7e6f10c536b3a"&gt; Can I customize what the AI evaluates? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-fd851378877c42f6aef7e6f10c536b3a" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;Yes, this is one of the plugin's core design principles. Each evaluator configuration uses a custom prompt you write for that specific document type. The Prompt Builder UI can auto-generate a starting prompt from your document type's properties and a set of checklist categories, which you can then edit and refine. You can also attach a Context resource from Umbraco.AI to give the model additional background about your organization or brand.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-905523a762f44aca8debd3d2de71521b" aria-expanded="false" aria-controls="faq-item-905523a762f44aca8debd3d2de71521b"&gt; Is the plugin free? Are there any ongoing costs? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-905523a762f44aca8debd3d2de71521b" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;The plugin itself is free and open source under the MIT license. In addition, your AI provider's API charges based on token usage. For most sites running on-demand evaluations, API costs are minimal.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="accordion-item"&gt;
&lt;h4 class="accordion-header"&gt;&lt;button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#faq-item-f5a49851eeb34bba9eda56e46284ef6a" aria-expanded="false" aria-controls="faq-item-f5a49851eeb34bba9eda56e46284ef6a"&gt; What's the difference between this plugin and ProWorks' full AI content evaluation service? &lt;/button&gt;&lt;/h4&gt;
&lt;div id="faq-item-f5a49851eeb34bba9eda56e46284ef6a" class="accordion-collapse collapse"&gt;
&lt;div class="accordion-body"&gt;
&lt;p&gt;The plugin evaluates individual pages on demand inside your Umbraco back office, using prompts you configure. It is a self-serve tool built for ongoing editorial quality control your team can run as part of a regular publishing workflow.&lt;/p&gt;
&lt;p&gt;&lt;a href="/ai/" title="ProWorks' site-wide AI Content Evaluation"&gt;ProWorks' site-wide AI Content Evaluation&lt;/a&gt; service is a done-for-you engagement that analyzes how AI systems interpret your entire organization across all public content. It delivers an AI Perspective Report covering your inferred positioning, value propositions, audience signals, and content consistency. This plugin is a great starting point; the service is for teams who want the full picture across their whole site.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <pubDate>Wed, 29 Apr 2026 10:04:00 Z</pubDate>
      <a10:updated>2026-04-29T10:04:00Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4858</guid>
      <link>https://proworks.com/blog/archive/upgrading-from-umbraco-13-to-17-lts-lessons-from-the-trenches/</link>
      <category>umbraco</category>
      <category>upgrade</category>
      <title>Upgrading from Umbraco 13 to 17 LTS: Lessons from the Trenches</title>
      <description>&lt;p&gt;Upgrades, upgrades, upgrades!  Upgrades are a hot topic in the Umbraco community ever since version 17 was released last November. There are a lot of great reasons to upgrade to this major version besides simply moving to the latest Long-Term Supported (LTS) version. Our team here at ProWorks has a ton of Umbraco upgrade experience and are here to help you make your upgrade a success. This article will update as we learn about new challenges and find solutions. Ready? Let's do this!&lt;/p&gt;
&lt;p&gt;&lt;a type="external" href="#final-thoughts" title="See the changelog at the bottom if you're coming back to this after a while" data-anchor="#final-thoughts"&gt;See the changelog at the bottom if you're coming back to this after a while&lt;/a&gt; - &lt;em&gt;Updated: January 22, 2026&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Why Upgrade?&lt;/h2&gt;
&lt;p&gt;Let's look at why you would upgrade to the latest v17 version:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Timely Security Updates&lt;/strong&gt;&lt;/em&gt; - As a LTS version, your site can stay up to date with security patches and easiest to keep up to date in the future. Umbraco 17 is supported through November 27, 2028.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Better Site Performance &lt;/strong&gt;&lt;/em&gt;- The rebuilt HybridCache speeds up startups especially on large sites. This means less down time after deploys to live. The latest .NET version 10 framework also improves performance which helps with your page speeds.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Better Back-Office Performance&lt;/strong&gt;&lt;/em&gt; - The rebuilt back-office is faster and allows for standards-based extensions and future-proofed architecture that no longer relies on Angular or other external large frameworks that could no longer be supported.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Deep AI Chat Integrations&lt;/strong&gt;&lt;/em&gt; - The official Umbraco MCP Server only works on version 17 and allows AI to "talk" to your specific Umbraco back-office to report on, add, or modify content.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Better &lt;/strong&gt;&lt;/em&gt;&lt;em&gt;&lt;strong&gt;Automation and I&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;&lt;strong&gt;ntegration Support &lt;/strong&gt;&lt;/em&gt;- The new Management API allows for automation of everything that can be done by a content editor or developer in the back-office. This is important for deep integrations with external tools, marketing automations, and AI Agent connections.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Scalable Back-office&lt;/strong&gt;&lt;/em&gt; - Version 17 supports load-balancing the back-office. This allows the back-office to scale out like the front-end for performance and simplifies hosting load-balanced Umbraco websites.&lt;/li&gt;
&lt;li&gt;Read even more on the official v17 release article: &lt;a rel="noopener" type="external" href="https://umbraco.com/blog/umbraco-17-lts-release/" target="_blank" title="Umbraco 17 LTS: Final Release"&gt;Umbraco 17 LTS: Final Release&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is really a lot of truly great features available in version 17 and many more on the horizon in 18 and 19. It's a perfect time to get this upgrade done so those other upgrades are less painful later.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The sections below dive into the technical details of upgrading. If you'd rather have a conversation about what an upgrade means for your organization (timeline, budget, and business impact) we're happy to help.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style="color: #fff; background-image: none;" type="external" href="#section-footer" title="Request an Initial Consultation" class="pw-button" data-anchor="#section-footer"&gt;Schedule a Consultation&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Prepare for Your Upgrade&lt;/h2&gt;
&lt;p&gt;A good result always starts with a good plan, right?&lt;/p&gt;
&lt;h4&gt;Current Umbraco Version?&lt;/h4&gt;
&lt;p&gt;First, you should assess where your site currently is. Are you on version 13? Or something older?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Version 8-9:&lt;/strong&gt; You will need to upgrade to v10, then v13, then v17 - in fact, in general it is recommended to upgrade to each LTS version on your path to the latest. There may need to be custom migrations if the site uses Grid or other unsupported editors. Content migration may be preferable is some cases. v8 has API changes that could mean major code refactoring.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version 10-12:&lt;/strong&gt; Upgrade to the latest v13, then to v17. Getting to v13 should be relatively straight-forward, but an assessment is always helpful for planning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version 13:&lt;/strong&gt; Upgrade to the latest version of v13, currently 13.13.0.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learn more about each version here: &lt;a rel="noopener" type="external" href="https://releases.umbraco.com/all-releases" target="_blank" title="https://releases.umbraco.com/all-releases"&gt;https://releases.umbraco.com/all-releases&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Please feel free to &lt;a type="external" href="#section-footer" title="contact ProWorks" data-anchor="#section-footer"&gt;contact ProWorks&lt;/a&gt; and get our recommendations)&lt;/p&gt;
&lt;h4&gt;Using Outdated Property Editors?&lt;/h4&gt;
&lt;p&gt;If you are using any deprecated or legacy property editors, its best to update them to use the latest version in v13 before upgrading.&lt;/p&gt;
&lt;p&gt;Property editors to migrate to in v13:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MediaPicker -&amp;gt; MediaPicker3&lt;/li&gt;
&lt;li&gt;Nested Content -&amp;gt; Block List&lt;/li&gt;
&lt;li&gt;Stacked Content -&amp;gt; Block List&lt;/li&gt;
&lt;li&gt;Grid -&amp;gt; Block Grid&lt;/li&gt;
&lt;li&gt;Macros -&amp;gt; Blocks (Or remove if unused)&lt;/li&gt;
&lt;li&gt;XPath in pickers -&amp;gt; Plan for a change to use the new dynamic root setup&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By addressing these structural elements first, the content will migrate much easier to v17.&lt;/p&gt;
&lt;h4&gt;v17 Package Support?&lt;/h4&gt;
&lt;p&gt;Do you have Umbraco Packages installed (it's likely)? Go to the Umbraco Marketplace (&lt;a rel="noopener" type="external" href="https://marketplace.umbraco.com/" target="_blank" title="https://marketplace.umbraco.com/"&gt;https://marketplace.umbraco.com/&lt;/a&gt;) or the package Repository and verify that each package supports v17. Many of the most used packages are ready for v17 now. Some are working on it and may have a beta version that likely works well. Some may not have any v17 support.&lt;/p&gt;
&lt;p&gt;If you're unsure and its not clear from the repo, then asking on the Umbraco Forums (&lt;a rel="noopener" type="external" href="https://forum.umbraco.com/" target="_blank" title="https://forum.umbraco.com/"&gt;https://forum.umbraco.com/&lt;/a&gt;) would be a good way to see how others are dealing with this package. Is there a new version coming soon? Is there a new package that effectively replaces this one?&lt;/p&gt;
&lt;p&gt;As always, we can help give you a recommendation to move forward on. We have been doing this a long time and would love to help! &lt;a type="external" href="#section-footer" title="Contact Us" data-anchor="#section-footer"&gt;Connect with us below&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Custom/Bespoke Back-Office Extensions?&lt;/h4&gt;
&lt;p&gt;If your site has custom Angular.js extensions, then those will need to be re-written in the new Typescript/Lit/Web Components extension model. For the initial upgrade you can simply disable or remove them and address them after the main upgrade is complete.&lt;/p&gt;
&lt;h4&gt;Using Smidge?&lt;/h4&gt;
&lt;p&gt;Smidge was removed in v17 and you will need to reinstall it if used by any custom code or by the site in general. It is straight-forward to re-add to your site and you can learn more on the Github repo: &lt;a href="https://github.com/Shazwazza/Smidge"&gt;https://github.com/Shazwazza/Smidge&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is also an Umbraco-specific package that you can install here: &lt;a rel="noopener" type="external" href="https://marketplace.umbraco.com/package/umbraco.community.smidge" target="_blank" title="https://marketplace.umbraco.com/package/umbraco.community.smidge"&gt;https://marketplace.umbraco.com/package/umbraco.community.smidge&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;TipTap or TinyMCE?&lt;/h4&gt;
&lt;p&gt;Umbraco has migrated to a new RTE component called TipTap. It will migrate all of your RTEs to this new editor by default unless you install a community package, &lt;a rel="noopener" type="external" href="https://github.com/ProWorksCorporation/TinyMCE-Umbraco" target="_blank" title="TinyMCE.Umbraco Github Repository"&gt;TinyMCE.Umbraco&lt;/a&gt;. This package will prevent the migration and keep the TinyMCE editor installed and used as in previous versions. &lt;a href="/blog/archive/tinymceumbraco-v17-released-and-ready-for-umbraco-17/" title="TinyMCE.Umbraco v17 Released and Ready for Umbraco 17"&gt;Read more about TinyMCE.Umbraco v17 in this post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You will need to decide if you want to keep using TinyMCE or move to TipTap. If you have TinyMCE customizations or complex RTE setups, you may want to keep TinyMCE. The package also gives you the option of easily adding premium features like AI tools. TipTap is based on ProseMirror and is more lightweight so may be preferred in some use cases.&lt;/p&gt;
&lt;h4&gt;Use Umbraco Forms?&lt;/h4&gt;
&lt;p&gt;If you use Umbraco Forms, then you may need to migrate to the new licensing structure. It is now licensed annually instead of a one-time cost. Umbraco Forms is included with Umbraco Cloud so this is less of a concern if you are hosted on Umbraco Cloud. Your choice is to license Umbraco Forms going forward or remove it in favor of a different solution.&lt;/p&gt;
&lt;h4&gt;Review Official Documentation:&lt;/h4&gt;
&lt;p&gt;Take a look at the Version Specific Upgrades documentation guide in the Official Umbraco Documentation: &lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific" target="_blank" title="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific"&gt;Version Specific Upgrades&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There may be other key breaking changes highlighted there that will be important for your site.&lt;/p&gt;
&lt;p&gt;Also, the Upgrade Details document has information on some edge cases and older versions as well: &lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/upgrade-details" target="_blank" title="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/upgrade-details"&gt;Upgrade Details&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Pre-Upgrade Process&lt;/h2&gt;
&lt;p&gt;I'll assume you have solutions for all the above issues and are ready to try out an upgrade! Great! Now, take a step to make sure you have all of this in place:&lt;/p&gt;
&lt;h4&gt;Backup Your Database / Media&lt;/h4&gt;
&lt;p&gt;Always backup your database before starting. You will miss something and may need to iterate a few times to get the migrations just right.&lt;/p&gt;
&lt;p&gt;Also, now is a good time to get a backup of the latest media and pull it locally.&lt;/p&gt;
&lt;h4&gt;Side-by-Side Setup&lt;/h4&gt;
&lt;p&gt;Ideally, you have a v13 site for reference running locally and your future v17 site ready to upgrade. These should be using separate databases and be able to run completely side-by-side. This lets you quickly iterate with v13 changes and re-run the v17 upgrade as needed. In addition, this allows you to quickly verify that the site looks and works as expected.&lt;/p&gt;
&lt;p&gt;If you're using Git, make sure you have each version on separate feature branches.&lt;/p&gt;
&lt;h4&gt;Verify Dev Setup&lt;/h4&gt;
&lt;p&gt;Get your development setup ready for .NET 10 and Umbraco v17:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install .NET 10 SDK&lt;/li&gt;
&lt;li&gt;Update Visual Studio (2022 v17.12+ or 2026)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Verify Latest v13&lt;/h4&gt;
&lt;p&gt;One last check to make sure you're on the latest Umbraco v13 release. If not, do this first.&lt;/p&gt;
&lt;h2&gt;Upgrade Time!&lt;/h2&gt;
&lt;p&gt;Let's do this.&lt;/p&gt;
&lt;h4&gt;1. Update Project Target Frameworks&lt;/h4&gt;
&lt;p&gt;This can be done directly in the .csproj files through the TargetFramework element:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &amp;lt;!-- Change target framework --&amp;gt;
    &amp;lt;TargetFramework&amp;gt;net10.0&amp;lt;/TargetFramework&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2. Update Nuget Packages&lt;/h4&gt;
&lt;p&gt;Update all Umbraco packages to version 17.latest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cms&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cms.Web.Website&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If using Umbraco Cloud update these as well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cloud.Cms&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cloud.StorageProviders.AzureBlob&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Deploy.Cloud&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Deploy.Contrib&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remove these packages as they aren't needed for v17:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cloud.Cms.PublicAccess&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cloud.Identity.Cms&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Cms.Web.BackOffice&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Update all other packages used including Umbraco Extensions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Community.Contentment&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Umbraco.Forms&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Any other packages used that support v17&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3. Delete Build Artifacts&lt;/h4&gt;
&lt;p&gt;Delete all of the &lt;code&gt;bin&lt;/code&gt; and &lt;code&gt;obj&lt;/code&gt; directories in each of the projects of your solution. Umbraco has reported that Visual Studio's "Clean Solution" option is sometimes not enough.&lt;/p&gt;
&lt;h4&gt;4. Code Changes&lt;/h4&gt;
&lt;p&gt;There are a few code changes needed to get the Solution compiling.&lt;/p&gt;
&lt;h5&gt;Program.cs:&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Remove &lt;code&gt;UseInstallerEndpoints()&lt;/code&gt; as this is now automatically setup in v17&lt;/li&gt;
&lt;li&gt;Consider comparing a fresh installed Umbraco v17 &lt;strong&gt;Program.cs&lt;/strong&gt; with your current code and verify that you have the latest patterns in place. I have found other areas that were missing and easy to miss.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;_ViewImports.cshtml:&lt;/h5&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Remove Smidge references:&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;@* REMOVE these lines: *@
@addTagHelper *, Smidge
@inject Smidge.SmidgeHelper SmidgeHelper
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;Generated Models&lt;/h5&gt;
&lt;p&gt;If you used strongly typed models and have Umbraco generate them to code files in your project/solution, then the solution likely won't compile.&lt;/p&gt;
&lt;p&gt;You have two options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Delete all generated models from the directory in your project and set the &lt;code&gt;Umbraco.Cms.ModelsBuilder.ModelsMode&lt;/code&gt; to "InMemoryAuto" from "SourceCodeAuto" or "SourceCodeManual". This will allow you to run the upgrade then switch it back and regenerate them after the v17 back-office is working. If you do this, you will need to install the &lt;code&gt;Umbraco.Cms.DevelopmentMode.Backoffice&lt;/code&gt; to allow the "InMemoryAuto" mode to work in v17.&lt;/li&gt;
&lt;li&gt;Tweak the v13 generated models so they compile and regenerate them after the v17 back-office is working. This involves:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Changing &lt;code&gt;IPublishedContent&lt;/code&gt; from:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;global::Umbraco.Cms.Core.Models.PublishedContent.IPublishedContent Image { get; }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To &lt;code&gt;MediaWithCrops&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
global::Umbraco.Cms.Core.Models.MediaWithCrops Image { get; }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Watch for &lt;code&gt;IEnumerable&lt;/code&gt; references as well as they need to be changed to use &lt;code&gt;MediaWithCrops&lt;/code&gt; as well. Then fix any other build errors that you see.&lt;/p&gt;
&lt;p&gt;Ultimately you want to run the back-office so you can regenerate them. So editing them manually is a temporary solution if you're having trouble compiling the solution.&lt;/p&gt;
&lt;h4&gt;5. Configure Razor Files for .NET v10&lt;/h4&gt;
&lt;h5&gt;Verify Runtime Modes&lt;/h5&gt;
&lt;p&gt;.NET 10 deprecated runtime Razor compilation. Views are now compiled at build time by default.&lt;/p&gt;
&lt;p&gt;Verify your .csproj has the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;   &amp;lt;PropertyGroup&amp;gt;
      &amp;lt;CopyRazorGenerateFilesToPublishDirectory&amp;gt;true&amp;lt;/CopyRazorGenerateFilesToPublishDirectory&amp;gt;
   &amp;lt;/PropertyGroup&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I recommend compiling your Razor files to find any issues at build time instead of at runtime. Remove these lines from your .csproj:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;      &amp;lt;RazorCompileOnBuild&amp;gt;false&amp;lt;/RazorCompileOnBuild&amp;gt;
      &amp;lt;RazorCompileOnPublish&amp;gt;false&amp;lt;/RazorCompileOnPublish&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;More on Runtime modes from the Umbraco Documentation: &lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/runtime-modes" target="_blank" title="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/runtime-modes"&gt;https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/runtime-modes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you need to restore the runtime Razor view compilation or want to use &lt;code&gt;InMemoryAuto&lt;/code&gt; model building, then you will need to install this package:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet add package Umbraco.Cms.DevelopmentMode.Backoffice
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Read more in the Version Specific Guide to determine if you need this package: &lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific#umbraco-17" target="_blank" title="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific#umbraco-17" data-anchor="#umbraco-17"&gt;https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific#umbraco-17&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;6. Optional: Disable Custom Packages&lt;/h4&gt;
&lt;p&gt;If you are planning to migrate custom back-office packages after the initial upgrade is complete, then you could simply disable any custom code and exclude it from the project.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Rename folders in &lt;code&gt;App_Plugins&lt;/code&gt; with custom extensions to have ".disabled" at the end of the folder name.&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;App_Plugins&lt;/code&gt; content include entry in the .csproj to exclude any folders with ".disabled" at the end:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;      &amp;lt;Content Include="App_Plugins\**" Exclude="App_Plugins\*.disabled\**"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you have extensions added via Razor Class Library, you may need to remove the reference or delete the .dll from the &lt;code&gt;bin&lt;/code&gt; folder.  &lt;/p&gt;
&lt;h4&gt;7. Optional: Explicitly Set LocalTimeZone&lt;/h4&gt;
&lt;p&gt;The change to use UTC by default for System Dates may have implications for your site. Read more in the Version Specific Guide on whether you want to explicitly set a server time zone in appsettings.json.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific#umbraco-17" target="_blank" title="https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific#umbraco-17" data-anchor="#umbraco-17"&gt;https://docs.umbraco.com/umbraco-cms/fundamentals/setup/upgrading/version-specific#umbraco-17&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
   "Umbraco": {
      "CMS": {
         "SystemDateMigration": {
            "LocalServerTimeZone": "Eastern Standard Time"
         }
      }
   }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;8. Licensing Changes&lt;/h4&gt;
&lt;p&gt;If you are using Umbraco Deploy or Umbraco Forms, then you will need to migrate the licensing from the file-based .lic to the configuration settings in appsettings.json&lt;/p&gt;
&lt;h5&gt;Remove .lic Files&lt;/h5&gt;
&lt;p&gt;Remove the &lt;code&gt;.lic&lt;/code&gt; files inside of the &lt;code&gt;umbraco/Licenses&lt;/code&gt; folder for Umbraco Deploy and Umbraco Forms.&lt;/p&gt;
&lt;h5&gt;Add Licensing Configuration&lt;/h5&gt;
&lt;p&gt;For Umbraco Cloud sites, you can add these settings to your appsettings.json file. If you have a different hosting setup, you will need to replace "UMBRACO-CLOUD" with your license key.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  "Umbraco": {
    "Licenses": {
      "Products": {
        "Umbraco.Forms": "UMBRACO-CLOUD",
        "Umbraco.Deploy": "UMBRACO-CLOUD"
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Build, Run, and Test!&lt;/h2&gt;
&lt;p&gt;Is the site rendering as expected? Does the back-office load and you are able to login? If yes, you're on your way to v17.&lt;/p&gt;
&lt;p&gt;Now its time to perform your detailed regression testing by verifying all the packages migrated as expected, all property editors are working as expected, and you can make changes as you would expect.&lt;/p&gt;
&lt;p&gt;Here are some items you may want to focus on to verify the upgrade:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The site builds without errors&lt;/li&gt;
&lt;li&gt;All pages render correctly&lt;/li&gt;
&lt;li&gt;Backoffice login works&lt;/li&gt;
&lt;li&gt;Content editing works&lt;/li&gt;
&lt;li&gt;No console errors/warnings&lt;/li&gt;
&lt;li&gt;Block List editors function&lt;/li&gt;
&lt;li&gt;Rich text editors function&lt;/li&gt;
&lt;li&gt;Media uploads work&lt;/li&gt;
&lt;li&gt;Search returns results&lt;/li&gt;
&lt;li&gt;Licenses show as valid&lt;/li&gt;
&lt;li&gt;Forms submit and save entries&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Migrating Custom Extensions to v17&lt;/h2&gt;
&lt;div&gt;Once the back-office and site appear to be working, it's time to migrate those custom extensions to v17. That process is out of scope for this article, but here are some resources to get you started:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/extending/property-editors" target="_blank" title="Building Property Editors in v17"&gt;Building Property Editors in v17&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="noopener" type="external" href="https://docs.umbraco.com/umbraco-cms/customizing/ui-library" target="_blank" title="Umbraco UI Library"&gt;Umbraco UI Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel="noopener" type="external" href="https://kjac.dev/posts/migrating-extensions-from-umbraco-13-to-17/" target="_blank" title="Migrating Extensions from v13 to v17"&gt;Migrating Extensions from v13 to v17&lt;/a&gt; by Kenn Jacobsen&lt;/li&gt;
&lt;li&gt;&lt;a rel="noopener" type="external" href="https://24days.in/umbraco-cms/2024/switching-to-web-components/)" target="_blank" title="From AngularJS to Web Components"&gt;From AngularJS to Web Components&lt;/a&gt; by Jesper Mayntzhusen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="final-thoughts"&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Upgrading to v17 is worth the effort as it is the Umbraco version to take the community into the future. AI, modern web frameworks, enterprise features, and so much more make this an upgrade to prioritize. With v13 support ending December 14th, 2026 the time to start planning an upgrade is now.&lt;/p&gt;
&lt;h2&gt;Need help with your Umbraco upgrade?&lt;/h2&gt;
&lt;p&gt;Reach out to us for an initial consultation so we can help make your upgrade a success!&lt;/p&gt;
&lt;p&gt;&lt;a style="color: #fff; background-image: none;" type="external" href="#section-footer" title="Schedule a Consultation" class="pw-button" data-anchor="#section-footer"&gt;Schedule a Consultation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="change-log"&gt;Change Log&lt;/h2&gt;
&lt;div&gt;2026-01-22: Initial Version&lt;/div&gt;</description>
      <pubDate>Thu, 22 Jan 2026 10:20:17 Z</pubDate>
      <a10:updated>2026-01-22T10:20:17Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4510</guid>
      <link>https://proworks.com/blog/archive/umbraco-anti-patterns-talk-at-uwestfest/</link>
      <category>umbraco</category>
      <title>Umbraco Anti-Patterns Talk at uWestFest</title>
      <description>&lt;p&gt;Mark and I had the privilege of speaking at &lt;a href="https://www.uwestfest.com/" title="uWestfest"&gt;uWestFest '17&lt;/a&gt; this year!  It was a fun time and the conference as a whole really stepped it up.  With the "Bear the Load" workshop, it was 3 quality days for the ProWorks team!  Thanks &lt;a href="https://myscandia.com/"&gt;Scandia&lt;/a&gt; for all the efforts!&lt;/p&gt;
&lt;p&gt;For those who are interested, here are our slides:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://proworks.com/blog/media/1689/umbracoantipatterns.pdf" target="_blank" title="Umbraco Anti-Patterns Presentation Slides"&gt;&lt;/a&gt;&lt;a href="https://proworks.com/blog/media/1011/anti-patterns-presentation-uwest17.pdf" title="anti-patterns-presentation-uwest17.pdf"&gt;Umbraco Anti-Patterns Presentation Slides&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Thanks to everyone who listened and added your own stories!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <pubDate>Thu, 16 Mar 2017 15:40:41 Z</pubDate>
      <a10:updated>2017-03-16T15:40:41Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4515</guid>
      <link>https://proworks.com/blog/archive/must-have-umbraco-packages-and-techniques-our-uwestfest-16-presentation/</link>
      <category>umbraco</category>
      <title>Must Have Umbraco Packages and Techniques - Our uWestFest '16 Presentation</title>
      <description>&lt;p&gt;&lt;img style="float: right; width: 292px; height: 219px;" src="https://proworks.com/media/1669/ccvnyh0uyaat94_.jpg?width=292px&amp;amp;height=219px" alt=""&gt;Last week Alan and I had the honor or presenting at the uWestFest '16 conference in San Diego, CA.  uWestFest is an Umbraco CMS conference for those of us who use it in North America.  Its part festival, part educational, and all relevant to those of us who use Umbraco on an every day basis.&lt;/p&gt;
&lt;p&gt;This year's conference was a ton of fun and it was great to have a big ProWorks presence to meet new people, learn some new things, and bond as a team.  ProWorks was a Silver sponsor and we are proud to make events like this happen.&lt;/p&gt;
&lt;p&gt;On to the presentation!&lt;/p&gt;
&lt;p&gt;We focused on the Content Editor experience and how we as Umbraco developers and designers could make their lives easier.  Some of the things we presented were out of the box in Umbraco and some were packages that enhance the Content Editor experience.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://docs.google.com/presentation/d/1vHBFh4E0yzAAAeelJMmAAz83J9HORWbGn_WIvUYZHWU/embed?start=false&amp;amp;loop=false&amp;amp;delayms=3000" frameborder="0" width="480" height="299" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Here are some links to the packages we presented:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Help Packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/bookshelf/"&gt;Bookshelf&lt;/a&gt; - Integrated help manuals&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/inline-html-help-label/"&gt;ProWorks Inline HTML Help Label&lt;/a&gt; - Inline help for your editors&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Property Editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/nested-content/"&gt;Nested Content&lt;/a&gt; - complex property content lists using Document Types as the model&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/nupickers/"&gt;nuPickers&lt;/a&gt; - a set of nice property editors and data sources with custom views on the data&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/archetype/"&gt;Archetype&lt;/a&gt; - complex property content lists&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/u7-grid-data-type/"&gt;u7 Grid DataType&lt;/a&gt; - Tabular data entry&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/website-utilities/content-picker-with-preview/"&gt;Content Picker with Preview&lt;/a&gt; - Content picking with custom views of the content&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/extended-media-picker/"&gt;Extended Media Picker&lt;/a&gt; - media picker with more data entry options&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/imulus/uWestFest/tree/master/urlpicker"&gt;UrlPicker&lt;/a&gt; - internal, media, and external URLs baked into one editor&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/multi-url-picker/"&gt;MultiUrlPicker&lt;/a&gt; - internal, media, and external URLs baked into one editor&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/angulargooglemaps/"&gt;Angular Maps&lt;/a&gt; - Location picker&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/switcher/"&gt;Switcher&lt;/a&gt; - Pretty "switch" style boolean picker&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/vorto/"&gt;Vorto&lt;/a&gt; - Multi-lingual on a property granularity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Packages to Help You (Umbraco Craftsmen):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/diplo-trace-log-viewer/"&gt;Diplo Trace Log Viewer&lt;/a&gt; - View Umbraco Logs in the Back-office&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/umbraco-core-property-value-converters/"&gt;Core Value Converters&lt;/a&gt; - Convert information to models in your controllers and views&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/usync/"&gt;uSync&lt;/a&gt; - All Umbraco configuration (DB items) written to disk and can be read in for modification&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/hybrid-framework-for-umbraco-v7/"&gt;Hybrid Framework&lt;/a&gt; - Make a more MVC feel to your Umbraco builds&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/ditto/"&gt;Ditto&lt;/a&gt; - Mapping Umbraco content into your strongly typed models&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/linq-to-examine/"&gt;LINQ to Examine&lt;/a&gt; - Use Linq style queries to search Examine&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/collaboration/umbracofilesystemprovidersazure/"&gt;UmbracoFileSystemProvider.Azure&lt;/a&gt; - Store your media in the Cloud&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/memberlistview-for-umbraco-7/"&gt;MemberListView for Umbraco 7&lt;/a&gt; - Dashboard for editing members quickly&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/website-utilities/unversion/"&gt;UnVersion&lt;/a&gt; - Remove un-needed old versions of content to reclaim space&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/the-dashboard/"&gt;TheDashboard&lt;/a&gt; - Visual data about what's happening in your Umbraco install&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grid Packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/leblender/"&gt;LeBlender&lt;/a&gt; - Create grid editors easily&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/doc-type-grid-editor/"&gt;DocType Grid Editor&lt;/a&gt; - Create grid editors easily with Document Types&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/lepainter/"&gt;LePainter&lt;/a&gt; - Skin the back-office grid to be representative of your front-end styles&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/umbraco-grid-renderers/"&gt;Umbraco Grid Renderers&lt;/a&gt; - Swap out Bootstrap for your favorite CSS framework&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/backoffice-extensions/attackmonkey-grid-locker/"&gt;AttackMonkey Grid Locker&lt;/a&gt; - Make specific grid elements Read-only&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BONUS!  Here are some other packages that didn't fit that we like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a href="https://our.umbraco.org/projects/starter-kits/articulate/"&gt;Articulate&lt;/a&gt; - Blogging&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;a href="https://our.umbraco.org/projects/website-utilities/slimsy/"&gt;Slimsy&lt;/a&gt; - Responsive Images&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/umbraco-pro/umbraco-courier-2/"&gt;Courier&lt;/a&gt; - Content Deployment&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/developer-tools/cmsimport/"&gt;CMS Import&lt;/a&gt; - Data Import (Content and Media)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/collaboration/merchello/"&gt;Merchello&lt;/a&gt; - eCommerce&lt;/li&gt;
&lt;li&gt;&lt;a href="https://our.umbraco.org/projects/website-utilities/ucommerce/"&gt;uCommerce&lt;/a&gt; - eCommerce&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <pubDate>Tue, 08 Mar 2016 14:47:43 Z</pubDate>
      <a10:updated>2016-03-08T14:47:43Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4504</guid>
      <link>https://proworks.com/blog/archive/simple-and-cool-use-for-the-nupickers-umbraco-package-for-v7/</link>
      <title>Simple and Cool Use for the nuPickers Umbraco Package for v7</title>
      <description>&lt;p&gt;&lt;img id="__mcenew" style="float: right;" src="https://proworks.com/media/1232/statepicker_300x264.jpg" alt="State Picker" data-mce-fragment="1"&gt;I just wanted to share a great experience I just had with nuPickers, and &lt;a rel="noopener noreferrer" href="http://umbraco.com/" target="_blank"&gt;Umbraco&lt;/a&gt; v7 package, and how easy it was to make a simple U.S. State picker with no custom code and no pre-value heartache. &lt;/p&gt;
&lt;p&gt;In 5 mins (less?) I had my U.S. picker drop down.  Here's how:&lt;/p&gt;
&lt;p&gt;1. Download the &lt;a rel="noopener noreferrer" href="https://our.umbraco.org/projects/backoffice-extensions/nupickers" target="_blank"&gt;nuPickers package&lt;/a&gt; and install it: &lt;a rel="noopener noreferrer" href="https://our.umbraco.org/projects/backoffice-extensions/nupickers" target="_blank"&gt;https://our.umbraco.org/projects/backoffice-extensions/nupickers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Google "json list of states" and find a list of US states in JSON form.  I found this gist: &lt;span&gt;&lt;a href="https://gist.github.com/mshafrir/2646763" target="_parent"&gt;US states in JSON form&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;3. Create a states.json file in a json folder in the Umbraco site (on disk).&lt;/p&gt;
&lt;p&gt;4. Create a new DataType that is of type &lt;!--StartFragment--&gt;nuPickers.JsonDropDownPicker&lt;/p&gt;
&lt;p&gt;5. Configure the pre-value fields to be:&lt;/p&gt;
&lt;p&gt;&lt;!--StartFragment--&gt;Url: ~/json/states.json &lt;br&gt;JSONPath: $..*&lt;br&gt;Key JSONPath: abbreviation&lt;br&gt;Label JSONPath: name&lt;br&gt;Save Format: CSV (your choice)&lt;/p&gt;
&lt;p&gt;6. Add the DataType to my doc type.&lt;/p&gt;
&lt;p&gt;Done.&lt;/p&gt;
&lt;p&gt;It's easy and for things that rarely change (like U.S. States), it was quick, easy, and still easily editable in my Git Repo.&lt;/p&gt;</description>
      <pubDate>Sat, 18 Apr 2015 22:23:12 Z</pubDate>
      <a10:updated>2015-04-18T22:23:12Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4497</guid>
      <link>https://proworks.com/blog/archive/new-umbraco-v7-package-dialog-expander/</link>
      <title>New Umbraco v7 Package: Dialog Expander</title>
      <description>&lt;p&gt;This package is a simple UI enhancement to the &lt;a rel="noopener noreferrer" href="http://umbraco.com" target="_blank"&gt;Umbraco&lt;/a&gt; v7 right-side dialog flyours to allow a content editor to make the dialog bigger or back to normal.  It just gives a bit more room for dialog selections and views.  &lt;/p&gt;
&lt;p&gt;With the new Document Types as grid editors, it can help to have a little extra room when its available.  It can also be used nicely with the new &lt;a rel="noopener noreferrer" href="https://our.umbraco.org/projects/backoffice-extensions/inline-html-help-label" target="_blank"&gt;Inline HTML Help Package&lt;/a&gt; I released on Friday.&lt;/p&gt;
&lt;p&gt;Download the package on &lt;a rel="noopener noreferrer" href="https://our.umbraco.org/" target="_blank"&gt;Our Umbraco&lt;/a&gt; and give it a try! &lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://our.umbraco.org/projects/backoffice-extensions/v7-dialog-expander" target="_blank"&gt;https://our.umbraco.org/projects/backoffice-extensions/v7-dialog-expander&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 04 Apr 2015 17:12:33 Z</pubDate>
      <a10:updated>2015-04-04T17:12:33Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4579</guid>
      <link>https://proworks.com/blog/archive/new-umbraco-package-inline-html-help-label/</link>
      <title>New Umbraco Package: Inline HTML Help Label</title>
      <description>&lt;p&gt;&lt;img style="width: 210px; height: 180px; float: right;" src="https://proworks.com/media/1168/inlinehtmlhelp1.jpg?width=210&amp;amp;height=180" alt="Inline HTML Help Label"&gt;&lt;/p&gt;
&lt;p&gt;On a few recent &lt;a rel="noopener noreferrer" href="http://umbraco.com/" target="_blank" title="Umbraco CMS"&gt;Umbraco&lt;/a&gt; builds we have had the need to add a small amount of inline help to the back-office interface to help content editors with content entry.  To enable this behavior we created the &lt;a rel="noopener noreferrer" href="https://our.umbraco.org/projects/backoffice-extensions/inline-html-help-label" target="_blank"&gt;Inline HTML Help Label package&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This package adds a new property editor that allows you to show HTML in your content pages as properties.  It's HTML so it can display images or links to more information to content editors.  It has also been used to provide a Help tab on a Document Type for specific help for that page type and what they need to know.&lt;/p&gt;
&lt;p&gt;You can create several Data Types with this property editor each with their own HTML as prevalues.&lt;/p&gt;
&lt;p&gt;In addition to the inline html as a property, you can specify more HTML to be displayed on a dialog flyout.  This could be used to give in depth info about the page.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Download and try the package here: &lt;a href="https://our.umbraco.org/projects/backoffice-extensions/inline-html-help-label"&gt;Inline HTML Help Label Package on Our Umbraco&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;More information and the source code is on Bitbucket: &lt;a href="https://bitbucket.org/proworks/proworks-inline-html-help-label"&gt;ProWorks Inline HTML Help Label Git Repository&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Let me know if you have any problems or questions!&lt;/p&gt;</description>
      <pubDate>Wed, 01 Apr 2015 20:49:36 Z</pubDate>
      <a10:updated>2015-04-01T20:49:36Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4596</guid>
      <link>https://proworks.com/blog/archive/how-to-find-if-umbraco-7-debugging-is-enabled-in-angularjs-or-javascript-in-the-backoffice/</link>
      <title>How to find if Umbraco 7 Debugging is Enabled in AngularJS or Javascript in the Backoffice</title>
      <description>&lt;p&gt;When creating a new functionality in the &lt;a rel="noopener noreferrer" href="http://umbraco.github.io/Belle/" target="_blank" title="Umbraco 7 Documentation"&gt;Umbraco 7&lt;/a&gt; backoffice such as a property editor or custom section, it is sometimes necessary to print out some debugging information to verify that the models are what you expect.&lt;/p&gt;
&lt;p&gt;Rather than commenting out your {{myModel | json}} &lt;a rel="noopener noreferrer" href="https://angularjs.org/" target="_blank" title="AngularJS Documentation"&gt;AngularJS&lt;/a&gt; bindings, why not simply only show them if Umbraco has debugging turned on?&lt;/p&gt;
&lt;p&gt;Turns out, this is very easy as Umbraco already has a global ServerVariables collection that you can check:&lt;/p&gt;
&lt;pre&gt;Umbraco.Sys.ServerVariables.isDebuggingEnabled&lt;/pre&gt;
&lt;p class="p1"&gt;If you want to show/hide information based on that in AngularJS, simply assign it to a property on the $scope of your controller:&lt;/p&gt;
&lt;pre&gt;$scope.showDebug = Umbraco.Sys.ServerVariables.isDebuggingEnabled;&lt;/pre&gt;
&lt;p&gt;Then check for it in your view:&lt;/p&gt;
&lt;pre&gt;&amp;lt;div data-ng-show="showDebug"&amp;gt;{{myModel | json}}&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;That's it!  &lt;/p&gt;</description>
      <pubDate>Thu, 05 Jun 2014 11:55:26 Z</pubDate>
      <a10:updated>2014-06-05T11:55:26Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4514</guid>
      <link>https://proworks.com/blog/archive/how-to-pass-data-to-the-umbraco-7-dialogservice-on-open/</link>
      <title>How to Pass Data to the Umbraco 7 dialogService on open()</title>
      <description>&lt;p&gt;If you're building a package for Umbraco 7 using AngularJS and you eventually find yourself needing to use the dialogService, there is an undocumented parameter that may be of some help.&lt;/p&gt;
&lt;p&gt;I found myself in a situation where I needed an edit button on a list of items in an ngRepeat and the edit button needed to pass in its model to the dialogService.  Well, according to the &lt;a rel="noopener noreferrer" href="http://umbraco.github.io/Belle/#/api/umbraco.services.dialogService" target="_blank" title="Umbraco 7 dialogService"&gt;Umbraco 7 developer documentation&lt;/a&gt;, the only way seemed to be to tie it to the scope or create a new scope.&lt;/p&gt;
&lt;p&gt;However, looking through the Umbraco 7 source it turns out there is an additional parameter called dialogData that allows the open() method to pass in additional data that the dialog controller can use.&lt;/p&gt;
&lt;p&gt;You can see this in the defaults object in the dialog.service.js code:&lt;/p&gt;
&lt;pre&gt;           var defaults = {
              container: $("body"),
              animation: "fade",
              modalClass: "umb-modal",
              width: "100%",
              inline: false,
              iframe: false,
              show: true,
              template: "views/common/notfound.html",
              callback: undefined,
              closeCallback: undefined,
              element: undefined,
              //this allows us to pass in data to the dialog if required 
              //which can be used to configure the dialog
              //and re-use it for different purposes. It will set on to the 
              //$scope.dialogData if it is defined.
              &lt;strong&gt;dialogData: undefined&lt;/strong&gt;
           };&lt;/pre&gt;
&lt;p&gt; It appears to be used internally as well so I assume its here to stay, but since its undocumented you should verify when new releases are published.&lt;/p&gt;</description>
      <pubDate>Tue, 25 Feb 2014 06:09:13 Z</pubDate>
      <a10:updated>2014-02-25T06:09:13Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4547</guid>
      <link>https://proworks.com/blog/archive/proworks-is-proud-to-sponsor-the-first-north-american-umbraco-festival/</link>
      <title>ProWorks is Proud to Sponsor the First North American Umbraco Festival</title>
      <description>&lt;p&gt;&lt;a rel="noopener noreferrer" href="http://www.uwestfest.com/sponsors/" target="_blank" title="ProWorks is sponsoring uWestFest"&gt;&lt;img style="width: 210px; height: 180px; float: right;" src="https://proworks.com/media/1241/umbracalope.png?width=210&amp;amp;height=180" alt="Umbracalope"&gt;ProWorks is proud to be a sponsor&lt;/a&gt; at the first ever &lt;a rel="noopener noreferrer" href="http://www.uwestfest.com/" target="_blank" title="uWestFest - Umbraco North American Festival"&gt;Umbraco Festival in North America&lt;/a&gt; this coming March! UWestFest will commence at the Excalibur Hotel &amp;amp; Casino in Las Vegas, Nevada on March 21, 2014 and will feature an opening keynote speech from the Chief Officer at Umbraco headquarters, Neils Hartvig, along with the closing keynote given by the North American Umbraco lead, Paul Sterling.&lt;/p&gt;
&lt;p&gt;At uWestFest, speakers from around the country and beyond will be presenting about various aspects of the Umbraco interface and how to get the most out of your Umbraco experience. We are delighted to announce that our very own &lt;a rel="noopener noreferrer" href="http://www.uwestfest.com/speakers/#speaker-1172" target="_blank" title="Loyan Roylance at uWestFest"&gt;Loyan Roylance&lt;/a&gt; will be among the many knowledgeable presenters.&lt;/p&gt;
&lt;p&gt;ProWorks – along with Mindfly, Fyin.com, and Imulus – will be sponsoring the event. We will be sending a crew of our best and brightest developers to join in on the fun. Presentation topics range from getting to know the new Umbraco 7 interface, frontend fundamentals, the future of the Umbraco community and many more.&lt;/p&gt;
&lt;p&gt;We are very excited about this festival and are happy to play a part in bringing it to North America. For more information on uWestFest check out the website at &lt;a rel="noopener noreferrer" href="http://www.uwestfest.com/" target="_blank" title="uWestFest"&gt;http://www.uwestfest.com/&lt;/a&gt; and register to join in at &lt;a rel="noopener noreferrer" href="https://www.eventbrite.com/e/uwestfest-tickets-9777832761" target="_blank" title="uWestFest Tickets"&gt;https://www.eventbrite.com/e/uwestfest-tickets-9777832761&lt;/a&gt;. We hope to see all of you there!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;– The ProWorks Team&lt;/p&gt;</description>
      <pubDate>Mon, 10 Feb 2014 08:59:58 Z</pubDate>
      <a10:updated>2014-02-10T08:59:58Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4587</guid>
      <link>https://proworks.com/blog/archive/disabling-request-validation-in-umbraco-cms/</link>
      <title>Disabling Request Validation in Umbraco CMS</title>
      <description>&lt;p&gt;In a recent upgrade of a very old Umbraco CMS WebForms site to 6.x I found a trick with getting the request validation disabled on a template level instead of for the entire web site through the web.config.&lt;/p&gt;
&lt;p&gt;I'm posting this blog because the original blog by Grant Thomas seems to have disappeared.  The blog was &lt;a target="_blank" href="http://stackoverflow.com/a/7358888"&gt;referenced on Stack Overflow&lt;/a&gt; and luckily its still available as a &lt;a target="_blank" href="http://webcache.googleusercontent.com/search?q=cache:oBdv2c0PCuIJ:eitherxor.retox-1.titaninternet.co.uk/blog/disabling-request-validation-in-umbraco/+&amp;amp;cd=4&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us"&gt;cache on Google&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Generally, you will recieve an error in the Javascript Console such as:&lt;/p&gt;
&lt;pre class="html"&gt;A potentially dangerous Request.Form value was detected from the client&lt;/pre&gt;
&lt;p&gt;Unfortunately, there is no way to disable request validation on a page level as pages are virtual things in Umbraco. Luckily, someone thought of this and they created a way to disable validation on a template level.&lt;/p&gt;
&lt;p&gt;Add this to the template markup:&lt;/p&gt;
&lt;pre class="prettyprint" style="padding: 6px; margin: 12px; overflow: auto; background-color: #dfdfdf; color: #000000; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="tag" style="padding: 0px; margin: 0px; color: #000088;"&gt;&amp;lt;umbraco:DisableRequestValidation&lt;/span&gt;&lt;span class="pln" style="padding: 0px; margin: 0px; color: #000000;"&gt; &lt;/span&gt;&lt;span class="atn" style="padding: 0px; margin: 0px; color: #660066;"&gt;runat&lt;/span&gt;&lt;span class="pun" style="padding: 0px; margin: 0px; color: #666600;"&gt;=&lt;/span&gt;&lt;span class="atv" style="padding: 0px; margin: 0px; color: #008800;"&gt;"server"&lt;/span&gt;&lt;span class="pln" style="padding: 0px; margin: 0px; color: #000000;"&gt; &lt;/span&gt;&lt;span class="tag" style="padding: 0px; margin: 0px; color: #000088;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you need something more custom, then refer to the &lt;a target="_blank" href="http://webcache.googleusercontent.com/search?q=cache:oBdv2c0PCuIJ:eitherxor.retox-1.titaninternet.co.uk/blog/disabling-request-validation-in-umbraco/+&amp;amp;cd=4&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us"&gt;cache of the blog post&lt;/a&gt; for more information.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Nov 2013 20:25:00 Z</pubDate>
      <a10:updated>2013-11-08T20:25:00Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4491</guid>
      <link>https://proworks.com/blog/archive/how-to-redirect-the-umbraco-media-path-to-another-location/</link>
      <title>How to Redirect the Umbraco Media Path to Another Location</title>
      <description>&lt;p class="highlightbox"&gt;Today we have a guest post from my cousin, David Prothero, who is now implementing Umbraco for his company.&lt;br&gt;&lt;br&gt;They recently figured out a solution to a problem that we hadn't had before so I asked him to write up something so he could share the knowledge with the rest of the community.  &lt;br&gt;&lt;br&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 200px; height: 200px; float: right;" src="https://proworks.com/media/1086/1375307029_folder_images_blue_200x200.jpg?width=200&amp;amp;height=200" alt="Media Folder"&gt;Our company recently selected Umbraco as the CMS for a new product we are developing. Having developed products on a home-grown CMS for years, we’d learned one very important lesson when developing these systems:&lt;/p&gt;
&lt;p&gt;Keep &lt;span style="text-decoration: underline;"&gt;user managed content&lt;/span&gt; and &lt;span style="text-decoration: underline;"&gt;developer managed code&lt;/span&gt; separate.&lt;/p&gt;
&lt;p&gt;Developer managed code should be kept in a source control system (we use git) and user managed content should, ideally, be in the database or at least in a centrally managed location. As those who work with Umbraco probably know, the system stores most content in the database. However, it saves images, CSS, views, macros, and other media on the filesystem, in the directory where your Umbraco site lives.&lt;/p&gt;
&lt;p&gt;This directory is where we have our git repository initialized from. For CSS, views, and macros, we found this acceptable. These things will be managed by the developers. There are even some static images that will be handled by the developers, so for this we just created a ~/static-images / folder and let git manage those files as well.&lt;/p&gt;
&lt;p&gt;That left us with the ~/oldmedia/ folder…definitely user managed content. We needed a way to be able to redirect this to another location. Searching our.umbraco.com led us to the ~/Config/FileSystemProviders.config file, in which the stock version has something like:&lt;/p&gt;
&lt;pre&gt;&amp;lt;Provider alias="media" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core"&amp;gt;
  &amp;lt;Parameters&amp;gt;
    &amp;lt;add key="virtualRoot" value="~/media/" /&amp;gt;
  &amp;lt;/Parameters&amp;gt;
&amp;lt;/Provider&amp;gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;OK, simple, we just change the “virtualRoot” key to point to another folder, right? Yes and no…Umbraco requires that the path begin with “~/”. In other words, the path has to be within your Umbraco web site. It makes sense when you know how Umbraco works. It needs two things: 1) a path that it has control over to write uploaded files to, and 2) a path that is accessible via http URL so it can include the images in pages it serves to browsers.&lt;/p&gt;
&lt;p&gt;We started thinking we were going to have to setup a virtual directory in IIS so that Umbraco would think that the path was part of the website, but we could then direct it to another location. This may yet work for people, but we decided against it in order to keep the IIS configuration as stock as possible and allow developers to run IISExpress on their local machines.&lt;/p&gt;
&lt;p&gt;In almost desperation, we looked in the Umbraco source code, particularly at the Umbraco.Core.IO.PhysicalFileSystem class you can see mentioned in the config file above. What we found was that there were two other parameters, not discussed in the Umbraco documentation…”rootPath” and “rootUrl”. Our config now looks like this:&lt;/p&gt;
&lt;pre&gt;&amp;lt;Provider alias="media" type="Umbraco.Core.IO.PhysicalFileSystem, Umbraco.Core"&amp;gt;
  &amp;lt;Parameters&amp;gt;
    &amp;lt;add key="rootPath" value="\\[ourdomain].net\dfstest\Media" /&amp;gt;
    &amp;lt;add key="rootUrl" value="http://media.[ourdomain].net/media/" /&amp;gt;
  &amp;lt;/Parameters&amp;gt;
&amp;lt;/Provider&amp;gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;“rootPath” specifies a Windows filesystem path where Umbraco can save uploaded files. It’s a standard Windows file path (not a URL path). In our example, we are using a &lt;a href="http://en.wikipedia.org/wiki/Distributed_File_System_%28Microsoft%29"&gt;DFS&lt;/a&gt; path so the files will be highly available anywhere on our network.&lt;/p&gt;
&lt;p&gt;“rootUrl” is the URL that Umbraco will prepend to the media filename when rendering pages to browsers. There needs to be some kind of web server listening to this URL &lt;span style="text-decoration: underline;"&gt;and&lt;/span&gt; that URL needs to map to the physical Windows path specified in rootPath (or at least a replicated copy of it). In our case, we setup an IIS website, but it could even be Apache or something else. It doesn’t matter. In fact, we are considering having the rootUrl point to an Amazon S3 bucket with a background process that replicates from the DFS path on our network to the Amazon S3 bucket.&lt;/p&gt;
&lt;p&gt;Since this was an undocumented configuration setting, we thought we would share our findings with the world. Hopefully this is something you can use.&lt;/p&gt;
&lt;p&gt;- David Prothero, July 2013&lt;/p&gt;</description>
      <pubDate>Mon, 29 Jul 2013 15:49:34 Z</pubDate>
      <a10:updated>2013-07-29T15:49:34Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4536</guid>
      <link>https://proworks.com/blog/archive/permanent-301-redirect-domaincom-to-wwwdomaincom-in-umbraco/</link>
      <title>Permanent 301 Redirect domain.com To www.domain.com in Umbraco</title>
      <description>&lt;p&gt;&lt;a href="/blog/wp-content/uploads/2011/03/PWBlogIcon_Developer.png"&gt;&lt;img src="/blog/wp-content/uploads/2011/03/PWBlogIcon_Developer.png" width="175" height="129" alt="Umbraco Developer Tutorial" class="alignright size-full wp-image-1207"/&gt;&lt;/a&gt;Most SEO experts say that when you have two or more domains or URLs that have duplicate content, then Google will penalize you. Google and SEO experts recommend that you use 301 redirects to tell search engines that you have duplicate content and to forward to the correct domain or url.&lt;/p&gt;
&lt;p&gt;This is something we generally do in IIS (see &lt;a href="/blog/2009/05/06/how-to-301-redirect-in-iis/"&gt;How to 301 Redirect example.com to www.example.com in IIS&lt;/a&gt;), but sometimes hosts don't give you access to IIS and you have to make do.&lt;/p&gt;
&lt;p&gt;I found and tweaked this from an old forum post ( &lt;a href="http://forum.umbraco.org/yaf_postst7818_url-rewrite-for-httpdomaincom-to-httpwwwdomaincom.aspx"&gt; url rewrite for http://domain.com to http://www.domain.com&lt;/a&gt; - Thanks Bob!).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Go to your "Config" directory in your main Umbraco website directory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Edit the "URLRewriting.config" file in your favorite text editor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Add the following code between the &amp;lt;rewrites&amp;gt;(paste here)&amp;lt;/rewrites&amp;gt; tags:&lt;/p&gt;
&lt;p&gt;&amp;lt;add name="SEOfix"  virtualUrl="^http\://domain.com/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="http://www.domain.com/$1" redirect="Domain" redirectMode="Permanent" ignoreCase="true" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;add name="SEOfixSSL"  virtualUrl="^https\://domain.com/(.*)" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="https://www.domain.com/$1" redirect="Domain" redirectMode="Permanent" ignoreCase="true" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Save the file and test.&lt;/p&gt;
&lt;p&gt;That's it!&lt;/p&gt;
&lt;p&gt;This is clearly a very simple solution.  If you want something more robust, then please check out this post from Mike Taylor: &lt;a href="http://umbraco.miketaylor.eu/2010/11/03/url-rewriting-and-seo/" target="_blank"&gt;URL Rewriting and SEO&lt;/a&gt;.  It has some great discussion and is Umbraco-centric despite the title.  Thanks Stefan for the recommendation!&lt;/p&gt;</description>
      <pubDate>Tue, 29 Mar 2011 17:57:56 Z</pubDate>
      <a10:updated>2011-03-29T17:57:56Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4508</guid>
      <link>https://proworks.com/blog/archive/notes-and-experiences-upgrading-umbraco-40x-to-461-and-470/</link>
      <title>Notes and Experiences Upgrading Umbraco 4.0.x to 4.6.1 and 4.7.0</title>
      <description>&lt;p&gt;&lt;a href="/blog/wp-content/uploads/2011/03/PWBlogIcon_Developer.png"&gt;&lt;img src="/blog/wp-content/uploads/2011/03/PWBlogIcon_Developer.png" width="175" height="129" alt="Umbraco Developer Tutorial" class="aligncenter size-full wp-image-1207"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a series of notes and what I could cobble together from various Umbraco upgrade articles and sources.  I also found a few issues that weren't documented by anyone that gave me some grief.  I'll likely add any 4.7 specific items as well when I get a chance to test this process with that version.&lt;/p&gt;
&lt;p&gt;I've found that you may want to upgrade from 4.0.x to 4.5.2 then to 4.7 because the upgrade install script didn't seem to run in the 4.6.1 upgrade I performed.  Basically, the database wasn't updated properly when I went straight to 4.6.1.&lt;/p&gt;
&lt;h2&gt;My Notes:&lt;/h2&gt;
&lt;p&gt;From &lt;a href="http://our.umbraco.org/wiki/install-and-setup/upgrading-an-umbraco-installation"&gt; http://our.umbraco.org/wiki/install-and-setup/upgrading-an-umbraco-installation&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Backup DB and Files of existing site&lt;/li&gt;
&lt;li&gt;Create new web site and db for "upgrade" site&lt;/li&gt;
&lt;li&gt;Manually merge web.config for new 4.0 changes to upgrade site (use &lt;a href="http://www.scootersoftware.com/" target="_blank"&gt;Beyond Compare&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Manually merge /config files
&lt;ul&gt;
&lt;li&gt;Remove /bin from xlstExtensions.config&lt;/li&gt;
&lt;li&gt;Remove /bin/ from restExtensions.config&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Copy&lt;/span&gt; Merge these from the &lt;a href="http://umbraco.codeplex.com/releases/view/59025" target="_blank"&gt;4.6.1 base install on codeplex&lt;/a&gt; or &lt;a href="http://umbraco.codeplex.com/releases/view/62573" target="_blank"&gt;4.7 base code&lt;/a&gt;to the new site
&lt;ul&gt;
&lt;li&gt;I have found it better to copy using beyond compare so my packages don't disappear and any UI.xml or locale changes don't get lost.  But if you prefer, copy away!&lt;/li&gt;
&lt;li&gt;/app_data&lt;/li&gt;
&lt;li&gt;/app_browsers&lt;/li&gt;
&lt;li&gt;/app_code&lt;/li&gt;
&lt;li&gt;/bin&lt;/li&gt;
&lt;li&gt;/data&lt;/li&gt;
&lt;li&gt;/install&lt;/li&gt;
&lt;li&gt;/umbraco&lt;/li&gt;
&lt;li&gt;/umbraco_client&lt;/li&gt;
&lt;li&gt;default.aspx&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Republish the content
&lt;ul&gt;
&lt;li&gt;From the Content section/folder in Umbraco&lt;/li&gt;
&lt;li&gt;Or: &lt;a href="http://our.umbraco.org/wiki/reference/api-cheatsheet/publishing-and-republishing"&gt; http://our.umbraco.org/wiki/reference/api-cheatsheet/publishing-and-republishing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other upgrade notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verify your /umbraco/config/create/UI.xml still has your custom items in it.  It may have been over-written by the copy above.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://our.umbraco.org/wiki/about/roadmap/umbraco-45/upgrading-to-umbraco-45"&gt; http://our.umbraco.org/wiki/about/roadmap/umbraco-45/upgrading-to-umbraco-45&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delete App_global.asax.dll&lt;/li&gt;
&lt;li&gt;Verify "UseLegacyXmlSchema" element in umbracoSettings.config is set properly (false if no XSLT conversion has been done)&lt;/li&gt;
&lt;li&gt;Go to http://www.yourupgradesite.com/install/
&lt;ul&gt;
&lt;li&gt;Go through the upgrade install script&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.littlewebempire.com/blog/2010/10/29/update-umbraco-from-4021-to-452"&gt; http://www.littlewebempire.com/blog/2010/10/29/update-umbraco-from-4021-to-452&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You may need to add the Media Recycle bin to the UmbracoAppTree and UmbracoNode tables in the DB&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Verify the \App_Data\TEMP\ClientDependency folder has stuff in it.  Delete anything in the folder and reload the website&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Package Upgrades / Changes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Copy old /data/packages/ folder contents to /App_Data/Packages/&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then you need to test that your packages work and are compatible with this latest version.  Here is a place to start: &lt;a href="http://our.umbraco.org/wiki/reference/packaging/umbraco-45-compatibility/umbraco-45-package-testing"&gt; http://our.umbraco.org/wiki/reference/packaging/umbraco-45-compatibility/umbraco-45-package-testing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Articles that may be helpful for package issue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/blog/2011/03/29/fix-yet-another-media-picker-4-for-upgrade-from-umbraco-4-0-x-to-4-5-2/" target="_blank"&gt;Fix 'Yet Another Media Picker 4′ For Upgrade From Umbraco 4.0.x to 4.5.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Umbraco 4.7 Additions:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;There are quite a few dlls to remove to keep your XSLT working.  This forum article was VERY helpful in identifying the specific URLs to remove: &lt;a href="http://our.umbraco.org/forum/getting-started/installing-umbraco/17890-XSLT-macros-not-getting-rendered-after-upgrading-to-47-RC?p=0" target="_blank"&gt;XSLT macros not getting rendered after upgrading to 4.7 RC&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Remove:
&lt;ul&gt;
&lt;li&gt;Iron*.dll (all dlls in your /bin directory starting with "Iron", like IronPython.dll and IronRuby.dll)&lt;/li&gt;
&lt;li&gt;Microsoft.Scripting*.dll&lt;/li&gt;
&lt;li&gt;Microsoft.Dynamic.dll&lt;/li&gt;
&lt;li&gt;umbraco.macroEngines.legacy.dll&lt;/li&gt;
&lt;li&gt;RazorEngine.Core.dll&lt;/li&gt;
&lt;li&gt;RazorEngine.Templates.dll&lt;/li&gt;
&lt;li&gt;VistaDB*.dll&lt;/li&gt;
&lt;li&gt;I'll add more if they are mentioned...&lt;/li&gt;
&lt;li&gt;From comments:&lt;/li&gt;
&lt;li&gt;umbraco.standardFormhandlers.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's it so far.  Please feel free to add anything you needed to do.  I'll edit as I find further issues.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;UPDATE: If you need help upgrading to 4.11 or beyond take a look at this post: &lt;a href="http://www.auros.co.uk/blog/index.php/2013/01/14/upgrade-your-umbraco-site/" target="_blank"&gt;Upgrade Your Umbraco Site...&lt;/a&gt;&lt;/p&gt;
&lt;div id="_mcePaste" style="position: absolute; left: -10000px; top: Jason Protheropx; width: 1px; height: 1px; overflow: hidden;"&gt;
&lt;h1 class="entry-title"&gt;Fix 'Yet Another Media Picker 4′ For Upgrade From Umbraco 4.0.x to 4.5.2&lt;/h1&gt;
&lt;/div&gt;</description>
      <pubDate>Tue, 01 Mar 2011 16:20:11 Z</pubDate>
      <a10:updated>2011-03-01T16:20:11Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4468</guid>
      <link>https://proworks.com/blog/archive/sitecore-vs-umbraco-terminology/</link>
      <title>Sitecore vs. Umbraco Terminology</title>
      <description>&lt;p&gt;Here at ProWorks we have built a web site using the &lt;a href="http://www.sitecore.net/"&gt;Sitecore CMS&lt;/a&gt; (&lt;a href="https://secure.wasatchfunds.com/"&gt;Wasatch Funds&lt;/a&gt;) and had a great experience. We are Sitecore Partners and like to use Sitecore when it makes sense. Sometimes the web sites we are asked to build have budget constraints or are just to small to warrant using Sitecore. In that case we typically have been using &lt;a href="http://www.sitefinity.com/"&gt;Sitefinity&lt;/a&gt; to build smaller, simpler sites (&lt;a href="http://www.forestseedlingnetwork.com/"&gt;Forest Seedling Network&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;We like Sitefinity, but an open source project called &lt;a href="http://umbraco.org/"&gt;Umbraco&lt;/a&gt; recently caught our eye. The similarity to many of the Sitecore like functions is great because we like the Sitecore experience generally. Of course, the functionality may be similar but the terminology is not. Therefore, I'm creating a terminology map to help me keep some of this straight.&lt;/p&gt;
&lt;p&gt;This will be a work in progress and here is what I have so far:&lt;/p&gt;
&lt;table border="0" cellpadding="3"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th class="mceSelected"&gt;Sitecore&lt;/th&gt;&lt;th class="mceSelected"&gt;Umbraco&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;Templates&lt;/td&gt;
&lt;td class="mceSelected"&gt;Document Types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;Visual Rendering editor&lt;/td&gt;
&lt;td class="mceSelected"&gt;Templates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;Layout&lt;/td&gt;
&lt;td class="mceSelected"&gt;Master Template&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;SubLayout&lt;/td&gt;
&lt;td class="mceSelected"&gt;Sub Templates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;Edit Rich Text Editor settings&lt;/td&gt;
&lt;td class="mceSelected"&gt;Stylesheets (can add generated styles to Rich Text Editor)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;Renderings (XSLT/Web Controls)&lt;/td&gt;
&lt;td class="mceSelected"&gt;Macros (XSLT/Web Controls)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="mceSelected"&gt;Similar to using items as picklists (somewhat)&lt;/td&gt;
&lt;td class="mceSelected"&gt;Data Type to create new field editors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;So far there doesn't appear to be an equivalent to Sitecore SubLayouts in Umbraco (to be able to have placeholders inside of controls/macros).&lt;/p&gt;
&lt;p&gt;EDIT: Sub-templates seem to perform the general functionality of Sitecore Sublayouts.&lt;/p&gt;
&lt;p&gt;Anything I'm missing or confused on?&lt;/p&gt;</description>
      <pubDate>Mon, 13 Jul 2009 15:19:26 Z</pubDate>
      <a10:updated>2009-07-13T15:19:26Z</a10:updated>
    </item>
    <item>
      <guid isPermaLink="false">4469</guid>
      <link>https://proworks.com/blog/archive/how-to-301-redirect-examplecom-to-wwwexamplecom-in-iis/</link>
      <title>How to 301 Redirect example.com to www.example.com in IIS</title>
      <description>&lt;p&gt;Most SEO experts say that when you have two or more domains or URLs that have duplicate content, then Google will penalize you.  &lt;a href="http://groups.google.com/group/Google_Webmaster_Help/web/faqs-for-crawling-indexing-and-ranking-2" title="FAQs for Crawling, Indexing, and Ranking"&gt;Google and SEO experts recommend that you use 301 redirects&lt;/a&gt; to tell search engines that you have duplicate content and to forward to the correct domain or url.&lt;/p&gt;
&lt;p&gt;Generally in the Linux/Apache world that means &lt;a href="http://www.seobook.com/archives/001714.shtml" title=".htaccess, 301 Redirects &amp;amp; SEO: Guest Post by NotSleepy"&gt; modifying the .htaccess file to redirect&lt;/a&gt; example.com to www.example.com.&lt;/p&gt;
&lt;p&gt;In IIS it gets a little more complicated, but isn't too bad.  Here's an easy and effective way I've found to do it.  This is assuming that you already have a website in IIS that is bound to www.example.com and example.com.  I'll keep it pretty simple to minimize confusion.  If you're an expert, scroll down for the good stuff.&lt;/p&gt;
&lt;p&gt;1. Open the Internet Information Services (IIS) Manager in Administrative Tools.&lt;/p&gt;
&lt;p&gt;2.  Create a new website that is bound to the example.com domain.&lt;/p&gt;
&lt;p&gt;This involves right-clicking on the "Web Sites" folder under the server name in IIS and selecting "New &amp;gt; Web Site...". In the Web Site creation wizard name the site something like Example.com Redirect so you remember what the purpose of the site is.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/wp-content/uploads/2009/05/iis_createwebsite_1-300x232.png" width="300" height="232" alt="IIS Create WebSite Wizard - 1" class="alignnone size-medium wp-image-145"/&gt;&lt;/p&gt;
&lt;p&gt;Then make sure your host header for the new web site is the domain without the www.  In this case we will use example.com:&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/wp-content/uploads/2009/05/iis_createwebsite_2.png" width="284" height="213" alt="IIS Host Header" class="alignnone size-full wp-image-146"/&gt;&lt;/p&gt;
&lt;p&gt;Browse to the same location for the files as the www.example.com web site and allow anonymous access.&lt;/p&gt;
&lt;p&gt;Finish out the wizard.&lt;/p&gt;
&lt;p&gt;3.Change the Home Directory to redirect to the www web site.&lt;/p&gt;
&lt;p&gt;Right-click on the new redirect web site and select "Properties...".  Go to the "Home Directory" tab.&lt;/p&gt;
&lt;p&gt;Change the content to point to "A redirection to a URL" and redirect to the www site (www.example.com).&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/wp-content/uploads/2009/05/iis_redirect-300x291.png" width="300" height="291" alt="IIS Redirect" class="alignnone size-medium wp-image-147"/&gt;&lt;/p&gt;
&lt;p&gt;Click OK and you should be done!&lt;/p&gt;
&lt;p&gt;Now you won't get penalized by Google for having duplicate sites and your customers can still find you without typing in the www.&lt;/p&gt;
&lt;p&gt;Anything I missed?  Any comments?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; For doing this in IIS7, take a look at this great tutorial: &lt;a href="http://www.trainsignal.com/blog/iis7-redirect-windows-server-2008" target="_blank" title="HTTP Redirection in IIS 7 on Windows Server 2008"&gt;HTTP Redirection in IIS 7 on Windows Server 2008&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 2:&lt;/strong&gt; If HTTP Redirection doesn't seem to be available in IIS 7, then follow this tutorial on how to install it: &lt;a href="http://toastergremlin.com/?p=82" target="_blank"&gt;Install HTTP Redirection in IIS7&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 04 May 2009 17:44:45 Z</pubDate>
      <a10:updated>2009-05-04T17:44:45Z</a10:updated>
    </item>
  </channel>
</rss>