Category Archives: June 2008

June 2008 SUGDC conferentia — Quod suus a involvent

I attended my first ever SharePoint conference this past weekend and it was a blast.

Thursday afternoon, I drove down to Virginia, guided by my newly purchased $50 GPS appliance plug-in thing to my phone. The device was flawless. After the five hour drive, I had the energy to do a nice run on the tread mill and then, even more surprisingly, had the energy to head to the lobby for an advertised speaker’s cocktail hour. Conference n00b that I am, it turned out that the cocktail hour was really a ruse to get speakers to show up and help stuff papers and swag into shoulder bags for conference attendees 🙂

Had a hard time sleeping because I was speaking first thing Friday AM. Nervousness, a nagging feeling that I needed to add a slide to my presentation and a very disturbing cat show on Animal Planet kept me up late. Since I went to sleep late, I naturally got up early. I did add a fairly detailed technical architecture slide. It was well worth the effort because the 25 minutes of Q&A would have been very awkward without it. I was lucky to get the first slot in the technical track. Sahil Malik was originally going to speak Friday AM and I was going to speak Saturday but he needed to swap times. This allowed me to do my presentation and then sit back and enjoy everything going forward Friday and Saturday.

The presentation went OK. I definitely have room to improve it. I spoke about how we can access and use web services from a SharePoint Designer workflow using a custom action. Super tempus, I will tie this information into my series over at EUSP.com for End Users trying to get the most use out of that tool. I blew through my slides and demo in 35 minutes, to my dismay at the time. Luckily, Q&A was lively, no doubt helped by the fact that it was early morning before lunch. Q&A is my favorite part of any presentation.

There were many interesting subjects and I hope to blog about them in greater detail this week (time permitting, as always). A fellow from CMS Watch provided a highly critical yet very hopeful review of SharePoint’s position in the market. A different discussion focused on the paucity of SharePoint resources and the difficulty that recruiters have finding good talent that is also "affordable" in this very tight market. The CMS Watch guy referred to the SharePoint human resources pool as being like a "guild." I’m mainly familiar with that term in MMORPG terms and it gave me a little thrill, to be honest 🙂

The highlight of the conference was just meeting and catching up with people I’ve "known" online for a while. The best was sitting at the bar with Becky Isserman (MossLover) nam 3 aut 4 hours (and that, after I had finished drinking for the night). I don’t often get to talk about Farscape aut Babylon 5 with Kansas City residents.

Bob Fox was there and as usual, is a whirlwind of intros, chats and just plain frenetic energy. He invited me to Saturday breakfast with Sahil Malik and that was great.

Saturday (day 2), Mike Lotter dragged himself to the conference to speak about InfoPath and then he joined Becky at the end of the day to do a sort of general Q&A session for about 30 ad 45 minutes mainly focused on InfoPath (Mike) and AJAX (Becky). I wish Becky had been able to go through her full/formal presentation but I’m sure I’ll get a chance to see that one of these days. I have a feeling she’ll be "hitting the circuit" going forward.

I could go on and on. Two last points — the financial purpose of the conference was to raise money for the Children’s Miracle Network and it raised $5,000. That was awesome. Tandem, I want to publicly thank Gary Blatt, Gary Vaughn and Bob Fox for alerting me to and allowing me to speak at the conference. Utique, the two Gary’s had a team of people supporting and organizing and all of you were awesome. I had high expectations before I went and it was better than I had hoped for.

Keep on the alert for the next conference scheduled for November 7th and 8th. Aside from some great content, it’s terrific for meeting up with all those online personalities you’ve known through blogs, twitter, forums, etc.

</finem>

Scribet ad mea blog.

Technorati Tags:

FBA et SQL Servo: Amore fabula

My colleague has been working on a web part in an FBA environment. Among other things, the web part pulls some data from SQL server. The grand plan for this project dictates that a DBA configures data level security in SQL (ut opponitur ad a user embedding ID SQL query in a, aut alio aditu).

The problem is that SQL server doesn’t know anything about our FBA environment so it can’t trust us. We solved this problem by, pro defectu melius verbum, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.

Est ASP.NET quamvis FBA pluma, nos docuerunt populum SharePoint Gente diversis quaero engines quod es querying pro FBA, you must mean you want know how to configure FBA in SharePoint. I failed to find find any information on how to enable an FBA oriented ASP.NET application to communicate with SQL in the way we needed.

In hoc tractu investigantibus, nos re-lego is article: ASP.NET imitatione discretos

Magis investigationis duxit nos ad hoc articulus codproject: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Quod nostris moribus auxiliatus est nobis scribere, which I’ve included below. It’s not the most elegant stuff, but it worked. I hope you find it helpful.

Hic 'quod operatus est in nobis codicem:

protegetur btnSearchCarrier_Click vacuo(obiectum mittentis, E EventArgs)
 {
 experiri
 {
 ImpersonateUser iu- novum ImpersonateUser();
 // Todo: Restituo credentials
 ("DomainName", "UserName", "Password");

//
 LEX
//

 iU.Undo();
 }
 capiendos (Exceptio ex)
 {

 }
 }

// Sicut infra annotatum genere utens imitatione discretos.

publica genus ImpersonateUser
 {
 [DllImport("advapi32.dll", SetLastError = verum)]
 publica static externus bool LogonUser(
 String lpszUsername,
 String lpszDomain,
 String lpszPassword,
 int dwLogonType,
 int dwLogonProvider,
 Ref IntPtr phToken);

 [DllImport("kernel32.dll", Charset = CharSet.Auto)]
 privatis externus static bool CloseHandle(IntPtr manubrio);

 privatis static IntPtr tokenHandle = novum IntPtr(0);
 privatis static WindowsImpersonationContext impersonatedUser;

 // Si in hoc Codice incorporamus DLL, esse certa ad eam deposcendam
 // decurrat FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
 publica Irrita Personatus(string domainName, string username, string Signum)
 {
 experiri
 {

 // Utor user indicium pro unmanaged LogonUser muneris impetro
 // User praefinitum, dominico, et password.
 Const int LOGON32_PROVIDER_DEFAULT = 0;

 // Praeteriens hoc parameter facit LogonUser creare primum indicium.
 Const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Ingrediamur -1 Vocare ad obtinere LogonUser manubrium accessum indicium.
 bool returnValue = LogonUser(
 Username,
 domainName,
 Signum,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 Ref tokenHandle); // tokenHandle - novum securitatis indicium

 si (returnValue falsum ==)
 {
 int-ret Marshal.GetLastWin32Error();
 Console.WriteLine("LogonUser call failed with error code : " +
 ret);
 mittent novum System.ComponentModel.Win32Exception(ret);
 }

 // Ingrediamur - 2
 WindowsIdentity newId = novum WindowsIdentity(tokenHandle);
 // Ingrediamur -3
 impersonatedUser = newId.Impersonate();

 }
 capiendos (Exceptio ex)
 {
 Console.WriteLine("Exception occurred. " + ex.Message);
 }
 }


 /// <Summary>
 /// Sistit imitatione discretos
 /// </Summary>
 publica Irrita abrogare()
 {
 impersonatedUser.Undo();
 // Libera indicia.
 si (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</finem>

Scribet ad mea blog.

Technorati Tags:

Additoque lore: SSRS michi “rsAccessDenied”, Sed … Ego vere praesto

Pauci retro weeks, I was working with my developer colleague on a project involving SQL Server Reporting Services plug-in for MOSS. He was developing a web part that provides a fancy front-end to the report proper (pelagus pluma esse ingeniosi lookup in parametrum investigabiles values ​​post aliquot millia).

This was working great in the development environment but in the user acceptance testing (UAT) environment, it wouldn’t work. Firing up the debugger, we would see exception details like this:

The permissions granted to user ‘UAT_domain\mosssvc’ are insufficient for performing this operation.(rsAccessDenied).

If you do a live search on the above error, you find it’s quite common. Scarily common. The worst kind of common because it has many different potential root causes and everyone’s suggested solution "feels" ius. We probably tried them all.

In nobis, the problem was that we had done a backup/restore of DEV to UAT. Somewhere in the data, something was still referring to "DEV_domain" (instead of the updated "UAT_Domain"). We created a new site, added the web part and that solved our problem.

Hopefully this will save someone an hour or two down the line.

</finem>

Scribet ad mea blog.

Technorati Tags:

Vivos Fix: Accessu SharePoint Site iacit; [HttpException (0x80004005): Ex rogatu denuntiabatur.]

One of my developer colleagues was working on a project this week and ran into a timeout problem while working on building some crazy web part. His web part was fine, but "suddenly" finitimus dolor sit valde lenta et saepe de isto errore feriati:

[HttpException (0x80004005): Ex rogatu denuntiabatur.]

I logged in and saw that several other sites were just fine. I suspected that there were some hidden web parts on the page and using the trusty ?contents=1 debug technique, I did in fact find 11 web parts on the page, only two of which were visible. Even better (from a let’s-hope-I-find-something-ugly-here-that-I-can-fix perspective), three of those closed web parts had a name of "Error".

I deleted those web parts (which itself took a surprisingly long time) and that solved the problem. For today 🙂

</finem>

Scribet ad mea blog.

Technorati Tags:

In-genus GRAVITER disciplina est Excellent

Ego incipiens die 4 ieiunium socium scriptor disciplina headed by Kaye usque hic in Needham, MA.

Hac die V-sessionem est fractus in classes (3 et 2 diebus respectiue) entitled "FAST ESP: Quaerere Applications Lorem societatis progressum ego Socii" and "FAST ESP: Developing Custom Search Applications for Alliance Partners II".

This is a real boot camp type class. The material is deep (very, very deep). The instructor (Larry) clearly knows his stuff. I highly recommend this training if you considering it.

</finem>

SharePoint et ieiunium — Reese scriptor Peanut butyrum scyphi in Enterprise Apps?

Ive 'perfectus usque hodie 2 ieiunium disciplina in apricis Needham, MA, Ego cum ideas et abruptis (Lorem genus omne bonum, quod ego faciam). One particular aspect of FAST has me thinking and I wanted to write it down while it was still fresh and normal day-to-day "stuff" impulimus ea de capite meo.

Nos SharePoint WSS 3.0 / MUSCUS implementers saepe faciem a lentus quaestio, nec rationabiliter amplitudo SharePoint project: Quam nos adepto totus notitia untagged SharePoint onustos in tale quod congruit omnes in nostra perfecte architecturae consilium notitia?

Saepe satis est, Hoc problema eo quod scopum non tam duram nobis de tribulatióne: "We don’t care about anything more than 3 months old." "We’ll handle all that old stuff with keyword search and going-forward we’ll do it the RIGHT way…" Etc.

Sed, what happens if we can’t scope ourselves out of trouble and we’re looking at 10’s of thousands or 100’s of thousands (aut etiam millions) ex fetu — loading et nostras tagging sit votivum?

GRAVITER esset responsio.

GRAVITER scriptor comprehendo quaero processus multum moveris partibus una sententia est hoc, simpliciores:

  • A contentus spectat processum crawler.
  • Invenit eam, et manus contentus ad sectorem processus efficit quod stagnum document processus.
  • Sectorem processus manus contulerunt ad unum de tabulis processors.
  • Document processus effingit tabellae a via processus pipeline, effingit bejeezus de tabellae off manus indicem ad processum typus aedificator.

In starship GRAVITER, we have a lot of control over the document processing pipeline. We can mix and match about 100 pipeline components, maxime Interestingly, we can write our own components. Like I say, FAST is analyzing documents every which way but Sunday and it compiles a lot of useful information about those documents. Those crazy FAST people are clearly insane and obsessive about document analysis because they have tools and/or strategies to REALLY categorize documents.

Ita … Nostro quidem more cum usura ieiunabo compositum pipeline component, we can grab all that context information from FAST and feed it back to MOSS. It might go something like this:

  • Documentum alui est in ieiunium MUSCUS.
  • Integer risus obsessive-GRAVITER document parsing et accidit categorization.
  • Nostro quidem more pipeline stillæ aliqua illius pars context notitia differs a database.
  • Processus notitia nostra consilium legit context, quasdam sententias, quemadmodum oporteret MUSCUS documentum nostra IA et notat usque telam militia usura obiectum exemplar.

Utique, automated processus nihil tale potest esse perfecta, sed gratias ad obsessive (et forte insanit-sed-in-a-Bonum-modo populum GRAVITER), habeamus realis pugna jaculari efficax onus Missae processus magis quam iustus repleret SQL database cum fasciculum vix investigabiles documenta-.

</finem>

Scribet ad mea blog.

Ad Finem discere Users www.EndUserSharePoint.com

Marcam Miller super ad http://www.endusersharepoint.com Ædificavit, in experientia, the best end-user focused SharePoint site in the ‘sphere. In ultimo mense,, he has enlisted some of the premier end-user focused bloggers around to contribute to the "front page" in a ordinarius basis, possidet, non limitatum ad Paulus Culmsee, Aliquam Chris, et Dessie Lunsford. He has others lined up and ready to contribute as their schedules allow.

Ut, si forte, et misit me post inauguralem meam Adest. I’m writing a series on how to use SharePoint Designer to create first-class business workflow solutions. In keeping with the EUSP.com’s focus, his articulis erit semper finis, et media fronte User.

EGO personally tendo orbis in tres divide SharePoint coetus latum: SharePoint consultants, full-time SharePoint staff developers and end users. When I write, Quaero saepe me, in qua agitur de istis alliciat? Most often, Nam primae duae rationes scribendi finem faciam (technica) coetibus, maxime quia ipse ego sum Consultoris; it’s always easier and more authentic to write about those things with which you’re most familiar on a personal level.

Ut Ive praenotatum, Longe finem user communitate, far larger than the technical community. EUSP.com is top-notch and I heartily recommend it to all three groups. The site’s laser focus is obviously valuable to end users. Autem, we developers and consultants can only be better at our profession if we can understand and effectively respond to the needs of the end users we serve. I know I need all the help I can get 🙂 Reprehendo eam.

</finem>

Scribet ad mea blog.

INVOCATIO SSRS Web Services Ex WSS / Opera MUSCUS in FBA

We needed to invoke the "CreateSubscription" method on an SSRS web service that is hosted in an FBA managed MOSS environment from a custom web part. We kept getting variations of:

  • 401: Ne aucto
  • Id quod movetur

The "object moved" message was most interesting because it was saying that the "object" (servicium nostrum SSRS) had "moved" to login.aspx. This clearly meant we had some kind of authentication problem.

I eventually realized that I had bookmarked a blog entry by Robert Garret that described how to invoke a general purpose WSS/MOSS web service living inside an FBA environment. Note that I can’t link directly to the article (tamquam 06/09/08) because it wants to authenticate. The link I provide brings you to an "all posts" view and you can locate the specific article by searching for "Accessing MOSS Web Services using Forms Based Authentication".

Hic 'quod operatus est in nobis codicem:

ReportingService2006 rs = nihilo; 
// Authenticate Authentication auth = novum Authentication(); 
auth.Url = "http://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
novum CookieContainer();
LoginResult result = auth.Login("userid", "password");
si (result.ErrorCode == LoginErrorCode.NoError) 
{
// No error, so get the cookies.
CookieCollection cookies = auth.CookieContainer.GetCookies(novum Uri(auth.Url));
Cookie authCookie = cookies[result.CookieName];
rs =
novum ReportingService2006();
rs.Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs.CookieContainer =
novum CookieContainer();
rs.CookieContainer.Add(authCookie);
}
experiri
{
  rs.CreateSubscription(report, extSettings, desc, eventType, matchData, parameters1);
}
capiendos (Exceptio ex)
{
  Console.WriteLine(ex.Message.ToString());
}

I interpret things to work like this:

  • Our web part needs to dial up the authentication service and say, "Hey, Tony, it’s me!".
  • Authentication service replies saying, "Hey, I know you. How are the kids? Here’s a token."
  • We call up the SSRS service and say, "Tony sent me, here’s the token."

</finem>

Scribet ad mea blog.

Have You Performed Your Monthly Search Analysis?

It’s a good practice, probably even a Best Practice, to review your search reports once a month and look for opportunities to add best bets, tune your thesaurus and maybe even uncover some business intelligence that is otherwise hidden to management.

It’s already the 3rd of the month. Time’s awastin’ 🙂

</finem>

Scribet ad mea blog.

Technorati Tags:

Faceted Search Fence Sitter No More

I had reason today to play about with the codeplex faceted search project today.

It’s been around for a while, but I hesitated to download and use it for the usual reasons (mainly lack of time), plus outright fear 🙂

If you’re looking to improve your search and explore new options, download it and install it when you have an hour or so of free time. I followed the installation manual’s instructions and it took me less than 20 minutes to have it installed and working. It provides value minute zero.

It does look pretty hard to extend. The authors provide a detailed walk-through for a complex BDC scenario. I may be missing it, but I wish they would also provide a simpler scenario involving one of the pre-existing properties or maybe adding one new managed property. I shall try and write that up myself in the next period of time.

Imo linea — in minutes, you can install, configure it, use it and add some pretty cool functionality to your vanilla MOSS search and be a hero 🙂

</finem>

Scribet ad mea blog.

Technorati Tags: