Thursday, October 21, 2010

Are you ready for iTechnology Forms Accelerator v2.5?

iTechnology Forms Accelerator was primarily developed with the simple goal to be useful tool for both IT professionals and business users when creating electronic forms in SharePoint. We are happy to see that it accomplished its goal.

Over the last few months we have been working on implementing additional functionality to our product. Number of these changes came as a suggestion from our current users, and others we were eager to implement since v2.0. Some of the most exciting new features are the Ability to operate with data from External Sources; Operations over Web Services; Extended integration page; Significantly improved Deployment procedure; Auto-populate Drop-down lists; Wizards for Forms Development; Nintex Workflow 2007 integration; upgrade to Silverlight 4 and more.

iTechnology Forms Accelerator will be available in two versions: free and commercial. See below in details what are the new features per version:

For Free version:
  • Ability to run Forms Designer out-of-browser
  • Basic support of Web Services: Localhost only
  • Copy Perspective option
  • “Events” - user can attach actions on "Perspective load" and "Button submit" events.
  • K2 4.5 Workflow Support
  • Support of Nintex Workflow 2007
  • Important issues from iTFA v.2.0.x fixed
  • Only one front-end server (running). Limit on deployment and Runtime
Commercial version will have the Free version functionality plus:
  • Wizards for forms generation, which allows users to create an amazing forms with just few clicks.
  • Full Support of Web Services including additional authentication types (delegation, basic authentication, anonymous, etc.)

We are excited to announce that the new version will be available in November and the exact date will be announced soon. For more details or to request a private presentation of the new version, please contact us at info@myitechnology.com
Read more on this article...
Bookmark and Share

Monday, August 16, 2010

Custom SharePoint 2010 Home Page in 30 minutes!

UPDATED!

Just one day left to the custom SharePoint 2010 Home Page!

If you are one of those users wishing you could modify your SharePoint 2010 Home Page, then this presentation is just for you - our 30 minute, real-time, how-to presentation will guide you through the process. We will start from scratch - by creating new SharePoint site, and then will go through the entire customization process. The result - a cool new look and feel of your SharePoint web site!

To register please click here.

If you want to learn more about iTechnology, please visit our website. If you want to submit your specific questions about this presentation, please send us an email at info@myitechnology.com

UPDATE: Follow this link to watch the recorded Webinar on our YouTube channel.
Read more on this article...
Bookmark and Share

Wednesday, August 11, 2010

To hell and back with SQL Server Embedded Edition in WSS 3.0

While working on our iTechnology Forms Accelerator I encountered an interesting SharePoint-related development situation I want to share with you.

We all know installing WSS 3.0 with the Basic configuration adds the flavor of SQL Server Embedded Edition (aka WYukon or Windows Internal Database). There is not much official information on the topic but it seems that this edition has not many but significant differences to SQL Server Express:
  • no 4 GB Database limit
  • limited connectivity
It is also known (from Internet knowledge) that you can connect to SQL Server Embedded Edition even with SQL Management Studio Express but you need to provide the following hardcoded string as server name: \\.\pipe\mssql$microsoft##ssee\sql\query. Pretty much that's all the info for WYukon on the net... Not quite helpful when your SharePoint feature cannot connect to the database, right?

In order to find out more about WYukon and how SharePoint operates with it I used the usual suspect - Reflector and Microsoft.SharePoint.dll.


SharePoint uses a class Microsoft.SharePoint.Utilities.SqlSession to work with the database and there are some interesting fields and properties there:

public bool m_wyukonSafeMode;
private const string sqlstrSetSingleUser = "CHECKPOINT; EXEC sp_dboption '{0}', 'single user', '{1}'";
private const string WYukonDataSource = @"np:\\.\pipe\MSSQL$Microsoft##SSEE\sql\query";


It is also interesting how they open and close the connection to WYukon DB:


Some interesting methods for WYukon compliance as well:



It is not really common for WSS production environments to be setuped on a single server (we all know the huge performance implications of doing it) but for developement virtual machine to test something quick, this can be a prefered environment. For our free product we do our forms magic by utilizing SharePoint's Content database with some tables and custom SQL queries and if it fails for a potential client who wants to be impressed real quick thus has just configured his brand new clean environment - well... it is not pretty to fail miserably not able to... connect to database.

So, how to solve it? I'll show you using a modification to the step-by-step approach - exception-by-exception.

The first exception you get is the standard:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified.

This was easy - just verify whether SharePoint connects to a WUkon server by comparing SPWeb.Site.ContentDatabase.Server with the hardcoded source: "np:\\.\pipe\MSSQL$Microsoft##SSEE\sql\query". If so make sure your code connects to it as well.

The next problem that you will face when you try to run the create table scripts is:

DDL statement is not allowed

Cool! Now what? Appearantly Microsoft forces you to get the database into single user mode in order to execute multiple statements (this was "reflected" conclusion, see the later screenshots)! Nice!
Solution:

ALTER DATABASE SharePointContentDatabase SET single_user;

// Create your tables

ALTER DATABASE SharePointContentDatabase SET multi_user;


Now the even trickier part is that if there is an open connection to the database you cannot connect. You can wait, or even start a timer job to try squeeze in when there is no open connection but our clients want to see the product right away!... not tomorrow, next week...

Thank god, there is a workaround here. A veeeery dangerous workaround... Force the other bastards out of your way - kill their connections:

ALTER DATABASE SharePointContentDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

Doing this will drop SharePoint's connection to the database (if it was the bastard in your way) so you will need to reconnect (recreate) SPSite, SPWeb, etc.

If you are lucky though and no one in your way it means success! Well, no! Life is not perfect, and because you are a great developer who always executes multiple SQL statements in a transaction you are facing your next SQL Server Embedded related problem:

ALTER DATABASE statement not allowed within multi-statement transaction.

Cool! So you need to open connection, set db in Single User mode, close connection. Open another one, execute your transacted scripts, close connection. Open connection, return DB to original state, close connection.

Finally, /relative/ success!

Hope this post gives you some insights for working with SQL Server Embedded Edition.

Read more on this article...
Bookmark and Share

Tuesday, July 20, 2010

Nintex Workflow 2010 released

Just few days ago, our partner Nintex announced the release of its third generation SharePoint workflow product, Nintex Workflow 2010. The release completes an 18 month effort to create a product that lives up to its motto of "Workflow for Everyone."

The new Nintex Workflow 2010 empowers both business users and IT pros to quickly and easily automate business processes by adding a drag and drop workflow designer and connectivity and advanced workflow features to the Microsoft SharePoint 2010 document management and collaboration platform.

Here are some of the Nintex Workflow 2010 improvements:
  • Fluent ribbon interface
  • Business connectivity services
  • Reusable workflows
  • Site workflows
  • Content type workflows
  • Exporting workflows to Visual Studio® 2010
Nintex Workflow 2010 also includes improved management features to secure, deploy, manage and report on workflows from individual sites up to entire farms.

Nintex Workflow 2007 customers with software assurance agreements can upgrade to Nintex Workflow 2010 free of charge. Offer is valid for twelve months from the product release date.

To find out more about Nintex Workflow 2010 please contact us at info@myitechnology.com or visit www.nintex.com/workflow.

Read more on this article...
Bookmark and Share

Thursday, June 24, 2010

Creating templated site for WSS 3.0: Templates vs Site definitions vs Features


There has always been some fight in the SharePoint community as to which is better: web templates, site definitions or features for creating a new SharePoint 2007 website. Some consultants even go further and claim that one or more of the approaches should be avoided at all costs. Hell, even at Microsoft are not on the same page and state different things in the bunch of MSDN articles they have on the topic for the different versions of SharePoint; the latest one is to use as much web parts as possible and avoid custom sites...

Here are some thoughts on possible choices in different situations you can get when choosing how to create a template for a new site:

Who is going to provide the template - developer or a business man?


Obviously business people would be more familiar with SharePoint Designer and working with it gives you an stp template. On the other hand developers didn't embrace much SPD but keep to the good old Visual Studio IDE and use some free tools for packaging like WSPBuilder or VSeWSS. It seems to be generally easier for them to stick to features and/or site definitions depending on the requirements.

Would the template be used for automatically creating many different sites?


Let me give you an example of such situation: you need to create different site for the different clients a company can have based on a web service call or some file. Each site would probably need to be similar in look, feel and functionality, probably branded differently and may be populated with various client-specific data. I'd use a bare-bone site definition with features so that if I need to upgrade certain functionality, I'd just upgrade the particular feature which is responsible for providing it.

Is it going to be in need for continued upgrading?


We all understand the consequences of unghosting and try to avoid it where possible but at some point in time, a task or a project might require changes to a site. Site definitions are not easy to be upgraded, especially customized ones. SPD gives options for reghosting before upgrade but this is usually not quite what you'd need because the changes have been done with a reason, then why roll back. The easiest way to get through this pain for me is by using features. The feature that needs to upgrade can be coded smart enough to check for these inconsistencies and act accordingly. It won't be easy but in most cases is doable.

Is being able to create and deploy it fast an issue?

Having all tasks for yesterday is something like life these days. But there are situations where things need to move real quick. Consider having a intracompany conference in several days and you need to build up a site for today. You can go with site definition and features but digging in those xml declarations and actually coding the features will take time and time is what you don't have. Then you should stick to SPD and export a template which will contain all the information for the conference, announcement lists, document libraries and custom design which will be needed.

How large is the site?


Small site will most likely again mean that going through the pain of site definitions is not worthy. SPD is again your choice. But a big site with many subsites, functionality, communication probably would be a good place to go with bare-bone site definition and different features. This will allow you to debug and later maintain easier.

Client likes default templates?

There are times when clients like or are just used to working with the default SharePoint templates which ship with WSS 3.0 or MOSS 2007. Then the best way to add functionality to it is either with web parts or features but remember to never modify its site definition, otherwise you are getting into troubles.

Conclusion

SharePoint Designer 2007 is definitely not the best tool on the block but there are times where it can come in handy and fast give you a nice template for the brand new site. As developer I am more used to writing code in Visual Studio than defining hardly able to debug xml schema or not much coherent code coming by SPD this is why the introduction of features in WSS 3.0 was probably the most useful feature to me which was easy to get used to the small event system and create pluggable pieces of functionality. Web parts are also great for packaging functionality but on a more granular page level while features are more global and interesting way for developers to push business needs to sites. Unfortunately, creating a new site by features would still need a back-bone host site definition but this inconvenience can be considered more of a small time-consuming obstacle than a real show stopper.
Read more on this article...
Bookmark and Share

Friday, June 11, 2010

SharePoint troubleshooting

A significant part of building a product is actually proving it works the way your customer expects. Doing so you inevitably perform debugging and performance testing. Issues are expected and tackled until satisfaction. It`s all a standard approach where troubleshooting exists, but as a part of the development.
The real purpose here, of SharePoint is to serve your clients. Maintaining and supporting a living environment is a vital necessity. Troubleshooting your clients` issues needs to be your top priority beside anything else. But doing so might not be as easy as it sounds. So we`re going to take a look at few ideas on troubleshooting from that perspective.

The following scenarios are brief examples of various client issues with conditional obstacles for the one doing the support. Those may be due to various onsite arrangements or possible environmental limitations.

Online evaluation
Quite often clients issues are related to lost permissions to content, lost data or certain inability to perform a task. At ground basis you need to be prepared where to look at first. Usually basic support can be performed by a site collection admin that only has the online access to the SharePoint portal. It`s quite limited area as it goes for clearing back-end issues, but we`ll take a look at what can come in handy when it`s a frontend case.

Check effective permissions action
When utilized it can right on the spot identity access levels and reveal those user suspects. Bad thing is that it`s only available for MOSS, but for WSS 3.0 it`s always a close alternative to use that tool.

Audit logs
You do have when in MOSS only, but that`s the only trace you can find on the SharePoint portal itself. There are several reports all as downloadable content. The important task here is to have those auditing configured in advance. True to say it`ll cause a performance impact, but having it set on sensitive data will payoff. Audit settings are configured per sitecollection.

Usage reports
Deserves to be mentioned as it might bring additional idea of what a particular user has been doing. The down-side is that you need the usage reports turned on and collecting data.

Recycle Bins
For missing data always check the sitecollection root recycle bin. Most of the data can be restored back throughout it. Or at least it`ll get you the user that decided to go for a clean-up.


Backtracking
A client should never know what is going on behind the scenes. But that`s only in a better reality. Your users are still capable of causing that SharePoint to mishandle. I`ll skip discussion about how you need to treat code exceptions, but in our case we`ll assume that an user breached expectations, and got one. You having the main responsibility for generic maintenance need to troubleshoot it. It might be an easy one, but how do we start? Log files .. correct, except that we are not looking into an immediate case that just had printed its logs. What we`re looking for is buried in thousands of lines within our daily logs.
I`ll skip some definitions of various logs that are available within a SharePoint environment, assuming you are well known with them.
So our entry point is nothing else but the system`s Event Log, where perspectively we had an Error message debriefing what happened. Rarely it`s enough to solve the case. What we`re looking for is how to gather more data. A logical continuation would be to realize how that issue was caused. For that reason we`ll need to find what exactly the user made to produce it. And there`s the fun part. As long as you are on the same machine, there`s an IIS logs, where all incoming request are kept. Digging through them will give you an entry point for SharePoint to play with. The matching we are looking for is the date-time of the event, but keep in mind that IIS logs might have been exported with UTC timing. Your IIS have a separate log file per each webapplicaton and you need to search them all. A near match in few seconds difference will give you the user`s playground. Now simply redoing the issue will generate you enough data in all other logs (at their very end)(SharePoint logs would be essential here as well) so you can tackle the issue accordingly.

update:
Investigation on issues wont actually solve them, so eventually you`ll have to bring in the brute force. It`s meaningless to emphasize that relying on pure log files reading is cumbersome, so we all greatly benefit from a bunch of tools. There are many great articles demonstrating how and when to use such. I`ll put some that deserve to be checked out.


Hope that those ideas will give you some direction for your troubleshooting sessions.

Read more on this article...
Bookmark and Share

Thursday, June 10, 2010

ChartPart for SharePoint

By Hristo Yankov

If you would like to generate some charts in Microsoft SharePoint 2007, after a quick search you will find that there is no such out-of-the-box functionality. You shouldn't worry, though, as there is a free web part available at Codeplex, which has everything you need for your list-based charting needs. It is called "ChartPart for SharePoint" and is available here.

Prerequisites
In order to get it working on your server, you will need to have Microsoft .NET 3.5 SP1 and Microsoft Chart Controls for Microsoft .NET Framework 3.5 installed. The 'installation package' does not check for those prerequisites, so make sure you do that manually before you install. Most probably you already have .NET 3.5 SP1 installed, but chances are, the MS Chart Controls are not installed.

Installation
The deployment package consists of two WSP files (SharePoint solution deployment packages) - MSChartControls.wsp and ChartPart 2.0.wsp. First, you have to install the MSChartControls package. Login on your SharePoint server, start the Console (Start -> Run -> cmd) and type:
stsadm -o addsolution –filename MSChartControls.wsp
stsadm -o execadmsvcjobs 


STSADM NOTE: Of course, you will have to choose between the convenience of not typing the full path to the stsadm.exe file or not having to type the full path to the WSP. So, you have to be in one of the two folders and type the full path to the other file.

This will add the solution to the SharePoint Central Administration -> Operations -> Solution Management. You can either use the User Interface it provides to deploy the added solution, or you can continue executing console commands, like this:
stsadm -o deploysolution -name MSChartControls.wsp -immediate –allowgacdeployment
stsadm -o execadmsvcjobs 


Then, you have to activate the installed solution on Web Application level:
  1. Go to Central Administration
  2. Go to Application Management
  3. Select Manage Web Application Features
  4. Verify that you have selected the correct Web Application in the top right corner
  5. Click Activate on the Microsoft Chart Controls Feature
Now, you have to do something similar for the other WSP (Chart Part 2.0.wsp):
stsadm -o addsolution -filename "ChartPart 2.0.wsp"
stsadm -o execadmsvcjobs 


Deploy the solution, either from Central Admin, or by using the console:
stsadm -o deploysolution -name "Chartpart 2.0.wsp" -immediate -allowCasPolicies -url <url>
stsadm -o execadmsvcjobs


Where <url> is the address of the web site you wish to deploy the webpart to. Now all you have to do is activate the feature on the selected Site Collection.
  1. Go to Site Settings for your top-level site
  2. Go To Site Collection Features
  3. Activate the ChartPart for SharePoint feature
  4. Now you can add ChartParts on every site in your Site Collection.



Usage
I created a new 'Web Part Page' on my site, to use for experimenting with the web parts. I chose 'Full Page, Vertical' layout template, as it  is one of the simplest and I preferred to have full width.

I chose to 'Edit Page' and clicked on 'Add a Web Part' link in the design mode of the page. A pop-up showing all available web parts appears and from there, I chose to add on the page the 'ChartPart' web part.

Once added on the page, you have to configure it. While the page is still in design mode, click on the little arrow down in the right upper corner of the web part. It will open a side menu. Click on 'Modify Shared Web Part'. This will open the options of the web part.

Here, you can set the title of the web part (as it will appear on the page it is added to), the web site to pull data from, the specific list and its view. Then you have to select X and Y "Series" column. A bit of explanation... Only Number fields can be choses as "X-Series". "Item Count" is always available to you. As "Y-Series" you have to specify a column of the SharePoint list.

To illustrate all this, I will configure my list to contain only two columns - "City" (single line of text) and "Population" (number field). Here is what my list looks like:

Now, I want to configure the Chart web part to visualize this statistics. I will set it up this way:

We click OK button and the generated chart looks like:


Customization
You can customize the chart in many ways. First. by selecting the 'Chart Type' for the chart. Choices are Column, Bar, Pie and so many others. Additionally, you can select 'Style' (Cylinder, Emboss, LightToDark, Wedge), which seems to work only on specific 'Chart Types'. For example, it clearly works on a 'Column' chart type. Here is the difference between 'Cylinder' and 'Wedge':

There is many other fine tunings you can do, like color palette, size and etc. Also what's really nice is that in the tooltip (when you hover a column in the chart) you will see an exact value, of the column.

Conclusion
ChartPart for SharePoint is a great component, if you want to visualize some statistics based on SharePoint list items. It is highly customizable, easy to install and use. Read more on this article...
Bookmark and Share

Friday, May 21, 2010

We present you iTechnology Check Effective Permissions web part

There are numerous times when iTechnology consultants have had requests to determine user’s effective permissions around SharePoint sites. With SharePoint 2007 and WSS 3.0 displaying them in a tree format is currently not possible out-of-the-box. This is why we have built a small web part to display them on a desired site for our clients.

In this post I will get you through the FREE download, setup and features of our small tool that iTechnology present you with.

FREE download

You can download the iTechnology Check Effective Permissions web part from our Downloads section (free registration is required).

Setup

  1. Use install.bat file to add the solution to your SharePoint
  2. In Central Administration deploy iTechnology Check Effective Permissions feature to whichever site you need it.

Features

iTechnology Check Effective Permissions feature deploys a small web part to the web part gallery of the site. You can find it in the iTechnology group and add it to a desired page.

View as Site Collection Administrator

In the iTechnology Check Effective Permissions web part settings you can set Display mode of the web part which lets you choose between “Display from root site” and “Display from current site”. This is how the web part’s settings screen looks like:

The first option will present you with the opportunity to view permission levels coming from the various possible sources in the tree of websites in the current site collection; the latter one – only from the site where the web part has been used down the websites’ tree. This is how the screen looks like for Site Collection Administrators:

When the administrator hovers over the more marker a small window pops up with the granular effective permissions for the user. This is great for determining why some user can or cannot do something at a specific website:

View as User

The web part can also be used to display permissions for normal users. They will be presented with their permission levels and the more granular rights but cannot search for other users’ permissions:

The web part’s settings also can be applied and work the same way as for Site Collection Administrators.

Let us know what you think!

Read more on this article...
Bookmark and Share

Thursday, May 13, 2010

iTFA and Nintex: One click to complete task and save form

In my first post from “iTFA and Nintex” series I showed you how to open a specific iTechnology Forms Accelerator perspective from Nintex workflow. It is now time to move one step forward and complicate our life a little bit more but end up with the best possible integration of the two products.

The Goal

The goal will be to open an iTFA perspective from “My Workflow Tasks” Nintex webpart. But this is too simple, so I will add one more item to my list – when user selects an iTFA action to be able to save the form and complete the workflow task the same time. Here is the time to mention that this is a temporary work-around for the iTechnology Forms Accelerator versions up to 2.0.5. For the next major release this functionality will be included without the need of coding, so that every iTechnology Forms Accelerator and Nintex user benefit from it, not only the IT pros.


Resolution Scenario

The resolution scenario for my goal includes:

  • Create a custom content type “iTFA Nintex Task” that inherits from “Nintex Workflow Task” and will be used for Nintex approval tasks

  • Create a custom approval page and configure “iTFA Nintex Task” content type to use it

  • Add iTechnology Forms Accelerator user control in this page and pass the required parameters for it

  • Capture iTFA action and based on it execute appropriate Nintex task



Step 1 and 2

I will not stop on these two steps – how to create a content type and custom Nintex approval form and how to configure the content type to use the form. There is really good description of all this in Nintex SDK, which can be downloaded here. The SDK even includes sample code that can be used as a base for our solution.

Step 3

Now is time to add iTechnology Forms Accelerator user control to the page. As I said will use the sample code from the Nintex SDK as template, but will cut quite a lot from its functionality since all I need to show on my page is iTFA control. This means that will remove all UI and actions, and instead in Main placeholder will add the control, together with few JavaScript and CSS files references that iTFA control uses:

Note that those JS and CSS files are located in “12 Hive\TEMPLATE\LAYOUTS\itfa\xxx” and this should be considered when creating the path to them. In my case I will place the page directly under “12 Hive\TEMPLATE\LAYOUTS”, so the path looks as shown above.

To use iTFA control in my page, have to add a reference to it. It is located in “iTechnology.Forms.Clients.WebControl” assembly:

And this is all for the aspx page for now. Next – what changes are needed in the code-behind.

In my code-behind class first will check if the list is integrated with iTechnology Forms Accelerator. When a SharePoint list is integrated with iTFA, then there is a property set in its properties bag, called “IsITFAActivated” and its value should be “YES”:

As I said in the previous post, to make iTechnology Forms Accelerator show specific perspective there are 3 parameters required: List ID, List Item ID and Perspective name. List and list item IDs, are available from Nintex workflow task object. For perspective name I will add one more field in my SharePoint list. This field can be updated from Nintex workflow for example.

Besides those 3 required parameters, here I add PerspectiveType and FormID. PerspectiveType property is not required, while FormID I have to add to avoid exceptions like:
Value does not fall within the expected range.

And this all – now my custom approval page can display iTechnolgy Forms Accelerator form, and can be opened from “My Workflow Tasks” Nintex webpart.

Step 4

In my scenario I want to have 3 actions available: Approve (approve the request and save the form), Decline (reject the request and save the form) and Cancel (does nothing). So, in my iTechnology Forms Accelerator form, will add “Approval” perspective (the one that will open from my workflow) and there will add those 3 actions in actions section. Remember that if I want to add additional perspectives, the form has to be in Advanced mode. For the first 2 actions (Approve and Decline), I choose “SharePoint update” as type of action to achieve saving of the form. In “Post execute action” section I’m choosing to redirect to another perspective with name “View”. This way once the action is complete, my form will open in view mode so I can see the changes.

For Cancel action I select “No Action” option for type and again to be redirected to View perspective.

In the code-behind of my custom approval page, I have to override ActionSubmit event for iTFA user control. This way once an action is submitted, will be able to check if Nintex task has to be updated and then move on with the form.

ActionSubmit event has iTFAActionEventArgs type as event arguments and this is how will get the name of the current executed action:

And when knowing the name, the proper outcome for Nintex worklow task can be selected:



Well, this is really simple implementation and can be complicated and improved the way specific case requires it, but should give you the idea how to use iTechnology Forms Accelerator user control with Nintex workflow. Here you can download the code of iTFA / Nintex Approval Page (free registration is required).
Read more on this article...
Bookmark and Share