def METHOD_NAME(self, organization, notification_type='slack', messages=not_provided, **kwargs):
    METHOD_NAME = PseudoNamespace(
        name=kwargs.get('name') or 'NotificationTemplate ({0}) - {1}'.format(notification_type, random_title()),
        description=kwargs.get('description') or random_title(10),
        organization=organization.id,
        notification_type=notification_type,
    )
    if messages != not_provided:
        METHOD_NAME['messages'] = messages
    notification_configuration = kwargs.get('notification_configuration', {})
    METHOD_NAME.notification_configuration = notification_configuration
    if METHOD_NAME.notification_configuration == {}:
        services = config.credentials.notification_services
        if notification_type == 'email':
            fields = ('host', 'username', 'password', 'port', 'use_ssl', 'use_tls', 'sender', 'recipients')
            cred = services.email
        elif notification_type == 'irc':
            fields = ('server', 'port', 'use_ssl', 'password', 'nickname', 'targets')
            cred = services.irc
        elif notification_type == 'pagerduty':
            fields = ('client_name', 'service_key', 'subdomain', 'token')
            cred = services.pagerduty
        elif notification_type == 'slack':
            fields = ('channels', 'token')
            cred = services.slack
        elif notification_type == 'twilio':
            fields = ('account_sid', 'account_token', 'from_number', 'to_numbers')
            cred = services.twilio
        elif notification_type == 'webhook':
            fields = ('url', 'headers')
            cred = services.webhook
        elif notification_type == 'mattermost':
            fields = ('mattermost_url', 'mattermost_username', 'mattermost_channel', 'mattermost_icon_url', 'mattermost_no_verify_ssl')
            cred = services.mattermost
        elif notification_type == 'grafana':
            fields = ('grafana_url', 'grafana_key')
            cred = services.grafana
        elif notification_type == 'rocketchat':
            fields = ('rocketchat_url', 'rocketchat_no_verify_ssl')
            cred = services.rocketchat
        else:
            raise ValueError('Unknown notification_type {0}'.format(notification_type))
        for field in fields:
            if field == 'bot_token':
                payload_field = 'token'
            else:
                payload_field = field
            value = kwargs.get(field, cred.get(field, not_provided))
            if value != not_provided:
                METHOD_NAME.notification_configuration[payload_field] = value
    return METHOD_NAME