What exactly is SAF and why would I need it ? (FAQ) ?

For those out there that are a little curious as to whether SAF is any use to your organisation, please read this FAQ.

What is SAF ?

  • SAF is free to use.
  • SAF is the “SharePoint Action Framework”, it was built by myself and Hugo (plus a few others along the way).
  • SAF is written entirely in C# code, available from : http://saf.codeplex.com.
  • SAF is a way to automate SharePoint configuration changes.
  • An Action is a command/class/task/script written in C# that performs a unit of execution against SharePoint such as “CreateWeb” or “AddLookupColumn”.
  • A SAF Macro is collection of one or more Actions.
  • A SAF Macro can be run from Msbuild, a Feature, StsAdm or plain old .Net code.
  • Parameters can be passed to a Macro at run-time from a variety of sources such as “Environment Variable”, “*.config”, “Msbuild Properties”, Feature Properties, command line args, .net code.
  • SAF emits lots of trace statements at run-time, these can be viewed using “DebugView”.
  • One Action can pass parameters to another Action.
  • Parameters can be set using Spring expression syntax such as “DateTime.Now – 10”.

You should consider SAF if you suffer from one of the following symptoms…

  • “Our developers write lots of code to deploy changes at release time – it’s always rushed”
  • “I don’t want my developers shelling out to Powershell or Stsadm from a Feature”.
  • “We have loads of Console applications now, I have lost track of where they are, or what they do”
  • “We seem to be writing similar scripts against SharePoint in lots of ways, testing is hard”.
  • “My scripts often have lots of errors – they are done at the last minute”.
  • “When something goes wrong – I have no idea what went wrong or how to solve it”.
  • “Our Features get stuck and bomb out half way through – there no way to roll them back”.
  • “We have tons of Features now – I can’t keep track”.
  • “We deploy Features to run one-off tasks”
  • “We have a library of reusable scripts, but, we can only run them in one way, sometimes we want to run them from MSbuild and a Feature”.
  • “I want to automate the deployment of changes to our development environment”.
  • “I would like to run a housekeeping task on a scheduled basis”

So I like the sound of SAF – what’s the problems ?

Realistically (and honestly), there are few things that need to be considered:

  • Someone on your team will need to spend a day or 2 learning + understanding SAF and deciding exactly how you want to use it. I would suggest a Tech Lead, System Admin or SP Architect will need to download it, try out the examples, look through the unit tests. Ask us questions. Although SAF can be downloaded and set to go in a few minutes, you will still need to address issues such as – “Do you want to execute your Macros in MsBuild or from a Feature ?” and “How can I integrate SAF into my current build and deployment process?”
  • You will need to decide who is going to do your deployments – does each developer have to fend for themselves, or do you require a dedicated Build Manager ?
  • As most environments (Dev, QA, Live etc) require different settings (e.g. Urls, Database names, accounts etc), you will more than likely want to define these and set a properties file up for each environment. (These can then be injected into SAF at run-time).
  • There may be no Actions to solve your particular problem. If this is the case, suggest it to us – we can try and write it, or write it yourself. It’s very easy to write a new Action – we have an approach to easily unit test it, document it and author it. For example, I wrote one to deploy a WSP in 2 hours the other day. Alternatively, SAF can also call Stsadm commands and Powershell scripts. Once the Action is written you can register it with SAF then all your devs can run it using the most appropriate client.

Anyway, I do hope this helps! If you still need help, or a quick start, we can also offer consultancy around SAF. If you want to know more give us a call or drop an email to support@collaboris.co.uk