I’ve been working on some InfoPath forms this week in MOSS in an FBA environment and learned, when I went to deploy the forms to a production environment with an FBA zone that the username() function function does not work. I was using it to generate unique file names.
Well, that function doesn’t work in an FBA environment (at least, not out of the box). And, upon reflection, using username in the way I had planned wouldn’t have guaranteed a unique file name in any event.
My solution was to use the now() function and a rule that fires on loading of the form. I assign the file name to data element when it’s blank:
The advantage of this approach is that the file name is set only once. (I don’t show it in the screen shot, but put a condition on the rule to only fire when “myFilename” is blank). I used to set the file name at the data source level. Typically, I would do something (bad) like this:
The problem with that is that if user A opens the form on Monday and the user B changes it on Tuesday, you’ll end up with two different forms since two different users saved it with different user names.
So, as annoying as FBA can be in general and with InfoPath in particular, it made me re-think a small but really important technical detail and approach that I wouldn’t have done otherwise!
Follow me on Twitter at http://www.twitter.com/pagalvin