Tuesday, November 30, 2010

Adding records to SharePoint using MS Access - what about folders?

Situation:  we have some data gathered from SPSS for statistical research and this will be structured when it is spit out as a giant table of data.  We're trying to get all the data into SharePoint for evaluation and review by several departments in the university - which means we've used folders to separate the permissions in the list (this is just a custom list with 60-80 columns for all the data).  Beyond that, we've avoided the use of folders but here's the problem:  how do we import the records of data and place them directly in the appropriate folders?

Thought:  there's several columns that don't normally appear in Access like the "Path" and "Encoded Absolute URL"...if you use a simple query, you can display these columns and create new records here fairly easily...I was hoping that by setting the encoded URL and path that the items would appear in sharepoint in the appropriate folders.  Anyone have any ideas on how to use Access to add records but specify the folder they go in?

Monday, November 29, 2010

Managing SP processes instead of people

If you fix a process - you fix a problem, you make a system more efficient, and you make things overall "better"; however, what happens when the processes are perfect?  A truly well-oiled enterprise machine is cranking out quality material at great speed and then what?  I'm thinking about something:  a perfect process masks moral and ethical ineptitude in people.  This is a quandary for me:  should we focus on really trying to empower and encourage people and end users to be "better" or focus on fixing the process so that, no matter how bad a person one remains, the business and the processes run well?  This applies in regular business with IT, churches with pastors, political campaigns with staffers/candidates, etc.  I wonder if fixing the process doesn't really fix the problem some of the time if you really wanted better people in the first place.  What do you think?

Thursday, November 11, 2010

Limit the number of characters in InfoPath multi-line boxes

Situation: we have a textbox we made in InfoPath. We decide that this box should be able to type multiple lines. We open the settings for the box and change click the checkbox that says "Multiline". It then greys out our ability to limit the number of characters in the box. We want to still limit how many letters that they can type! Here's how:

Use Data Validation on the box (in 2007, right-click the textbox and then click "Data Validation", click "Add"; in 2010, click the textbox, click the Control Properties in the ribbon, and click "Manage Rules", then click Add -> Validation rule, then click the condition).
[Update: a comment from a user below highlighted a limit in the solution: line breaks. A better way to accomplish this is to use the 'the expression' in the first dropdown instead of your field and then type "string-length(.)>500" without the quotes]
Now that you have the data validation window open you should see the ability to set your condition. The first box should be your field, the middle box should say "Does not match pattern", and then you click "Select a pattern" in the third box -> click custom pattern, and then type this:


See, the Period stands for any character except new line breaks or carriage returns. Now, normally you would put an asterisk after that to mean that you can type as much as you want. Instead, the little braces allow you to place lower and upper limits for the number of characters. The 1 means that they HAVE to type at least 1 letter and the 500 means they get capped off at 500 for data validation purposes.

Now, this does NOT mean that the InfoPath box will STOP letting them type! It just means that, when they tab out of it, it will glow red and have a tooltip that you specify for them when they've typed too many characters. I tested this and it seems to work well for me; give it a try and tell me your results with it!

Friday, October 29, 2010

Folders, Metadata, SharePoint 2007, and SharePoint 2010

So you heard the news:  folders = bad in SharePoint land; but why?  We have spent the last 20 years putting things in electronic folders, the past hundred putting them in real folders in real filing cabinets....so why does SharePoint come along and say "folders:  the dodo was better"?  Well, let's talk about the reason we had folders, why we have them now, how they work today, and what can be done to improve the situation.

Physical Folders

So uh, a long time ago...people used paper.  Paper was this collection of ground up trees in a paste that is super flat and thin...when it dries, it's nifty to write on.  Writing is when we use a semi-permanent or permanent utensil to make marks on this paper...we would write what we now type...don't worry, you won't need to remember this.  When a bunch of this "paper" was used to gather information, they needed a way to organize it so that you could retrieve the information later (whenever someone asked or sued for it).  They decided they would use thick paper and bend it in half to hold several pieces of thin paper inside it...we would then mark it with useful information so we would know what was inside it.  We would stack these things called "folders" together, sometimes put them in big drawers called filing cabinets, and that was a great system till people realized that paper - being made of trees - was flammable and permeable by water....and, on top of that, it takes up a LOT of space.  Introduce electronic folders.

Electronic folders

So, we fast forward to the stone age when computers first began.  For a reference on how the first computers worked, google "The Flintstones" and try to find an old video that shows you this animated entertainment clip of life during this time.  We decide that paper is a thing of the past and decide that typing is the way to go (hooray for lefties around the world!  our handwriting is no longer an issue!).  We type up papers, resumes, and all sorts of stuff.  So, we have all these types of documents we type up for work, school, presentations, reports, etc...and the problem came back:  how do we organize this stuff?  We decided to transform a single, magical folder into the digital world where it replicated itself as the first virus to spread across the digital globe.  People started putting documents in these digital folders to help "organize" information.  Do you see the problem yet?  Still bunches of folders, still bunches of stuff, still dealing with a mentally-deficient chimp's method of organizing documents and you aren't allowed to change its methods.  People figured, "hey, this is digital...let's be bold and put folders INSIDE folders for better organization!"  Oh yea, we were that dumb.  So, going to find stuff really was just like regular folders:  took forever and you were at the mercy of who (or what)ever setup your folder structure.  We made really smart searching tools to let us peek inside folders faster, but the problem remained.  Bring in Metadata.


The first concept of metadata is quite cool:  let's take all the important information ABOUT a document, and stick it somewhere so we look at THAT first instead of the folders.  We look through a stack of metadata really fast, find the paper we want, and it tells us where to find that paper.  You got it:  a catalog system...you know, like libraries....the place where they would but books....which were collections of paper bound together and forced you to read ALL of it to find that perfect page....yea, no iTunes for book chapters or phrases :(.  Anyway, this new metadata idea lets us keep our folders and all our stuff wherever - we just need to take a few notes about the document before we file it away in the black hole.  Doctor's offices use this a lot - they have color codes, name codes, and tons of shorthand written everywhere...so much so that there's a job and training just to decipher it!  The cool thing is, once you know the code, they would pack thousands of people's medical records into a space the size of your family room.  We would use this on electronic documents to make searches "faster".  Now comes SharePoint.


So, this metadata thing sounds cool, right?  Well, what if you end up in a doctor's office that held 100,000 people's information?  You'd still be looking at a lot of the same problem because you would have a LOT of metadata and THEN you'd have this massive mound of stuff to look through to find your document - even though you know where to look.  So, the way to solve this?  Instead of using folders - which HIDE information inside them till you look there - let's put everyone's information in giant stacks with the metadata sticking out on each document...and let's pretend that we can control gravity on each document so that, when we say we're looking for a purple tab, all the purples come together RIGHT in front of you.  Nifty huh?  That's what SharePoint wants to do for you.  In 2007, they let you make folders.  The only real reasons to make a folder are to separate stuff that needs unique security permissions (locked down folders) or if there's more than 5k items...then use folders to break down some of it into really big chunks...maybe.

The problem:  most people didn't know about metadata and still made electronic folders.  The SharePoint gods became disturbed and rained fire from Mount Despair on all such places - making them slow and difficult to use and making people forget that they do this everywhere else but SharePoint so that they complained to the Admins..err High Priests of SharePoint that they didn't do their job.  So, the evangelists of SharePoint are now proclaiming the wrath of the gods on folders...please, don't use them so you won't be burned.  You can choose not to believe in the SharePoint gods or the warnings of folders - but beware, SharePoint gods don't believe in folder athiests.  Use COLUMNS to ask for important information about documents and items when they go into lists and libraries...have 3 or 4 columns instead of folders.  You can search and filter by columns!  You can find whatever the heck you want super fast!  So, how has it changed in 2010?  NONE!  The only thing they did to make it easier on you folder lovers was to make it so that anything inside a folder got a special tag on it with a piece of metadata from the folder.  This way, every item automatically has some metadata - so poo on you if you don't want metadata, it WILL be branded on every item!  May the SharePoint gods smile on your learning; go, young padawan, and folder no more.

InfoPath Tutorial updates

Hey everyone,
I just wanted to let you know that I've updated the Introduction and Part 1 of my InfoPath 2007 Tutorial.  I'm sorry it took so long (over a year) to update them...work has been crazy and we've been learning so much about InfoPath and SharePoint 2007 that it's been scary...then we decided to push on to SharePoint 2010 so much of my time has been learning and planning on our 2010 setup.  Once I finish my 2007 tutorial, I'm going to put out a series on InfoPath 2010 so that you will have something for either program.  One thing I do have to say:  you can use InfoPath 2010 to make 2007 browser forms...and dear Lord if you have the opportunity to do that...TAKE IT!  There are a few major improvements in InfoPath 2010 that can be used to drastically cut the amount of time it takes to make a 2007 form.  I look forward to releasing InfoPath Tutorial - Part 2 - Color Schemes and Controls next week.

InfoPath Tutorial - Part 1

Thursday, October 28, 2010

InfoPath date calculations and date comparisons without code

If you have the unfortunate task of doing some date calculations within InfoPath, you may have already found out the fun news:  InfoPath only gives you TWO functions dealing with date and time:  addDays (which lets you add a certain number of days to a date) or addSeconds (which lets you add seconds to a dateTime field).  This can be a little difficult when you intend on doing some calculations like adding a month to a specific date or subtracting a few days from a date to determine another day.  Here's a few ways you can do date calculations:

1.  Use addDays - the addDays function looks like this:  addDays(insert_a_date_field_here,"type_the_number_of_days_to_add_here").  An example would look like:  addDays(StartDate,"1") and this would add a single day to the Start Date field.  Key thing to note - you can add negative numbers here to subtract a certain number of days.  This can be useful in conditional formatting or data validation for greater than/less than comparisons (e.g. If DueDate field is less than [addDays(StartDate, "10")] then give the error message "Your due date is too soon; please set it for more than 10 days after the start date" in the data validation tooltip.
2.  Use addSeconds in the same manner as addDays - this can be done for time issues like turning an item in by 5pm on a certain day.  The reason this might be necessary is that, often, when calculating dates, the time assumed for a day is 12:00 AM on that day...so if you want a realistic time like 8am, you will need to use the addSeconds to give you a few hours...you'll just have to use a calculator to figure out how many seconds to add for so many hours/minutes.
3.  Adding a month or year to a date:  this is tricky but doable without code.  What you have to do is a little behind-the-scenes work with the date field.  Here's the steps:
  1. Have your two date fields, the first one is where the user picks a day (we'll call it UserDate), the second one is for that day plus 2 months (DatePlus2).
  2. Create 4 text fields:  temporaryDate, month, day, and year (you'll hide all these but I'm showing you them in the example)
  3. Use a rule to set the temporary date to the value of the UserDate.
  4. You'll notice that the format that it sets that field in looks like this:  YYYY-MM-DD
  5. Now you get to use the dreaded substring-before and substring-after functions to pull out the year, month, and days.  The idea of substring is that a "string" is a bunch of letters and numbers (like a sentence, word, whatever) and that you are getting a portion or less than the whole thing (like subtracting out a certain part of the string...substring).  There are different types of substring-ing like looking before or after a certain symbol (like a slash or dash in our case) or substring a certain number of letters in (e.g. you have a Social Security number field that always starts with SS#...you could say you want to substring starting at the 4th letter and get the next 11 characters to get all the numbers and dashes for a social security number).
  6. Use a rule on the temporaryDate field to set the YEAR field to the following formula:  substring-before((click Insert Field and choose temporaryDate), "-")...this will get all the characters before the first dash that it finds (so all the year numbers).
  7. Add another action to the rule on temporaryDate to set the MONTH field as the following formula:  substring-before(substring-after((insert temporaryDate here), "-"),"-")  This looks weird, but what it's going to do is substring after the dash (which grabs the MM-DD) and then substrings before the dash of what you grabbed (so it grabs MM since it's the only thing before the dash).
  8. Add another action to the rule on temporaryDate to set the DAY field as substring-after(substring-after((insert temporaryDate here), "-"),"-")  This looks very similar to the Month one but it substrings after the first dash (so MM-DD is what we have) and then it substrings AFTER the dash this time (so it gets DD)
  9. Phew, almost done, you've now got the numbers in the month, day, and year fields for your day...all you need to do now is add to the month, day, or year field.  The only problem is this:  InfoPath thinks these fields are TEXT fields, not numbers, so if you try to just add 1 or 2 to the Month field, it's gonna laugh at you (because, as far as it knows, you're trying to add 2 to AA and it thinks you don't know how math works...seriously, it'll laugh at you).  So, here's what you do:
  10. Add another action to the rule on temporaryDate to set the MONTH field to this formula:  value((insert MONTH field here))+2 (or however many months you want to add to that month field).  The value function will tell infopath that what you have in the MONTH field is really a number - so you can then do some math with it like adding a few months.  The only hard part here is when you get toward the end of the year...you'll need to have another rule that checks to see if the month is greater than 12 and, if it is, subtract 12 from it but also add 1 to the year.  Again, that's only if you are adding months...if you add to the year, then you won't have to worry about figuring out the month :)
  11. The final step:  add another action to the rule for temporaryDate to set the DatePlus2 field to this formula:  concat((insert YEAR field),"-",(insert MONTH field),"-",(insert DAY field)).
  12. Below are a couple of images showing the 3 rules I used here to first set the calculated date, second and third check to see if the month is over 12 and do different things based on what the number is.  The reason I had 2 rules for that is that, if you subtract 12 from 13, you get 1...which is correct; however, InfoPath will want you to have "01" in the Month field instead of "1"...so I had to change what I say when I'm setting the calculated date field

Tuesday, October 26, 2010

SPTechCon collection of info

So here's the first of a couple of blogger posts that contain all of my live-blogging statements from the conference. This first set is from the Power User half-day session.

Wednesday October 20, 2010

Hi, I'm Brendan and I'm a power user/site collection admin in the education industry. I've been working with SharePoint for a couple of years and and provided quite a bit of InfoPath support as well. I'll be taking classes to look at 2010 Power User info, business intelligence options, content types, data view webparts, governance, and more. My job is to focus on everything sharepoint up to coding - which is where I slam the breaks ^_^.
Wednesday October 20, 2010 8:11  

Sitting in the first session for my day - SP 2010 Power User with Joshua Haebets. This is a half-day session and should be interesting.
Wednesday October 20, 2010 8:21 

Hooray, conference rooms actually have power strips!! SPC09 Vegas - 0; SPTechCon Bostson - 1
Wednesday October 20, 2010 8:24 

Most everyone in our class is running SharePoint 2007 and some are actually already on 2010
Wednesday October 20, 2010 8:33 

new site template available in 2010 - Group Work site, which includes calendars, whereabouts, phone call memo, task, documents, and the ability to see exchange calendars within sharepoint
Wednesday October 20, 2010 8:36 

Several basic database templates are available in Access like the assets, contacts, issues, projects, and chartable template. You can also create your own using Access Services to take your database and convert it into a subsite for 2010
Wednesday October 20, 2010 8:38 

Things to consider on new sites: security, branding, logos, and navigation...these are listed under the "getting started" section on new team sites.
Wednesday October 20, 2010 8:38 

Note that SharePoint 2010 has a ribbon similar to office...hopefully you've seen this if you've seen 2010 demo'd anywhere
Wednesday October 20, 2010 8:40 

Wiki pages in 2010 allow you to have more freedom where you place text, pictures, etc for your page layout whereas regular pages are more focused on picking specific layouts for your text
Wednesday October 20, 2010 8:44 

For those who haven't dealt with it yet; there is a visual upgrade feature in 2010 that lets you keep your 2010 environment looking like 2007 and preview the updated look and feel
Wednesday October 20, 2010 8:48 

Phone call memo on the new group site template allows you to collect and write memos but has a recipient field and a confidential field - if it's confidential, it is security trimmed so that only the recipients can view it. Kind of nifty for important phone calls that come in.
Wednesday October 20, 2010 8:54 

wiki wysiwyg allows you to add new pages just by typing the [[ like 2007 BUT, when you do, it will show you a list of all other pages in your library in a menu so you can just click the one you want!
Wednesday October 20, 2010 8:56 

Site usage reports in 2010 allow you to create custom usage reports instead of trying to hit the database directly (which is not supported in any way)
Wednesday October 20, 2010 9:03 

You can also get site usage reports emailed to you when certain conditions are met (basically a workflow)...pretty cool when you want to find things in your site that are used a lot
Wednesday October 20, 2010 9:05 

You can block SharePoint designer at the site collection level in sharepoint 2010
Wednesday October 20, 2010 9:06 

There is a "check permissions" option to let you see what access a user or group has to the site when you are looking at permissions on a subsite, list, item, etc.
Wednesday October 20, 2010 9:10 

Site collections have a workflow dashboard to look at multiple workflows, where they are associated, and how many in-progress ones are working.
Wednesday October 20, 2010 9:13 

"2010 looks really cool for the first week" - Josh Haebets lol
Wednesday October 20, 2010 9:14 

You can create a site theme in powerpoint and publish it to powerpoint (color scheme basically)
Wednesday October 20, 2010 9:15 

To create a theme in powerpoint - go to design, pick a simple theme, change the colors, File->Save As->Office theme file type. This will package all the theme info as a packaged file for upload. Go to the site settings, themes, click "upload document" and you'll be able to upload your theme.
Wednesday October 20, 2010 9:19 

(creating a theme in powerpoint can be done in '07 or '10)
Wednesday October 20, 2010 9:20 

2010 allows you to setup versioning on webparts and the ability to checkout and checkin. Personal web parts are not version controlled.
Wednesday October 20, 2010 9:22 

Zones are no longer needed for webparts...YAY!!!!
Wednesday October 20, 2010 9:22 

WARNING: if you have javascript/css in your content editor web parts, our speaker is saying that the new CEWP no longer lets you do that but it has to be migrated to the HTML form webpart...hope someone can speak to this
Wednesday October 20, 2010 9:28 

Media webpart in SP2010 can play WMV, mp3, mp4
Wednesday October 20, 2010 9:30 

2010 will let you, if you want, to update your mysite data and that information can be synced back to AD
Wednesday October 20, 2010 9:32 

You can use managed metadata term stores to limit the job titles available for mysites and office locations and such
Wednesday October 20, 2010 9:33 

New infopath form webpart similar to xml form webpart in 2007 lets you apply branding to blank infopath forms...honestly sure of its use unless it allows you to brand the site in SP and it auto-brand infopath forms...
Wednesday October 20, 2010 9:36 

Lots of cool chart types for the charting webpart in 2010
Wednesday October 20, 2010 9:37 

You can publish microsoft project files directly to task lists in 2010
Wednesday October 20, 2010 9:41 

Media webpart will import videos from your computer into a library in sharepoint as a part of setting it up - makes it pretty easy to setup.
Wednesday October 20, 2010 9:44 

Outlook webparts will not work in SharePoint 2010 if you are using Exchange 2010...you will have to use SP2010 and exchange 2007 for those webparts to work correctly (authentication issue)
Wednesday October 20, 2010 9:45 

In theory, you could create really fun applications (whisper: games) in silverlight...which means they can be loaded into sharepoint in the silverlight webpart...I see recreational use :)
Wednesday October 20, 2010 9:47 

Webparts in 2010 will allow you to turn on auto refreshing as well as other AJAX options like enabling asynchronous loads, asyncrhonous updates, and a manual refresh button.
Wednesday October 20, 2010 9:48 

InfoPath form webpart lets you connect to an xsn file so that the form is loaded within the site instead of going to a separate page...great for relating static data on the page and a form itself.
Wednesday October 20, 2010 9:51 

Looks like you can add stuff to a wiki page like javascript/css/etc and an approval setup can be added to those pages...basically no need to add a CEWP/HTML form webpart to a wiki page.
Wednesday October 20, 2010 9:53 

Our session is about to hit a break; looking forward to continuing the liveblogging after we return.
Wednesday October 20, 2010 9:57 

To answer a comment from a user...from what it looks like, you can insert scripts/css within a wiki page if you click on the Edit HTML Source at the top-right of a 2010 wiki page. From there, the sky is the limit on what you do it seems.
Wednesday October 20, 2010 10:21 

InfoPath form webpart will allow you to setup closing options for the form so you can host a form within a page, get people to fill it out, they submit it, it "closes" the form by taking you back to a view or something
Wednesday October 20, 2010 10:23 

2010 printing will strip out a lot of branding...great to print just what you want...possibly negative if you really wanted that look to show; give it a shot, see what prints and what doesn't in print preview
Wednesday October 20, 2010 10:26 

If you haven't discerned this yet: pretty much EVERYTHING in sharepoint is a list :D
Wednesday October 20, 2010 10:27 

you can setup validation information in a LIST....I'll let that sink in for a minute and listen for the cheers.
Wednesday October 20, 2010 10:28 

Managed Metadata...metadata = information about something instead of information in something (e.g. the size of a word document and its location, not what's actually said in the document). Managed metadata allows you to come up with your own list of attributes/metadata and its navigation at the site collection level.
Wednesday October 20, 2010 10:31 

Managed Metadata ends up being useful in searches to help you find specific items with a "keyword".
Wednesday October 20, 2010 10:32 

Calendar improvements - UI improvements for dragging to alter an event and you can also do calendar overlays like Outlook 2007...SP 1, Entourage 0
Wednesday October 20, 2010 10:34 

Validation settings with a list will act similar to an input mask in '07 - you setup the rules AND the message to display when you put something in wrong for that field. You can also upload documents via drag n drop (silverlight/ajax) and you can, if it is setup by the SP admin, have alerts go to your phone via SMS text message.
Wednesday October 20, 2010 10:35 

Office Web Apps will let you edit certain office documents in the browser - but it seems like it must be Office 2007 or 2010 documents. Also, in Word, you can co-author/edit a file because it locks things by the paragraph...you can work on one paragraph while someone else works on another and you can even see who it is if you are using Office Communication Server (Office Communicator).
Wednesday October 20, 2010 10:43 

SharePoint 2010 allows you to customize list forms (like the new form) using InfoPath so you get a heck of a lot more power and control.
Wednesday October 20, 2010 10:43 

Why customize list forms? Change the name of a field on the page for end users, hide fields, enhance the appearance instead of using SP's default layout, and adding useful text on the page.
Wednesday October 20, 2010 10:45 

Additional form template type in InfoPath to accomplish changing list forms (in addition to browser form, client form, and managed/admin form). Custom list forms are used to create something quickly, taking info offline with SP Workspace, and filtering a list based on a person or group.
Wednesday October 20, 2010 10:48 

Managed terms for managed metadata can be centralized across site collections and even farms!
Wednesday October 20, 2010 10:59 

You can setup filters on the side of a page of a list using keyword filters (managed metadata terms)...pretty awesome feature.
Wednesday October 20, 2010 11:06 

Customizing list forms in infopath will let you add fields...hooray for no more SPD custom forms work!
Wednesday October 20, 2010 11:11 

(at least for me)
Wednesday October 20, 2010 11:11 

Custom list forms using InfoPath is in MOSS Standard and above
Wednesday October 20, 2010 11:12 

There is a new view option available to create new views in SharePoint Designer instead of using the standard gui
Wednesday October 20, 2010 11:13 

This new view option using SPD will let you use conditional formatting on rows and doing some nifty stuff...basically, it's a Data View Webpart...very nifty.
Wednesday October 20, 2010 11:16 

SharePoint Designer is now more than a design tool and it lets people manage sites, lists, permissions, workflows, etc. Some of that stuff was in '07 but harder to find. You can create columns and content types within SPD instead of needing the browser
Wednesday October 20, 2010 11:18 

SharePoint Designer's homepage of a site will show you how much space is used on a site, look at subsites, and look at users/groups for permissions purposes.
Wednesday October 20, 2010 11:20 

You can use the Content Type hub in 2010 to share content types across sites/site collections. Great for custom columns that you want to make available across the board.
Wednesday October 20, 2010 11:23 

"You don't need to be scared of SharePoint Designer anymore" - awesome quote from our presenter. Please pass that on to managers everywhere
Wednesday October 20, 2010 11:24 

Visio and workflows - allows you to visualize the workflows...great when you have a super-complex workflow right now...upgrade to 2010 and then look at it in visio
Wednesday October 20, 2010 11:30 

You can save workflows done in one place and deploy it to production with minimal changes in 2010 SPD.
Wednesday October 20, 2010 11:32 

Great workflow actions in SPD 2010:
Lookup manager of user (via AD)
Log to history list
Do a calculation (enhanced)
Pause until date
Find interval between dates
Start approval task
Impersonate steps (take a specific step in a workflow and impersonate the workflow author)...this might be a tad scary but will be very useful for migrating items to secure locations and other similar actions
Wednesday October 20, 2010 11:35 

One problem - impersonate someone who then leaves the company :)
Wednesday October 20, 2010 11:36 

This can be fixed using Service Accounts but it's rare to have one that users can use. The impersonation will impersonate the person who last edited/published the workflow.
Wednesday October 20, 2010 11:38 

You can now copy and modify out of the box workflows.....oh yea
Wednesday October 20, 2010 11:39 

If you have a workflow that is almost complete but will require a developer to mess with something specific, you can export the workflow and give it to a developer to open and modify in Visual Studio.
Wednesday October 20, 2010 11:43 

I'm hungry.
Wednesday October 20, 2010 11:44 

You'll want to use custom lists for lookup values in a reusable workflow because you can simply recreate that list in another site and the lookup will work great.
Wednesday October 20, 2010 11:52 

To use Visio with Workflows, you must purchase Visio Premium
Wednesday October 20, 2010 11:52 

You can create workflow conditions for approvals based on a % of users who approve that item instead of a specific number of approvers. Nifty
Wednesday October 20, 2010 11:54 

You can set specific actions when a task expires and it even has an action to escalate a task to that user's manager (assuming that info is in there from AD)
Wednesday October 20, 2010 11:55 

Workflows can use lookup properties for a user's AD info (including custom properties)....basically the userprofileservice in a workflow....wow.
Wednesday October 20, 2010 11:56 

Initiation forms for workflows are DVWPs in SharePoint Foundation and InfoPath forms for MOSS. Both pretty powerful options for customizing the forms with validation, conditional formatting, etc.

Wednesday October 20, 2010 12:03

Tuesday, October 19, 2010

Live Blogging at SPTechCon Boston

I will be live blogging for EndUserSharePoint.com and/or tweeting the entire time at SPTechCon.  I'm hoping to use this as a tool for notes and to communicate some of the findings with others as we get them in sessions.  Hope I can catch many of you there.

Thursday, September 23, 2010

Testing IE9 beta and adobe flash player 64-bit testing

Well, I got an email this morning saying that IE9 beta was available for download, so I decided to give it a shot.  I'm running Win7 Enterprise 64-bit on my work laptop and have been wanting to run 64-bit browsers to see if the speed increase would be nice; however, I was shocked to find that Adobe did not have a 64-bit version of flash player - pretty much THE key component in making sure your web experience works (along with java).
Well, Adobe Labs has available their Flash Player codenamed "Square" that is for 64-bit browsers and has specific support for IE9 beta...and guess what?  Not bad, not bad at all.  I loaded up SharePoint, navigated to multiple pages, tested the loading of Explorer view and the client integration between Office and SharePoint and everything came out smooth thus far.  It even advised me of one of my addons that was drastically slowing down my load times within IE...one that I forgot I had; so I disabled it and my browsing is a little faster.  I did an Acid3 test and it came out at a 95, not too shabby though the animation was a little choppy.  I didn't even have to load any of the pages in compatibility view.
EDIT:  The address bar was bothering me because it was short and I couldn't find any options for changing the display; all you have to do is mouse over the right edge of the address bar and you can click n drag to widen or shorten the address bar. END EDIT

Anyone else experimenting with IE9 and SharePoint?

Thursday, August 5, 2010

Filtering a Data View Web Part to Current User

When you begin using data view web parts (aka data form web parts) to display information on a sharepoint webpage, you will find that filtering is rather easy. After you insert a data view, you should see a small '<' symbol (MSFT calls it a chevron) off to the right of your new data view webpart. If you click it, you can see that the first thing they let you click is to Filter. When you do, you can choose the first dropdown to be any column; but to filter it to the current user, you need to pick a Person/Group column that you have created. The middle dropdown should be "Equals". The third dropdown, you should be able to scroll to the VERY bottom and find something called "[Current User]". This will filter the webpart to only show you items where your username is in that person/group column. Mine looks like this:

Pretty simple, huh? Well, there's one small kicker to this: this works right IF you are only using a single list. If you follow the instructions of Laura Rogers or other SharePoint gurus and create a linked data source (joining the information from 2 different lists with a common column), then this filter will not work. It will actually change the place in the "code" where the filtering happens and it just won't work. The way to fix this is to open up the page in Split or Code view and you'll have to copy-paste something from here into a specific part (don't worry, I'll show you where). The piece you need to copy to your clipboard is this:

"&lt;View&gt;&lt;Query&gt;&lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name="YOURCOLUMNNAME"/&gt;&lt;Value Type="Integer"&gt;&lt;UserID/&gt;&lt;/Value&gt;&lt;/Eq&gt;&lt;/Where&gt;&lt;/Query&gt;&lt;/View&gt;"

What this really looks like is this:
     <FieldRef Name="YOURCOLUMNNAME"/>
      <Value Type="Integer">
This is the dreaded CAML - a markup language used to get information from sharepoint lists like SQL will get information from SQL tables. What it means is that it needs to check the Field "YOURCOLUMNNAME" (which you will need to replace with the name of your person/group column that you want to filter by) and use the "UserID" integer (aka your ID number from sharepoint) to only get the ones where the ID number in that column matches yours. Where you will need to place this code, look toward the top of the code for your data view webpart and look for two things: 1) the words "SharePoint:AggregateDataSource" and several "<asp:Parameter"s. 2) just below the Aggregate data source and some of the parameters, you should see "SharePoint:SPDataSource" and toward the right you will find the phrase SelectCommand = "&lt;View&gt;&lt;/View&gt;" or something super close to that. Replace everything in quotes for the SelectCommand with the stuff from above. Be sure to rename the YOURCOLUMNNAME with the actual name of your column. This will filter that data source automagically for you. Hope that helps and doesn't increase brain fog.

Friday, July 30, 2010

Problems with SharePoint Anonymous Access

Out of the box, anonymous access is a pretty cool idea but breaks several things.  Just to help those who may think about anonymous access (defined as users that don't login at all on something), here is a list of things that are altered:

1. Workflows - worfklows that are set to automatically run when you create a new item will break if you turn on anonymous access.  Not only will the workflow not run, but here's what will typically happen:  a user will click "new", fill out your sharepoint form, and then they click OK.  When they do, they get an error message saying that there is a Server Out of Memory and think that something went wrong, so they try to fill it out again.  What the anonymous user DOESN'T know is that their information WAS submitted but the workflow didn't run.  The error message that they saw was in regard to the workflow.  If this happens, the primary way people are fixing it is to create a new list as a copy of the current list, copy all the data over from the old list to the new one, and delete the old list.  You CANNOT just delete the workflow...certain pieces of the workflow are not deleted when you delete a workflow and THOSE are the things that are breaking the workflow.  Some people have figured out another solution but this seems to be the main way to fix it.

2. Surveys - SharePoint surveys are already a very limited template but they get further limited with anonymous access in that you cannot use branching logic, page breaks, or limiting people to only filling out a survey 1 time.  This doesn't mean it's not useful, it's just very limited in its applications.

3. Libraries - Anonymous users are not meant to access libraries, so just get that out of your head now.  Technically, you can use a URL hack to allow them access but they won't be able to add and upload documents or anything.

4. InfoPath Forms - anonymous users can't access infopath forms unless you have forms-based authentication (which supplies a default username/password if none exists when you turn on anonymous access).

5. Edit or Read Your Own - these settings typically only allow someone to see or edit their own stuff...well, this is impossible with anonymous users because there's no way to tell one anonymous user from another and, thus, it will not show anything for anonymous users.  This can sometimes be a benefit and other times a problem.

That's all for now; if you find anything else, please let me know and I'll throw it up here.

Friday, July 16, 2010

Input Mask in InfoPath fields - entering phone numbers and emails

If you have a field in InfoPath where people are supposed to put in their email addresses or a website or phone number - you may have asked whether or not we can double-check that they put it in in a certain way (e.g. a phone number has to be entered in the format (123)555-7899.  There is a way to make this happen - even in browser forms - using something called Regular Expressions.  You won't see the phrase "regular expression" in InfoPath but you will see something like "matches pattern" or "does not match pattern" - which are regular expressions.  Here's the basic way they work:
Using either Conditional Formatting or Data Validation in your InfoPath form, you should have [Field1] [Does not match pattern] [some pattern goes here] - and the action or tooltip should either disable/hide the control or have a message stating something like "Please type your information in the correct format".  Patterns use the following building blocks:

0. If you want to have a symbol for any letter:  \p{L}
1. If you want to have a symbol for any character (letter, number, or symbol):  . (yes, that's a period)
2. If you want to have a symbol for any digit:  \d
3. If you want to use a period, parenthesis, or dash symbol:  \. or \( or \-
4. If you want one of the above to be used a certain number of times, you can use an *, a +, or a ? but they must go AFTER the thing you want to be only used a certain number of times.  * = 0 or more of that thing (e.g. \d* means either no digit up to a huge number - as big as you want).  + = at least 1 or more of that thing (e.g. \d+ means at least 1 digit but can get to be as big as you want).  ? = 0 or 1 of that thing (e.g. \d? means either a single digit or nothing).

So, how does this help you with making people enter phone numbers or emails correctly?  Here's what the patterns should look like:
(for phone numbers):  \d?\(\d\d\d\)\d\d\d\-\d\d\d\d
Notice how there's that optional digit at the beginning for the USA country code?  Obviously, international numbers will be a bit more complicated, but this will make people type in their phone numbers as 1(123)456-7899 or (123)456-7899 - depending on if they want a country code.

For email addresses:
  • See the first period means at least 1 character or more but can be any size.  This works great to make sure they at least type something but it could be anything like jdoe or bob or super_director.  
  • The @ symbol doesn't need anything special so you can just type it.
  • The \p{L}+ means at least 1 character but as many as you need to type your domain like gmail or aol or hotmail or yourcompany
  • The period needs that slash in front of it because periods do other things in regular expressions
  • After the period, there are two \p{L} because almost every ending to an email will have at least 2 letters (e.g. .us, .com, .net, .info, .gov, .edu, .org, etc.)
  • The last two \p{L}'s are followed by a question mark to mean that they are optional but that the most you can have is 4 letters.
So, for something else to try, why not see if you can make a pattern that checks to see if they type a web address correctly (as in, they have to type http(optional 's' here)://(www or some other word).something.something_up_to_4_letters (e.g. http://www.google.com).  If you want more, look up Regular Expressions or Regex to see what you can accomplish!

RELATED POST:  I have another post about this in regard to limiting the number of characters people are able to type in MULTI-line fields (if you have a regular textbox, there's an easy option to limit the number of characters on the Display tab...but NOT so if you choose to make that textbox multi-line):  Limit number characters in multi-lines of text InfoPath fields

Thursday, July 8, 2010

SharePoint Permissions Architecture - Part 2

So, what structure should you use? Well, the structure needs to match the needs of your organization. [Edit:  Where that can get tricky is whether or not you want to structure things in your SharePoint environment like you do in your organization...if you have a bad structure in your organization, SharePoint may give you a chance to "fix" it for those using SharePoint.  The following assumes a decent structure and you will notice that we are NOT talking about navigation here.]  Here's a general solution that I like:

1. Grab an organization chart for your entire organization [Edit: or a functional chart for your organization (org chart will probably break down by department; functional chart would break down more by the roles or maybe the purpose of sets of departments and may  be easier for users to understand)]

2. Have the SharePoint admin create site collections for each major division within your company

3. Create SharePoint sites for each major department

4. Create SharePoint sites INSIDE those sites for each sub-department

5. Start at the top and create SharePoint groups for each and every level (create a group per site collection, another per upper sites, and another for each of the subsites)...so every site has its own group. These are your broad team groups and you should place any Active Directory groups for these inside the appropriate SharePoint group. This makes managing the entire team a little easier on the SharePoint end because if someone changes departments or leaves or is a new-hire then they are updated in Active Directory (which updates their sharepoint permissions automagically).  [Edit:  Note:  if you use multiple site collections as I'm implying, you may want to use more Active Directory groups for those that need to reuse groups across site collections.  If it's an occasional thing, just create the group on each site collection since groups are specific to the site collection.]

6. For each site collection and site, create groups for each position that resides at this level (President group, VP group, CIO group, CEO group, etc.).  These groups will typically only have 1 person in them because we will base our groups off of roles people play (or their position) within the company.  At the higher levels, individuals fill certain roles while, near the bottom, vast groups of people comprise the teams that all have practically the same role/position within the company.
7. For each site, create similar groups for each level within a department (Dept 1 Director, Dept 1 Manager, etc.)

8. For each subsite, create groups for the slightly more specific positions (Dept1SubDept1 Manager, Dept1SubDept1 Supervisor, Dept1SubDept1 Senior Team, Dept1SubDept1 Team, etc.).

9. You might be wondering: "Why create a group for one guy?" - Answer: because you give that group permissions to multiple things...and later on, when that one guy moves around in the company, you don't have to go fix EVERYTHING he had access to...you just have to update the group and swap people out.

A couple of key things to note about this:
SharePoint Managers group: there ought to be SharePoint managers groups for each level so that those who have to manage SharePoint (and are in a trusted position) can do so...often, you can have SharePoint managers for each major department (sometimes you're lucky enough to have them for subdepartments) but give them full control of everything. There may be instances where they cannot have access to something - that should be stored either outside SharePoint or the list/library setup with custom permissions and (after it's all working) remove the SharePoint Managers group from it. Obviously, these should only be your departments' SharePoint gurus.  The owners of SharePoint Managers groups should be a higher-level SharePoint Managers group.

Group Owners: every group has an owner but you can use other groups to own or manage groups (manage being adding and removing people from groups). Depending on your needs, it is generally best to have one "Group Managers" group at each site and subsite level that is in charge of all groups within the site but does NOT have ANY permission to do ANYTHING else but manage the groups.  This will require some custom permission levels but it's not too bad to setup and doesn't require code or anything.  So, who "manages" the "Group Managers" group? That should be the closest SharePoint Manager group's job unless there is a specific department or systems administrator that is responsible for managing all permissions similar to an Active Directory permissions setup.  In my job, there is a department responsible for supporting sharepoint and, thus, we are pushing for that team to manage all of these "group manager" groups AND any "SharePoint manager" groups but then have all the smaller/more specific groups be maintained by those in the "group manager" groups.  Yes, I know this is prose for a tongue twister, leave a comment if you want clarification.

Group Membership viewable to everyone? Typically, it is best and easiest to make it so that everyone can view the membership of the group (everyone can see who's in what group). This makes for better accountability as well as easier communication when needing to find someone who resides in a group. This isn't always the case (especially in larger companies and places where special, exclusive groups where only those in the group can know who's in the group.

Directors: Directors are special. Typically, directors and those in higher positions are so busy that they don't have time to learn new technologies like SharePoint, so, typically Directors ought to have the ability to read/view everything within the site/subsite and that's ALL.

Telling Directors they get read only: Yea, go ahead, tell your director he gets read-only rights to the site...I'm waiting, give that a try and see how it goes. Here's the solution: you can create permission levels like Read Only (there's already a Read so no worries there) but you could copy READ and make your own called "Director-level" or "Audit" permissions...just make sure you check all permissions under "Personal Permissions" which allows them to create their own views and webparts as well as "enumerate permissions" to list all the permissions on something so they can contact those who "own" a list or site as necessary. This will satisfy their ability to access all information, generate their own dashboards and reports for the information, and they don't have to have the ability to royally screw up SharePoint by going click-happy.

Directors who know SharePoint: So, what happens when you get a director who happens to know SharePoint or learns it real fast and becomes a decent guru at it? Simple, add him to the Director group AS WELL AS the SharePoint Manager group for that level.

Teams who are cross-department or cross-functional: Simple again, just don't create a million groups for them, create the few that works internally for their department and give the appropriate groups permissions to your department info. That's the beauty of SharePoint groups...once they are created for their team, you can reuse them across the site collection (notice, to create groups that reach across all site collections, then the groups have to be created at the root level of SharePoint, often called the Web Application or Web [Edit: in Active Directory instead of SharePoint since SharePoint groups don't reach across site collections).

If you find any other typical exceptions to these that are worth noting, please let me know and I'll add them to the list. Hopefully, this gets you started on a permissions plan.

Tuesday, July 6, 2010

SharePoint Permissions Architecture - Part 1

SharePoint is a bit of a beast when it comes to managing access to sites, lists, and libraries.  To plan out many of these involves discussions on every major layer of a company and their various needs.  The building blocks of a Permissions architecture are the following:
1. Users -> Users are defined using Active Directory (a server that is like a giant contact list for your company...it holds who you are, what dept you are in, your password, phone number, etc.).
2. Active Directory Groups -> In Active Directory, groups can be made so that you can work with people as chunks instead of individuals.  This is a great help when it comes to thousands of people being involved in your company...who wants to manage them all individually!?
3. SharePoint Groups -> Active Directory groups are more common as larger groups of people.  At a school, for instance, there might be groups for Faculty, Staff, and Students (amongst others).  There might even be groups broken out by department.  Often there is a need for more specific groups when it comes to sharepoint or even a mixture of multiple groups.  So, SharePoint will let us create our own groups of people (and you *can* include AD groups INSIDE or AS A PART OF a sharepoint group).
4. Types of Authentication - what does Authentication mean?  It means how your company verifies your username and password so that only you can access what you are supposed to (keeps other people out of your business ^_^).  There are several types between SharePoint 2007 and 2010 but these are usually set by your company's IT department and not something you generally have control over.  A couple of examples include:  Forms-Based Authentication (whenever you try to go into SharePoint or Webmail or some other Microsoft-based stuff, you get a webpage that asks for your username and password and then sends you to the webpage you were trying to go to) and Windows Authentication (pops up with a login box for you to type your username and password - and often a domain - and it logs you in and takes you to your page...though, you often have to log in again if you try to go to another system like Webmail, depending on how your company has set things up).  2010 introduces a new type of authentication called Claims-based authentication, look it up on google for a fun read, but is sort of a hybrid of multiple authentication types.
5. 3 layers of access in SharePoint - there are 3 primary places where permissions can be set:  the Site (giving access to an entire webpage), the list (you can set specific permissions on all the lists or some of the lists in a particular site), and the item (items INSIDE a list can have their own permissions set so that certain people can't see certain items...great for manager-only items in a public location but SHOULD BE AVOIDED if at all possible). 
6. SharePoint Permissions Inheritance - SharePoint's permissions are connected and automatically set (and updated) by the level above whatever you are looking at (see the levels in the previous point).  If you make a change at that uppermost level, all things underneath it reflect that same change and you are only allowed to edit the Site level.  This works great in an ideal world - and you might be able to get some leverage out of this on occasion, but there are too many reasons to customize permissions for a certain list or library.

So, that's it for now, the next post will explain how to arrange your building blocks into a decent permissions standard for the organization.  Mind you, there is no one-size-fits-all solution for permissions architecture but this one will get you started thinking along those big-picture lines of permissions.

Monday, July 5, 2010

Tip for displaying the HOUR only in Excel

Situation:  you have pulled some date/time data from another source (in my case SharePoint) but don't know how to group/aggregate the data so that you can determine which hour of the day had the most entries.  Grouping itself tends to be a little messy in Excel and requires a decent amount of work to separate all the pieces out by you.  Here's a nifty little formula that uses just nested IF statements to determine what hour of the day (in military time) the event occurred so you can then run functions like the average number of entries or the total of them - and H2 happens to be the cell where my date/time value was located:

This is based on these calculations (they ARE rounded so you may have to tweak them ever so slightly):
8am = .33
9am = .375
10am = .4167
11am = .4583
12pm = .5
1pm = .5417
2pm = .5833
3pm = .625
4pm = .6667
5pm = .7083

Tuesday, June 8, 2010

Tip for cleaning out Outlook PSTs

So, a typical scenario in the business world (when working with email pack rats - you know who you are) is that Outlook (any version) uses a PST file to store your emails.  This happens when the people who setup outlook at your company give you a limit on how much space can be used up by your emails, you hit that limit, and then you decide to "Archive" your emails.  At that point, all emails that are older than a certain date get moved into a single file called a PST file (because it ends in .pst) and is placed somewhere (probably in your documents, on a network drive - which isn't really all that supported by Microsoft I don't think, or in an obscure folder in your computer like C:\Documents and Settings\YourUsername\Local Settings\Application Data\Microsoft\Outlook or something like that.

Well, you mosey along with your archiving, thinking the world is your oyster, until you hit the next big problem:  PSTs shouldn't go over 2 Gb (that's "giga-bytes") in size.  How do you know if your PST is too big?  Open up your outlook, right-click on your "Personal Folders" or whatever they are called, left-click "Properties", and then left-click "Folder Size".  This will come up and tell you your size in KBs...every 1000 KBs is a Mb (Mega byte) and every 1,000,000 KBs is a Gb.  If you are over 2 million KBs then you have drastically improved your chances of that PST file BREAKING HORRIBLY.  So, how do you clean your PST emails so that you can bring that size down?  There are a few ways:

1. Open your personal folders in outlook and look at that folder size thing again...look at which folders hold the most stuff and then go open that folder.  When you so, you can sort your emails by SIZE instead of by DATE RECEIVED.  To do this in Outlook 2007, simply left-click the top of the small window where you see your list of emails and then click "Size" (also, make sure to click the bottom part that says "Show in Groups" if you don't already have that option checked).  This will let you look at your biggest emails - probably ones with huge attachments like pictures of someone's dog...get rid of these emails by holding the SHIFT key and pressing the DEL key on your keyboard.  This will permanently delete that email.

2. Let's say you see a bunch of emails in that folder that need to be deleted...here's a way to select more than one:  hold down the CTRL key and just keep left-clicking the emails you will delete and, after you have selected several, let go of the CTRL key and then hold down the SHIFT key and press the DEL key.

3. Let's say you realize that you just have way too many emails, most are several years old, and you just don't care any more with the exception of certain words or phrases in the emails.  Here's what you can do:
  • Create a new PST file by clicking File->New->Outlook Data File and choosing where the PST file should go
  • Go left-click your Personal or Archive folders and then click the View menu -> Current View -> Define Views
  • Click the "New..." button, give this new view a name like "Test View", choose "All Mail and Post Folders" at the bottom, and click OK
  • Click the Fields button and start left-clicking anything on the right that is not FROM, SUBJECT, RECEIVED, ATTACHMENT, and SIZE and click OK
  • Click the Filter button - this is where you can add special filters to only show you certain emails (like ones with special keywords or are a certain size or between certain dates).  You can even use SQL (pronounced "seek-wool") to search for emails if you want to (but that's for advanced users, so let's go with simple...if you want to edit the SQL, set some settings first and see what SQL is generated in that tab by Outlook so you can get a feel for the field types)
  • In the first box (Search for the word(s)) type in any special words that you think are important - separating them by commas - and choose "In subject field and message body" for the second dropdown.  This will search for any of these words in your emails period.  This should be enough for you to narrow down what you want so click "OK" (If you need more specific stuff, like all those keywords but only from certain people, you could click the From boxes or Sent To or whatnot)
  • Click OK again and click "Apply View" to see what this view looks like on the folder you have selected.  If you need to look at that same view in another folder, you can just click that folder, click the "View" menu, and choose your view...just remember to switch it back when you are done, otherwise you might mess yourself up in the future when looking at that folder :)
  • Now that you are seeing the emails you want, you can select them all and cut-n-pasting them to your new Personal Folders you created at the beginning.  Once you have copied all the emails you want to keep, delete the PST file from Outlook and then from wherever it was being stored because you don't need those old emails anymore.  Congratulations - you have just purged your Personal Folders.
  • If you need further help with this idea, just email me or comment.

Tuesday, May 18, 2010

CTT+ Passed

I'm so excited - I finally passed the performance-based portion of the CTT exam. For those who haven't dealt with this process I'll summarize: You take a written exam which is very, very special and often difficult because the scenarios presented aren't always clearly tied to the answers. The performance-based portion is where you tape a 20-minute training session and send it in for review. Sounds simple, right? Well, you have to make sure you are reaching every major and sub areas to be judged on in your video (all 12 of them)...not easy to do in 20 minutes.

On top of that, the process for submitting your video can be hectic because you either need to submit electronically (in the exact format specified - only available to be encoded if you have Adobe Media Encoder which is part of Adobe Flash CS4 - and in a small size limit for transer) or in DVD format to a smaller company that accepts and processes the videos. If your video isn't in the proper format, it's an extra charge. If your video is way too big, possibly another extra charge. If your video is somehow invalidated - no refund. If you use aliases or pseudonyms in your video - prepare for a world of hurt. All in all, it's a tough certification and you'll be soooo happy when it's over with that you will want to tell everyone.

Thursday, May 13, 2010

InfoPath Form Layout - Proper Design

You've decided to create an infopath form but don't want to do the whole "let's make this and see how it works and then figure out the 'right' way to do it" approach. One simple tip that will really help in laying out your form for both presentation sake and for data source/structure's sake: EVERY label AND control should have their OWN cells inside a table which is inside a section which is inside another table.

This may sound strange, but let's break it down further. You have a simple form with 4 fields (First Name, Last Name, Favorite Food, and Favorite Color). You should firstly think of how the information should be grouped (name info and favorites info) and use that to think of how many sections you will need. For this we would need two sections. Once you have your number of sections, add 2, and that's how many rows you need for a simple form (one of those rows is the title row and the other will be for the submit button). To create this layout, I used a Table with Title layout table, split the second cell into 3 rows, removed the shading on the second row and all borders on those bottom rows, gave it a title, put two sections in their respective rows, and put a button down at the bottom. From there, you place a Custom Table inside the sections to allow you to put controls and their labels into the section in an organized fashion. Having done that, name all the controls and sections by double-clicking them and changing the Field or Group Name. Here's what the results looked like in both the table and then the data source menu:

This particular way of doing things will keep all of your data sources in named folders and makes it easy for those coming later to identify where a data source should exist on the basic page. All corresponding data is automatically grouped together for easier retrieval, if necessary, from them pesky programmers. Have fun!

Wednesday, May 12, 2010

So I've been gone a while

It's been a while but I'm starting to come back around to updating with some new posts, so here's some of my recent stuff:

1. Our SharePoint setup was such that everything was in a single content database and single site collection. This has proven troublesome, especially in MOSS 2007, so the system admins are going to split some subsites into their own site collections and group them into multiple content dbs. We're hoping to be able to point out where some of our current performance flaws exist in doing this but also to prepare for a migration to SharePoint 2010.

2. Working on the CTT+ certification...fun times there...pro tip: don't have people use funny first names in your video - creates a world of havoc in submission and processing.

3. Created a vehicle registration form for the university to register (2) vehicles in an infopath form, submit each vehicle as a separate form to sharepoint, and then process those via Access on the backend. This is a pretty simple but cool setup and didn't involve any major work EXCEPT: infopath decided, upon one of the publishing processes, to add a 'comment' tag in 3 different places...there wasn't a comment opening tag or any actual comment, just that closing tag. I also got an error for "unexpected CSS formatting" or "potentially unsafe HTML found in your form". To fix the comment issue, you have to do the scaries thing ever: Save your infopath form "as source files" and then open the particular view.xsl in notepad++ and look at the CODE...scary...and then do a simple find for the word 'comment' and see what you find. I just deleted the tags since they weren't connected to anything and that fixed them (you won't see them anywhere in the form, just in the code).

4. Learned a nifty trick on Microsoft's website for determining if someone who is opening an infopath form is opening it in the browser of if it's being opened in InfoPath: use a condition on an opening rule that says "matches the expression": "xdEnvironment:IsBrowser"...this is useful if you want to have certain views used internally for processing but the main page be a browser form for public use.

5. Had an interesting problem sent to me: someone deleted a list in sharepoint and, when it was restored (not from the recycle bin), the list had a new ID number (called a GUID). This messed up several things that were originally connected to this list; however, there was a simple albeit scary solution for it: open up the site in sharepoint designer and just do a simple find-replace for the original list's GUID with the new one...had several thousand fixes - mostly from workflow configuration and workflow history. After I did that, I double-checked the workflows themselves and noticed that you can open these up as xml files and just do a find and replace there too - so i did. Between the two pieces, it fixed all references to the list and all workflows now work just fine.