Archive for Solutions

CorasWorks Global Variables permissions explained

Working within a highly secure environment recently, I had a need to detail out the effective permissions necessary to leverage the CorasWorks Global Variables (GVs) – specifically, the client wanted to understand the absolute minimum permissions needed to leverage the GVs and so I thought it worthwhile to share here.

First, know that when CorasWorks Central Configuration is first enabled on a web application, a custom list entitled “CWActionsGlobalSettings” is created within the selected Central Config site. This list will effectively store the variables in an XML blob, inside a single List Item, that is managed by the GUI that is the Global Variable Manager.

Next – and this is key – the user who creates the first GV must have at least Owner rights on the “CWActionsGlobalSettings” List. This is because upon creation of the first GV, a multi-line text column entitled “CWActionsGlobalSettings” (yes, same name as the List itself) is created within the List and the XML blob is first created, with the first GV present.

Now going forward, only Contribute rights are needed for those that you want to be able to manage GVs, as Contribute provides them insert & edit rights to that special List Item. However, because Contribute rights does not allow a user to add columns to a list, a user with those rights will not be able to create that first GV.

And finally, as is hopefully fairly obvious, any users who you want to be able to read GV values (i.e. if a GV is used in a solution they’re using), end users must have Read rights to the ”CWActionsGlobalSettings” List. The inverse is also true; if a user does not have Read rights to that list, they will not be able to see the GVs, what their value is or use any part of a solution that leverages a GV.

BYOF – Responsive SharePoint Apps with CorasWorks

BYOF? Bring Your Own Framework – meaning whether it’s Bootstrap, AngularJS, Durandal, Foundation or any other (maybe still-to-be-invented) responsive framework, you can use CorasWorks to accelerate the development & expand the functionality of your responsive apps on SharePoint.

There are three core capabilities that the CorasWorks stack provides that will facilitate creating these richer solutions:

  1. The CorasWorks Application Designer as the base for you content management process. Easily create a site using the App Designer and you’ve got all the built-in capability you need to define, manage & even work through approvals for the content that will flow into your responsive app.
  2. The CorasWorks Application Service (CAPS) as your API for not just your data access but also dynamic HTML generation. Sure the native CSOM or REST API will provide access to raw SharePoint data but only CAPS will give you a single, integrated touch point for all your data needs – including executing multiple queries serially or in parallel – while also providing access to the only XSLT 2.0 processor on SharePoint, for generating your HTML.
  3. caps.js, the javascript library for rapidly building client-side with the CorasWorks API, CAPS.

With these three layers of your application now accounted for – specifically managing the content, accessing the content & building the application itself – you’re well on your way to creating a beautiful, responsive application that will have your users saying “Wow, this doesn’t even look like SharePoint!”

Want proof? Our own CorasWorks Customer Center is built on the Bootstrap framework but the site is running on SharePoint 2010. CAPS is used to drive all the dynamic content on the site, while an App Designer-driven site behind the scenes manages the content submission & curation process.

And of course if you’re looking for a partner to help design and/or build a responsive SharePoint-based solution for you, our Services team can help; just email for more info.

Video Embed code (YouTube, Screencast, etc) in SharePoint list items

Ever try to put some embed code into a Multiples lines of text field in SharePoint? If so, chances are you didn’t get the expected result (unless your goal was to display raw HTML & not the embedded video). Your first reaction might be to think, no problem, there’s three different ways to configure a Multiple lines of text field – one has to work, right? Unfortunately not :/

The three options are “Plain Text”, “Rich Text” and “Enhanced Rich Text” – when you try to paste in say the embed code for a YouTube video, your results will be…

  • Plain Text: The raw HTML is saved but it’s also displayed in the Item Forms & List Views, instead of seeing the embedded video.
  • Rich Text: The embed HTML cannot even be saved; if you paste it into the field, when the item saves, it will be stripped out.
  • Embedded Rich Text: This one seems to have the most promise because you can access the “HTML Source” box for the field; not only that, if you post the embed code into the HTML Source, you’ll see the embedded video while still in the List Item form – yay! Save it though, and the embed code is again removed.

You’ll see these results reflected in the screenshots to follow; of the native options, only the field configured as “Plain Text” will even retain the embed code that was pasted in.

So what’s a user to do? Ask IT for a custom coded solution just to display some embedded videos? Hack together something with Content Editor web parts (great for a single video, but what if you need to manage a CMS and video library…)? Buy a solution to stream videos from the SharePoint server (you really want to tax your SharePoint WFEs with video streaming, not to mention YouTube’s player & compression algorithm is world class and likely to perform better…)?

How about a 4th option that makes it as easy as it should be – copy/paste the embed code into a field in the list item & have it just work. Enter the CorasWorks Workplace RTF field!


Our Workplace RTF field not only allows you to paste video embed HTML into it but, when you do, the embed content is displayed & maintained throughout the Item View & Edit forms (of course, it also works in the CorasWorks Actions).



And while the native List Views aren’t capable of rendering the embedded HTML…


…fortunately, our smart Grid is:


All told, creating a solution for tracking, managing and displaying your videos from any number of premier video streaming services is now quick & easy with CorasWorks!

Resolving Errors when saving Sites as Templates in SharePoint 2010

For all the improvements and updates introduced with the SharePoint 2010 release, there’s at least one segment of the platform that got harder to work with – saving sites as templates. Debates rage about whether and to what extent people should even use SharePoint site templates as a deployment mechanism (vs say Features) but if you found your way here, you’ve likely already made that decision and just need some tips on resolving some of the common errors we here at CorasWorks ran into when SharePoint 2010 was first released. Hope these help!

Error #1

“Error exporting the list named “YourList” at the URL: Lists/YourListURL

When getting this error, the name of the list is almost always the first list (in alphabetical order) within your site, and you’ll likely see an error screen like this:List Export Error

The error is often the result of the default content types not being present/enabled within the Site Collection you’re working in. A quick pair of PowerShell commands though and you can get them redeployed fairly quickly.

First, fully disable them:
Disable-SPFeature –Identity ctypes –url http://SiteCollection

Then, enable them anew:
Enable-SPFeature –Identity ctypes –url http://SiteCollection

Now you’re back in business; go ahead and try to save your site as a template again. If you get a new error however, read on…

Error #2

“The attachments column does not exist for list Id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, list name YourList

In this case, a generic error is displayed in the UI and the above message is found in the logs using the Correlation ID of the error.

Usually related to error #1 above, this error indicates the default Site Columns are missing and thus SharePoint is unable to build a functional Site Template. And just like above, a short pair of PowerShell commands are all you need to get said Site Columns redeployed.

Again, first disable them completely:
Disable-SPFeature –Identity fields –url http://SiteCollection

And then re-enable them:
Enable-SPFeature –Identity fields –url http://SiteCollection


Securing & Hardening SharePoint Sites for External Users

For most organizations, it’s not a question of “If” but “When” – when will you want, or need, to collaborate with an external user on an application hosted in within your SharePoint farm? Over the years, CorasWorks has helped customers across numerous verticals, with a myriad of use cases and requirements, improve the efficiency of their solutions by giving external stakeholders direct access to the data they should see. More importantly, our platform and best practices have enabled customers to architect and implement their own secure solutions as well. Let’s look at the key concepts that allow this.

Basic Security

As a favorite childhood cartoon of mine reminded me every Saturday morning, knowing is half the battle. Liam Cleary, a SharePoint MVP, did a great write up in 2012 on educating site owners and SharePoint administrators on just what might be out there and visible to the world with the default settings. I suggest a quick read; after all, the first step in good security is knowing what you’re protecting.

Setting up Your Collaboration Spot

Whether it’s an Intranet-Extranet scenario, a customer/vendor portal, a system for publishing approved content from a private site to a public one or anything else in which you want to decouple source data from the end user, there’s a few basic concepts that the CorasWorks v11 platform will help you leverage to separate & secure your solution.

  1. First, because all the CorasWorks components support full CRUD (Create, Read, Update, Delete) operations across Site Collections and Web Applications, you can securely segment your external partners & users from your internal ones.
  2. The CorasWorks platform also contains numerous features for copying and/or moving content from one place to another; again, across Lists & Libraries, across Sites, across Site Collections and across Web Apps.

    Leveraging our Actions and/or CAPS, you can enable process owners and approvers to push content from a secured, internal site to an open or partner-secured external site. You can also automate the process using Timers (i.e. every Monday at 5AM, check for and publish the newest approved content) or Triggers (i.e. upon Status=Approved for Release, publish to external site).

  3. And perhaps the most powerful option: if you do not want to copy or move data between sites but instead want to give your external users direct access to only the data they should see – say a customer portal that you want to display real-time inventory data – then CorasWorks is the tool to use.Our platform enables the creation of a secure “proxy” within the SharePoint farm that can process requests between say a Customer Portal site and a secured internal site.

    This design allows you to leverage a service account to provide full CRUD operations against any SharePoint data in the farm, but invisible to the end user – so they cannot see anything but the data you choose to expose to them (i.e. think column-level security). The end user is unable to even see where the data comes from, and their account doesn’t have access to it even if they did.

Couple this with some easy changes to secure away some of the “revealing” pages that Liam describes, like the All Site Content page (we’ll cover this in a future blog), and you’ve got a robust yet secure option for collaborating with all your stakeholders, internal or external.

Easy RegEx Find and Replace in Notepad++

Previously, we’ve blogged about customizing the Toolbar within Notepad++ and, in my case, the benefit in doing so was to add some key functions to the Toolbar from the “XML Tools” plug-in I often use. In working with a lot of XML, XSLT and even HTML within Notepad++, I often have a need to find, or even find/replace, specific tags or script blocks. Notepad++ makes this easy with support for RegEx via the “regular expression” Search Mode.


Given the following XML snippet, let’s look at some use cases for RegEx finds:

<SetList Scope=”Request”>Tasks</SetList>
<SetVar Name=”Cmd”>ExportList</SetVar>
<SetVar Name=”XMLDATA”>TRUE</SetVar>
<SetVar Name=”ExtendedFieldsProperties”>0</SetVar>
<SetVar Name=”ExcludeViews”>TRUE</SetVar>
<SetVar Name=”ExcludeFields”>TRUE</SetVar>

In Notepad++, we could easily find our <SetList> element using this RegEx:


Then if we wanted all the <SetVar> elements, regardless of their Name attribute or value, we could use this RegEx:


If we wanted to be more explicit and say only find the <SetVar> element whose Name attribute began with an “E”, we could use:

<SetVar Name=”E.*>.*</SetVar>

Or perhaps we want to find all the <SetVar> elements where the text value is “TRUE”:


As you can see, these simple tricks could save you time & effort if wanting to find specific tags – or clean up using Find/Replace with a blank replace – using the regular expression Search Mode in Notepad++.

CorasWorks v11.3 and SharePoint 2010 Service Pack 2

Lately, the CorasWorks Support team has been receiving questions concerning SharePoint 2010’s Service Pack 2.  The Service Pack was released late in July 2013, and users would like to know if the CorasWorks Solutions and v11.3 Platform are compatible with it.

CorasWorks has been testing the SharePoint 2010 Service Pack 2 with v11.3.  Our testing hasn’t found any problems requiring changes to the solutions or the Platform components.  We have had similar responses from users who have already installed the Service Pack 2.  Feel free to install SharePoint 2010 Service Pack 2 into your CorasWorks-based SharePoint 2010 environments.

Naturally, the SharePoint 2010 environment is multifaceted, one with many possibilities of server, network, security, and other options.  Should you see any unexpected behavior after installing Service Pack 2, report the behavior to the CorasWorks Support team.


CorasWorks Support

Blanking Out a Date Field via SharePoint Designer Workflow

I recently came across a requirement on a customer project to set a Date field within a SharePoint List item to empty/blank/null – however you think of it – during a SharePoint Designer Workflow if a certain condition was met. I already had my workflow in place and running, so I figured the client request would only take a few minutes:  add a “Set Field in Current Item” action to my workflow, choose my Date field, plug in an empty value (or a space if need be), and be done.

And then I had one of those “Ugh, SharePoint!?” moments…

As it turns out, you cannot use the “Set Field in Current Item” action to blank out a date field. No problem I thought, I’ll just trick SharePoint.  I’ll create a workflow variable, use the string builder to make it empty, then set my Date field to the variable. But no, bested again. L

I turned to Bing and ran through a couple more attempts – one suggestion was to create a second Date field the user never sees, leave it blank for all time, and “copy” that value into the Date field I wanted blank, but this seemed like overkill.  In the end, I paired two suggestions from similar use cases to get the following solution, which has been deployed and working within the customer’s Production environment for more than a month without a single hiccup:

  1. Create a Workflow Variable named “Empty Date”
  2. Use the Dynamic String Builder to set “Empty Date” to 1/01/0001
  3. Use the Set Field in Current Item action to set your Date field to the Workflow Variable “Empty Date”
  4. Rejoice!

I’ll defer to the SharePoint Product Team as to why the date January 1, 0001, somehow equates to no date, or even why it doesn’t work if you just try to set the Date field to that value directly, but this combination of a Workflow Variable and that value did the trick. Chalk it up to just another one of those SharePoint things!


Problems Deactivating a SharePoint 2010 Solution Template

Posted by Joe Lewis, CorasWorks Professional Services Consultant

Building and moving SharePoint solution templates can sometimes be a painful process. One thing we encounter quite often is an error you might see when trying to deactivate a solution template. This error reads “Unable to access web scoped feature (Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx) because it references a non-existent or broken web (Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx) on site ‘/xxxxxx.’” The problem is that SharePoint will not allow you to deactivate that solution template, and that can be a huge problem when you want to save the new template with the same name. While the error seems bad the fix is actually very easy.

First, let me explain why this happens so you can potentially avoid it in the future.  It happens when you’ve built a site from the solution template you are trying to deactivate, and then deleted that site.  For example, let’s say I’m trying to deactivate “Template A.”  Previously, I built a site using Template A, then deleted that site.  Now, when I go back and try to deactivate Template A, I get the error message above.

So, here’s the easy fix.  Simply go to the recycle bin and delete the site. (If you don’t see it there, just proceed to the next step.) Next, go to the Site Collection Recycle Bin (at the root of the site collection) and delete the site from there, also.  Once this is done you’ll be able to deactivate the template.


Why Some Organizations Succeed…and Others Fail…with SharePoint

Posted by Gary Voight, CorasWorks President and CEO

I was having a discussion with a CorasWorks customer last week and we evolved into the topic of what it takes to have a successful SharePoint implementation.  This client has had a great deal of success on SharePoint….measured by a rich set of applications and strong end user acceptance.  It was fascinating to hear his story.  It also got me thinking about why some organizations succeed…and fail…with SharePoint.

Before going further into this topic, let me segue a bit.  I have been in the SharePoint world for a bit over four years.  CorasWorks has been in the SharePoint world since early 2003…almost nine years. CorasWorks initially built and sold Web parts, subsequently created a builder package called the WorkPlace Suite, then re-engineered that package into a build & run-time system, and then built Project and Portfolio Management (PPM) and CorasWorks Idea & Innovation Management (Cim) applications.  Over the past two years CorasWorks has been building up a professional services team and has delivered several custom-built applications.  We are totally invested in SharePoint and committed to its success.

I decided to profile a couple of successful SharePoint implementations, and a couple of failures. My attempt was to see if there are any significant lessons.  Here is my summary:


-          Automotive Manufacturer:  This company decided to use SharePoint for a Product Lifecycle Management (PLM) application in lieu of more established products available from their ERP and CAD vendors.  PLM is the process of managing the entire lifecycle of a product from conception, through design and manufacture, to service and disposal.  PLM is truly a collaborative application, and is often employed across customer-vendor lines.  This project was run by Engineering, with some oversight from IT.  This customer saw true value in SharePoint.  Had they pursued product alternatives from their ERP or CAD vendors, they would have paid $250,000 for licenses, plus another $150,000 to $200,000 for customization and implementation services.  In addition, the implementation looked difficult due to a steep learning curve of the products, likely locked them into an implementation vendor, and carried significant on-going cost and maintenance burden for when the product vendor shipped a new release.  As SharePoint had many of the capabilities needed for a PLM, this customer determined it would be simpler to build out their PLM functionality to more precisely meet their operational requirements.  It was also much less costly.  All products and services totaled around $250,000.  The customer was able to get what it needed, secure greater end user engagement, and have something they could easily maintain and extend.

-          Green Energy Company:  This company decided to use SharePoint as a platform for 20+ applications (ie. maintenance schedules, contract archive, PO log, Help Desk), along with a Portal for user access.  There were software packages for utility firms, but none were obvious fits.  Alternatively, they could have hired custom development firms, but these seemed expensive.  They needed to build and implement a main portal, but also needed sites for each plant, the capability for process management, ability to assign and manage tasks, and aggregate data into live reports/dashboards.  SharePoint was a great starting point, but the customer also recognized both capabilities and limitations of SharePoint out-of-the-box….and budgeted what was needed to complete the system to meet their requirements.  Even more important, the customer realized that SharePoint could be intimidating to users and managers.  Therefore, the IT implementation team was fanatical about providing ease-of-use, and truly committed to business and end user support. Although they also contracted much of the build work to CorasWorks, they also knew they could provide for on-going support and additional functionality as needed.

What these successful customers had in common were:

  • They understand the potential of SharePoint, but then realized that many of the “features” were actually only capabilities that required further development or configuration.
  • They understood and accepted SharePoint’s strengths and limitations.
  • They had projects with hard and measureable return on investments (ROI’s), and that this enabled them to gain management support
  • The implementers were focused on the needs of the business functions, and dedicated to ease-of-use and support.


-          Large IT product company:  This company invested in SharePoint 5-6 years ago.  They investigated the potential of SharePoint with Microsoft, and had the full enterprise product packaged into their enterprise agreement.  The CIO announced it to the rest of the company and set up a small IT team to provide some support.  Unfortunately, there was little consideration given to governance and not enough support. Further, no one was allowed to use third party tools.  What resulted was the creation of approximately 3,500 sites that did not have consistent navigation, users who were unable to effectively use what was built, confusion over the location of documents and lack of clarity on document revisions.  Few people were happy with SharePoint.  Approximately six months ago Jive Software was installed, and gained traction with users.  When I spoke to an engineering user he said that he got more use from Jive in six months than from SharePoint in five years.  He now thinks his company is phasing out SharePoint.

-          Financial Services firm:  This firm invested in SharePoint circa 2005.  They had heard some of the horror stories around unmanaged site creation, so they decided to apply strict governance and control.  Only IT could create a site and build out solutions.   Unfortunately, users got frustrated with the IT backlog as well as what they perceived as a lack of SharePoint intuitiveness.  One user group found a way to bring in the Confluence Wiki (Atlassian) and had a positive experience.  That alternative went viral.  When the financial services vertical segment experienced serious business problems during the financial crisis, the IT department lost its funding for SharePoint. The base SharePoint was retained, but has very little use and adoption.

What these failed firms had in common were:

  • SharePoint was rolled out without the enough education or support.
  • IT funding was minimal, and generally left up to the user functions.
  • User functions didn’t understand the difference between capabilities and a finished product.
  • No one was focused on ease-of-use and end user support.
  • They did not seem to have projects that had measureable return on investment (ROI), thus, did not attain management support.

I suspect we all have our own examples of positive and negative SharePoint implementations.  However, the reasons for the successes and failures summarized above apply to any product set.  The underlying difference between success and failure is commitmentIf your organization is not committed to a product, it will almost certainly fail.