InfoPath Property Promotion

Een mooie feature binnen InfoPath is ‘Property Promotion’. Hiermee maak je op basis van de velden in het form binnen SharePoint kolommen aan in de bibliotheek wanneer het form gepubliceerde wordt. In deze post wijs ik je op een paar zaken die handig zijn om te weten voor als je gaat werken met de ‘Property Promotion’ in InfoPath.

Voor de best-practice-voorbeelden in deze post is het form rechtstreeks op de bibliotheek gepubliceerd. Het form is hier dus gekoppeld aan het content type Form.

Om de feature te gebruiken ga in InfoPath naar: File > form Options > Property Promotion.

Zoeken naar een vinkje

Wanneer je bij het publiceren van het form snel door de wizard heen gaat zie je iets belangrijks over het hoofd. Alle kolommen die de ‘Property Promotion’ voor je aanmaakt zijn standaard read-only. Om te zorgen dat de velden bewerkbaar zijn moet je op het volgende letten:

Het onderste scherm krijg je wanneer je een veld toevoegt.

In de wizard tijdens het publiceren kom je de ‘Property Promotion’ ook tegen. Als je daar een kolom selecteert en klikt op ‘modify’ krijg je het volgende te zien:

Het verschil tussen beide schermen is een vinkje. Standaard is het vinkje niet geselecteerd. Als het vinkje is geselecteerd maakt de Property Promotion’-feature tijdens het publiceren kolommen aan die je kunt bewerken. Als je bewerkbare kolommen wilt hebben is de “Quick Publish” optie in InfoPath niet genoeg.

Wanneer in de bibliotheek een form-item wordt bewerkt en een waarde van een kolom wordt gewijzigd, wordt de nieuwe waarde bij het opslaan ge-update in het form.

Bewerkbare kolommen heb je ook nodig wanneer je vanuit een takenlijst naar het form terug wilt schrijven met een workflow. In de workflow kun je alleen in kolommen schrijven die niet read-only zijn. 

Multi-line velden

Bij het publiceren van een form maakt de ‘Property Promotion’ automatisch velden voor je aan met de eigenschap ‘single line of text’. Voor als je veld in het form de eigenschap ‘multi line’ heeft is dit niet handig.

Om dit te voorkomen kun je zelf een kolom aanmaken en die tijdens het publiceren mappen met je eigen kolom door op de modify-knop te drukken en de kolom te wijzigen.

Of voor als je de kolom ‘bewerkbaar’ heb laten maken kun je de eigenschappen van de kolom in de bibliotheek veranderen.

De Person / Group Picker

Het control ‘Person / Group Picker’ heeft drie velden. Het veld kun je niet als hele group promoten met als doel om een account te zien in de bibliotheek als kolom.

Je kunt wel de velden afzonderlijk promoten maar zijn dan altijd read-only. Er is geen standaard manier om tijdens het publiceren velden van dit control bewerkbaar te krijgen. Ook wanneer je de velden koppelt met eigen kolommen zul je merken dat ze als read-only worden gezet.

Door het maken van een eenvoudige workflow met SharePoint Designer kun je een eigen ‘Person / Group’ kolom krijgen die ge-updated wordt door het formulier. Maar deze eigen kolom kun je geen informatie terug schrijven naar het form, de velden zijn read-only.

Dit doe je als volgt:

  • Maak in de bibliotheek een kolom van het type ‘Person / Group’;
  • Promoot in het InfoPath form het veld ‘Account Id’ van de ‘Person / Group picker’.  (het ‘Account Id’ heeft altijd een unieke waarde, wanneer je de kolom ‘Display Name’ gebruikt werkt de workflow ook maar weet je niet of het juiste account gezet wordt wanneer je accounts krijgt die dezelfde naam hebben.)
  • Open de bibliotheek met SharePoint Designer;
  • Maak een workflow met de Actie ‘Update Item in Current item’;
  • Zet de kolom van de bibliotheek met het ‘Account Id’;
  • Vink in de workflow-eigenschappen aan:
  • Start workflow automatically when item is created
  • Start workflow automatically when item is changed

Nu de kolom in de bibliotheek het Account Id weet kan hij het account zelf ophalen.

Omdat je vanuit de bibliotheek niet terug kunt schrijven naar het form zet je in het Content Type (form) de kolom op hidden. Als je het content type niet ziet in de eigenschappen van de bibliotheek ga naar: Advanced settings > Allow management of content types? [yes]

De optie hidden voorkomt dat het veld in het bewerkvenster komt wanneer het item in de bibliotheek wordt bewerkt. Als je het veld zichtbaar laat en het wordt bewerkt zal bij het opslaan de workflow weer afgaan en het veld met de waarde zetten uit het form.

In de DataSheet view is de kolom wel zichtbaar en bewerkbaar. Maar bij het opslaan zet de workflow het account weer terug.