After spending 3 days trying to work out why columns wouldn’t appear after being promoted from InfoPath, we finally resolved it today. This form had been previously working but the client decided they wanted more fields promoted.
The bad news is that it kind of solved itself. All I did was go back to basics and republish the form. Although I was told that we had tried this many times I just did it again on my pc. Previously it had been published from another pc. The columns appeared in the content type created by this form.
I then had to manually add the columns to the list from existing columns in that content type.
There are many people online complaining about having this issue but I can’t find anyone who can suggest a good answer. My suggestion is to try and republish your form until it works.
Update 29-June-2011:
One way to go about "resolving" this problem is to delete the columns and then re-publish your InfoPath form.
Delete columns using PowerShell in SharePoint 2011. Get the PS script for deleting columns from this blog. After you run this script you can delete specific columns with the command: Delete-WorkflowColumn -webURL http://portal -listName "Documents" -columnName "Column Name"
function Delete-WorkflowColumn ($webURL, $listName, $columnName)
{
#Setup variables from the user input
$web = Get-SPWeb $webURL
$list = $web.Lists[$listName]
$column = $list.Fields[$columnName]
#Make sure the column is not hidden or read only
$column.Hidden = $false
$column.ReadOnlyField = $false
$column.Update()
#Delete column and dispose of the web object
$list.Fields.Delete($column)
write-host "Deleted column"
$web.Dispose()
}
Now re-publish your InfoPath form.
The new InfoPath columns will appear with correct settings.