Are there modules that make this possible?
Yes there is: you can use the Rules module for this. As an example, consider this rule (in Rules export format), which does what you're asking for:
{ "rules_create_a_node_from_webform_data" : {
"LABEL" : "Create a node from webform data",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "webform_rules", "rules" ],
"ON" : { "webform_rules_submit" : [] },
"IF" : [
{ "webform_has_id" : {
"form_id" : [ "form_id" ],
"selected_webform" : { "value" : { "webform-client-form-191" : "webform-client-form-191" } }
}
}
],
"DO" : [
{ "drupal_message" : { "message" : "The webform submitted contains these fields:\r\n\u003C\/ul\u003E\r\n\u003Cli\u003Ethe field labeled \u0022[data:demoform_title-title]\u0022 which has value \u0022[data:demoform_title-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_text-title]\u0022 which has value \u0022[data:demoform_text-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_number-title]\u0022 which has value \u0022[data:demoform_number-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_option-title]\u0022 which has value \u0022[data:demoform_option-value-raw]\u0022.\u003C\/li\u003E\r\n\u003C\/ul\u003E" } },
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "[data:demoform_text-value-raw]" },
"PROVIDE" : { "variable_added" : { "var_demoform_text" : "Form variable text" } }
}
},
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "[data:demoform_number-value-raw]" },
"PROVIDE" : { "variable_added" : { "var_demoform_number_text" : "Form variable number text" } }
}
},
{ "data_convert" : {
"USING" : { "type" : "integer", "value" : [ "var-demoform-number-text" ] },
"PROVIDE" : { "conversion_result" : { "var_demoformvar_number" : "Form variable number" } }
}
},
{ "variable_add" : {
"USING" : { "type" : "text", "value" : "[data:demoform_option-value-raw]" },
"PROVIDE" : { "variable_added" : { "var_demoform_option" : " Form variable option" } }
}
},
{ "entity_create" : {
"USING" : {
"type" : "node",
"param_type" : "article",
"param_title" : "[data:demoform_title-value-raw]",
"param_author" : [ "user" ]
},
"PROVIDE" : { "entity_created" : { "article_created" : "Created article" } }
}
},
{ "data_set" : {
"data" : [ "article-created:body:value" ],
"value" : [ "var-demoform-text" ]
}
},
{ "data_set" : {
"data" : [ "article-created:field-free-format-nr" ],
"value" : [ "var-demoformvar-number" ]
}
},
{ "data_set" : {
"data" : [ "article-created:field-optionlist" ],
"value" : [ "var-demoform-option" ]
}
},
{ "data_set" : { "data" : [ "article-created:comment" ], "value" : "0" } },
{ "entity_save" : { "data" : [ "article-created" ], "immediate" : "1" } },
{ "drupal_message" : { "message" : "A new article got created, with nid=[article-created:nid] and url=[article-created:url]" } }
]
}
}
Anybody a bit familiar with Rules and Webform, while know that it's often a struggle to get access to the data contained in a submitted Webform. Mostly because they are not available to select them when building Rules Actions.
However by introducing those var-demoformvar-...
variables (as in the above rule), you can make the typical Rules magic happen. Refer to my answer to "How to create a node from a Webform using rules?" for more details about all this.