כוידעשלעך אַרטשיוועס: יוני 2008

יוני 2008 סוגדק קאָנפֿערענץ — אַז ס אַ ראַפּ

איך אַטענדאַד מיין ערשטער אלץ שאַרעפּאָינט זיצונג this past weekend and it was a blast.

דאנערשטיק נאָכמיטאָג, איך פארטריבן אַראָפּ צו ווירזשיניע, גיידיד דורך מיין ניי געקויפט $50 GPS appliance plug-in thing to my phone. The device was flawless. After the five hour drive, איך האט די ענערגיע צו טאָן אַ פייַן לויפן אויף די טרעד מיל און דעמאָלט, אַפֿילו מער סאַפּרייזינגלי, 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 מינוט פון ק&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. Over time, איך וועל בונד דעם אינפֿאָרמאַציע אין מיין סעריע איבער אין EUSP.com for End Users trying to get the most use out of that tool. I blew through my slides and demo in 35 מינוט, to my dismay at the time. Luckily, ק&א איז געווען לעבעדיק, no doubt helped by the fact that it was early morning before lunch. ק&A is my favorite part of any presentation.

עס זענען געווען פילע טשיקאַווע סאַבדזשעקס און איך האָפֿן צו בלאָג וועגן זיי אין גרעסער דעטאַל דעם וואָך (צייַט פּערמיטינג, ווי שטענדיק). 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 בעקי יססערמאַן (מאָססלאָווער) פֿאַר 3 אָדער 4 שעה (און אַז, נאָך איך געהאט פאַרטיק געטרונקען פֿאַר די נאַכט). I don’t often get to talk about פאַרסקאַפּע אָדער בבל 5 מיט קאַנסאַס סיטי רעזידאַנץ.

באָב פאָקס איז געווען דאָרט און ווי געוויינטלעך, איז אַ כווערלווינד פון ינטראָוז, chats and just plain frenetic energy. He invited me to Saturday breakfast with Sahil Malik and that was great.

שבת (טאָג 2), מייק לאַטער דראַגד זיך צו די זיצונג צו רעדן וועגן ינפאָפּאַטה און דעריבער האט ער זיך איינגעשריבן בעקי אין די סוף פון די טאָג צו טאָן אַ סאָרט פון אַלגעמיינע ק&א סעסיע פֿאַר וועגן 30 צו 45 מינוט דער הויפּט פאָוקיסט אויף ינפאָפּאַטה (מייק) and AJAX (בעקי). 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" געגאנגען פאָרויס.

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. לעסאָף, איך ווילן צו עפנטלעך דאַנקען גערי בלאַט, Gary Vaughn and Bob Fox for alerting me to and allowing me to speak at the conference. אַוואַדע, 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, עס ס גוואַלדיק פֿאַר באַגעגעניש אַרויף מיט אַלע יענע אָנליין פערזענלעכקייטן איר ווע באקאנט דורך בלאָגס, טוויטטער, גרופּעס, אאז"ו ו.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

פבאַ און סקל סערווירער: א ליבע סטאָרי

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 (ווי קעגן צו עמבעדדינג אַ באַניצער שייַן אין אַ סקל אָנפֿרעג אָדער עטלעכע אנדערע צוגאַנג).

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, פֿאַר מאַנגל פון אַ בעסער וואָרט, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.

אפילו כאָטש פבאַ איז אַ ASP.NET שטריך, מיר שאַרעפּאָינט נאַציאָן מענטשן האָבן געלערנט די פארשידענע זוכן ענדזשאַנז אַז אויב איר ניטאָ קוועריינג פֿאַר פבאַ, 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.

אין די לויף פון ריסערטשינג דעם, מיר שייַעך-לייענען דעם אַרטיקל: ASP.NET ימפּערסאָנאַטיאָן

מער פאָרשונג געפירט אונדז צו דעם קאָדפּראָדזשעקט אַרטיקל: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

אַז געהאָלפֿן אונדז שרייַבן אונדזער קאָד, which I’ve included below. It’s not the most elegant stuff, אָבער עס געארבעט. I hope you find it helpful.

דאָ ס דער קאָד וואָס געארבעט פֿאַר אונדז:

פּראָטעקטעד פּאָסל בטנסעאַרטשקאַרריער_קליקק(כייפעץ סענדער, עווענטאַרגס E)
 {
 פּרובירן
 {
 ו = ימפּערסאָנאַטעוסער נייַ ימפּערסאָנאַטעוסער();
 // אַלע: Replace credentials
 iU.Impersonate("DomainName", "UserName", "Password");

//
 CODE
//

 iU.Undo();
 }
 כאַפּן (ויסנעם עקס)
 {

 }
 }

// Using Impersonation class as mentioned below.

עפנטלעך קלאַס ימפּערסאָנאַטעוסער
 {
 [DllImport("advapi32.dll", SetLastError = ריכטיק)]
 עפנטלעך סטאַטיק extern bool LogonUser(
 String lpszUsername,
 String lpszDomain,
 String lpszPassword,
 int dwLogonType,
 int dwLogonProvider,
 ref IntPtr phToken);

 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
 פּריוואַט extern סטאַטיק bool CloseHandle(IntPtr handle);

 פּריוואַט סטאַטיק IntPtr tokenHandle = נייַ IntPtr(0);
 פּריוואַט סטאַטיק WindowsImpersonationContext impersonatedUser;

 // If you incorporate this code into a DLL, be sure to demand that it
 // runs with FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
 עפנטלעך void Impersonate(string domainName, string userName, string password)
 {
 פּרובירן
 {

 // Use the unmanaged LogonUser function to get the user token for
 // the specified user, domain, and password.
 const int LOGON32_PROVIDER_DEFAULT = 0;

 // Passing this parameter causes LogonUser to create a primary token.
 const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // טרעטן -1 Call LogonUser to obtain a handle to an access token.
 bool returnValue = LogonUser(
 userName,
 domainName,
 password,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 ref tokenHandle); // tokenHandle - new security token

 צי (false == returnValue)
 {
 int ret = Marshal.GetLastWin32Error();
 קאָנסאָלע.ווריטעלינע("LogonUser call failed with error code : " +
 ret);
 וואַרפן new System.ComponentModel.Win32Exception(ret);
 }

 // טרעטן - 2
 WindowsIdentity newId = נייַ WindowsIdentity(tokenHandle);
 // טרעטן -3
 impersonatedUser = newId.Impersonate();

 }
 כאַפּן (ויסנעם עקס)
 {
 קאָנסאָלע.ווריטעלינע("Exception occurred. " + ex.Message);
 }
 }


 /// <קיצער>
 /// Stops impersonation
 /// </קיצער>
 עפנטלעך void Undo()
 {
 impersonatedUser.Undo();
 // Free the tokens.
 צי (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

אַדינג צו די לאָר: ססרס דערציילט מיר “רסאַקסעססדעניעד”, אָבער … איך טאַקע טאָן האָבן צוטריט

א ביסל וואָכן צוריק, 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 (דער הויפּט שטריך זייַענדיק אַ קלוג לאָאָקופּ אויף אַ פּאַראַמעטער מיט עטלעכע טויזנט סעאַרטשאַבלע וואַלועס הינטער אים).

This was working great in the development environment but in the user acceptance testing (ואַט) סוויווע, 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.(רסאַקסעססדעניעד).

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" רעכט. We probably tried them all.

In our case, 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.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

שנעל פיקס: אַקסעסינג שאַרעפּאָינט מאַפּע טהראָווס [הטטפּעקססעפּטיאָן (0קס80004005): בעטן טיימד אויס.]

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" אַ אַנרילייטיד פּלאַץ געווארן זייער פּאַמעלעך און אָפט טיימד אויס מיט דעם טעות:

[הטטפּעקססעפּטיאָן (0קס80004005): בעטן טיימד אויס.]

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 🙂

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

אין-סאָרט שנעל טראַינינג איז ויסגעצייכנט

איך בין סטאַרטינג טאָג 4 פון שנעל ס שוטעף טריינינג כעדאַד אַרויף דורך לערי קיי דאָ אין נעעדהאַם, מאַ.

דעם 5-טאָג סעסיע איז צעבראכן אַראָפּ אין קלאסן (3 און 2 טעג ריספּעקטיוולי) entitled "FAST ESP: דעוועלאָפּינג מנהג זוכן אַפּפּליקאַטיאָנס פֿאַר אַלליאַנסע פּאַרטנערס איך" and "FAST ESP: Developing Custom Search Applications for Alliance Partners II".

דאס איז אַ פאַקטיש שטיוול לאַגער טיפּ קלאַס. דער מאַטעריאַל איז טיף (זייער, זייער טיף). די ינסטראַקטער (לערי) קלאר ווייסט זייַן שטאָפּן. I highly recommend this training if you considering it.

</עק>

שאַרעפּאָינט און פעסט — דער ריס ס פּינאַט פּוטער טעפּלעך פון ענטערפּרייז אַפּפּס?

איך ווע פאַרטיק אַרויף טאָג 2 פון שנעל טריינינג אין זוניק נעעדהאַם, מאַ, און איך בין בערסטינג מיט געדאנקען (וואָס אַלע די גוט טריינינג קלאסן טאָן צו מיר). 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" פּושט עס אויס פון מיין קאָפּ.

מיר שאַרעפּאָינט ווסס 3.0 / מאָך ימפּלעמענטערס אָפט פּנים אַ האַרט פּראָבלעם מיט קיין ריזאַנאַבלי-סייזד שאַרעפּאָינט פּרויעקט: ווי טאָן מיר באַקומען אַלע די ונטאַגגעד דאַטן לאָודיד אין שאַרעפּאָינט אַזאַ וואָס עס אַלע פיץ ין אונדזער בישליימעס דיזיינד אינפֿאָרמאַציע אַרקאַטעקטשער?

אָפֿט גענוג, דאָס איז נישט אַזאַ אַ שווער פּראָבלעם ווייַל מיר פאַרנעם זיך אויס פון קאָנפליקט: "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.

אָבער, 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 (אָדער אַפֿילו מיליאַנז) פון דאָקס — די לאָודינג און טאַגינג פון וואָס איז אונדזער פרום ווינטשן?

שנעל זאל זייַן דער ענטפער.

שנעל ס זוכן פּראָצעס כולל אַ פּלאַץ פון מאָווינג טיילן אָבער איין סימפּלאַפייד מיינונג איז דעם:

  • א קריכער פּראָצעס קוקט פֿאַר צופרידן.
  • עס געפינט צופרידן און הענט עס אַוועק צו אַ מעקלער פּראָצעס אַז מאַנידזשיז אַ בעקן פון דאָקומענט פּראַסעסערז.
  • מעקלער פּראָצעס הענט עס אַוועק צו איינער פון די דאָקומענט פּראַסעסערז.
  • דער דאָקומענט פּראַסעסער אַנאַליזעס דעם דאָקומענט און דורך אַ רערנ - ליניע פּראָצעס, אַנאַליזעס די בעדזשעעזוס אויס פון דעם דאָקומענט און הענט עס אַוועק צו אַן אינדעקס בילדער טיפּ פּראָצעס.

אויף די סטאַרשיפּ שנעל, we have a lot of control over the document processing pipeline. We can mix and match about 100 רערנ - ליניע קאַמפּאָונאַנץ און, רובֿ ינטערעסטינגלי, 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.

אַזוי … ניצן שנעל אין קאָמבינאַציע מיט אונדזער אייגן מנהג רערנ - ליניע קאָמפּאָנענט, we can grab all that context information from FAST and feed it back to MOSS. It might go something like this:

  • דאָקומענט איז פאסטעכער אין שנעל פון מאָך.
  • נאָרמאַל משוגע-אַבסעסיוו שנעל דאָקומענט פּאַרסינג און קאַטאַגעריזיישאַן כאַפּאַנז.
  • אונדזער אייגן מנהג רערנ - ליניע קאָמפּאָנענט טראפנס עטלעכע פון ​​וואָס קאָנטעקסט אינפֿאָרמאַציע אַוועק צו אַ דאַטאַבאַסע.
  • א פּראָצעס פון אונדזער אייגן פּלאַן לייענט די קאָנטעקסט אינפֿאָרמאַציע, מאכט עטלעכע דיסיזשאַנז אויף ווי צו פּאַסיק אַז מאָך דאָקומענט ין אונדזער איז און מאַרקס עס אַרויף ניצן אַ וועב דינסט און די כייפעץ מאָדעל.

אַוואַדע, ניט אַזאַ אָטאַמייטיד פּראָצעס קענען זייַן גאנץ אָבער דאַנק צו די אַבסעסיוו (און עפשער מעשוגע-אָבער-אין-א גוט-וועג שנעל מענטשן), מיר זאלן האָבן אַ פאַקטיש פייטינג שאָס אין אַ באמת עפעקטיוו מאַסע מאַסע פּראָצעס וואָס טוט מער ווי נאָר פּלאָמבירן אַרויף אַ סקל דאַטאַבאַסע מיט אַ בינטל פון קוים-סעאַרטשאַבלע דאָקומענטן.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס: , ,

וויסן וועגן סוף ניצערס בייַ www.EndUserSharePoint.com

מארק מיללער איבער אין http://www.endusersharepoint.com has built, אין מיין דערפאַרונג, the best end-user focused SharePoint site in the ‘sphere. אין די לעצטע חודש, he has enlisted some of the premier end-user focused bloggers around to contribute to the "front page" אויף אַ רעגולער יקער, including but not limited to Paul Culmsee, קריס קוויק, און דעססיע לונספאָרד. He has others lined up and ready to contribute as their schedules allow.

I jumped on the chance to participate and my inaugural post is here. 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, those articles will always keep the End User front and center.

I personally tend to divide the SharePoint world into three broad groups: SharePoint consultants, full-time SharePoint staff developers and end users. When I write, I often ask myself, which of these groups might be interested in the subject? Most often, I end up writing for the first two (technical) groups, mainly because I’m a consultant myself; it’s always easier and more authentic to write about those things with which you’re most familiar on a personal level.

As I’ve noted before, the end user community is far, 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. אָבער, 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 🙂 טשעק עס אויס.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס: ,

ינוואָקינג ססרס וועב סערוויסעס פון ווסס / מאָך אין פבאַ סוויווע

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: ניט אָטערייזד
  • כייפעץ אריבערגעפארן

The "object moved" message was most interesting because it was saying that the "object" (אונדזער ססרס דינסט) had "moved" to login.aspx. This clearly meant we had some kind of authentication problem.

איך יווענטשאַוואַלי איינגעזען אַז איך האט באָאָקמאַרקעד אַ בלאָג פּאָזיציע 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 (ווי פון 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".

דאָ ס דער קאָד וואָס געארבעט פֿאַר אונדז:

רעפּאָרטינגסערוויסע2006 רס = נול; 
// אָטענטאַקייט אָטענטאַקיישאַן אָט = נייַ אָטענטאַקיישאַן(); 
אַוטה.ורל = "הטטפּ://URL / _ווטי_בין / אַוטהענטיקאַטיאָנ.אַסמקס";
אַוטה.קאָאָקיעקאָנטאַינער =
נייַ קאָאָקיעקאָנטאַינער();
לאָגינרעסולט רעזולטאַט = אַוטה.לאָגין("userid", "password");
צי (רעסולט.ערראָרקאָדע == לאָגינערראָרקאָדע.נאָערראָר) 
{
// ניט קיין טעות, אַזוי באַקומען די קיכלעך.
קאָאָקיעקאָללעקטיאָן קיכלעך = אַוטה.קאָאָקיעקאָנטאַינער.געטקאָאָקיעס(נייַ אורי(אַוטה.ורל));
קיכל אַוטהקאָאָקיע = קיכלעך[רעסולט.קאָאָקיענאַמע];
רס =
נייַ רעפּאָרטינגסערוויסע2006();
רס.ורל =
"הטטפּ://server/_vti_bin/ReportServer/ReportService2006.asmx";
רס.קאָאָקיעקאָנטאַינער =
נייַ קאָאָקיעקאָנטאַינער();
רס.קאָאָקיעקאָנטאַינער.אַדד(אַוטהקאָאָקיע);
}
פּרובירן
{
  רס.קרעאַטעסובסקריפּטיאָן(באַריכט, עקסצעטטינגס, דעסק, עווענטטיפּע, matchData, פּאַראַמעטערס1);
}
כאַפּן (ויסנעם עקס)
{
  קאָנסאָלע.ווריטעלינע(עקס.מעססאַגע.טאָסטרינג());
}

איך טייַטשן זאכן צו אַרבעטן ווי דעם:

  • אונדזער וועב טייל דאַרף צו רעדל אַרויף די אָטענטאַקיישאַן דינסט און זאָגן, "Hey, טאני, עס ס מיר!".
  • אָטענטאַקיישאַן דינסט ריפּלייז געזאגט, "Hey, I know you. How are the kids? Here’s a token."
  • מיר רופן זיך די ססרס דינסט און זאָגן, "Tony sent me, דאָ ס די סימען."

</עק>

אַבאָנירן צו מיין בלאָג.

האָבן איר פּערפאָרמד אייער כוידעשלעך זוכן אַנאַליסיס?

עס ס אַ גוט פיר, מיסטאָמע אַפֿילו אַ בעסטער פּראַקטיס, צו באריכטן אייערע זוכן מעלדעט אַמאָל אַ חודש און קוק פֿאַר אַפּערטונאַטיז צו לייגן בעסטער בעץ, 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’ 🙂

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

פאַסאַטיד זוכן פענס סיטער ניט מער

איך האט סיבה הייַנט צו שפּילן וועגן מיט די קאָדעפּלעקס פאַסאַטיד זוכן project today.

עס ס שוין אַרום פֿאַר אַ בשעת, אָבער איך כעזיטייטיד צו אָפּלאָדירן און נוצן עס פֿאַר די געוויינטלעך סיבות (דער הויפּט מאַנגל פון צייַט), plus outright fear 🙂

אויב איר ניטאָ קוקן צו פֿאַרבעסערן דיין זוכן און ויספאָרשן נייַ אָפּציעס, 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.

דנאָ שורה — in minutes, you can install, configure it, use it and add some pretty cool functionality to your vanilla MOSS search and be a hero 🙂

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס: