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.