Mi flujo de trabajo 2

Intermedio

Este es unFile Management, Multimodal AIflujo de automatización del dominio deautomatización que contiene 15 nodos.Utiliza principalmente nodos como Ftp, Set, Filter, EmailSend, ScheduleTrigger. Migración automatizada de archivos FTP con limpieza inteligente y notificaciones por correo electrónico

Requisitos previos
  • No hay requisitos previos especiales, puede importar y usarlo directamente
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "DaJFVETQef5qJMmB",
  "meta": {
    "instanceId": "ade915387b18f7a3b9a14fd8fb677fdbace0ade794de7914e8790d907cd285d0",
    "templateCredsSetupCompleted": true
  },
  "name": "My workflow 2",
  "tags": [],
  "nodes": [
    {
      "id": "dafe14b7-7719-41b7-b1a4-cf6765aa3db9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -144
      ],
      "parameters": {
        "width": 400,
        "height": 712,
        "content": "# 🚀 FTP FILE MIGRATION WORKFLOW\n\n## Overview:\nAutomated file transfer between FTP servers with comprehensive error handling and notifications.\n\n## Key Features:\n✅ Scheduled execution (daily at 2 AM)\n✅ Smart file filtering\n✅ Secure transfer with validation\n✅ Source cleanup after success\n✅ Email notifications (success + error)\n✅ Comprehensive logging\n\n## Quick Start:\n1. Configure FTP credentials\n2. Adjust schedule and filters\n3. Set up email notifications\n4. Test with small files first\n5. Monitor execution logs\n\n⚠️ **IMPORTANT**: Test thoroughly before production!"
      },
      "typeVersion": 1
    },
    {
      "id": "f460e190-0e9f-4fb9-b023-2b4d37988a37",
      "name": "Procesamiento de Archivos",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        144
      ],
      "parameters": {
        "width": 380,
        "height": 280,
        "content": "## 📁 FILE PROCESSING PIPELINE\n\n### Current Filter: \n**Text & Data Files Only**\n- .txt, .csv, .json, .xml\n\n### Common Alternatives:\n📄 **Documents**: `\\.(pdf|doc|docx)$`\n🖼️ **Images**: `\\.(jpg|jpeg|png|gif)$`\n📊 **Data**: `\\.(csv|json|xml|xlsx)$`\n📦 **Archives**: `\\.(zip|rar|7z|tar)$`\n🎵 **Media**: `\\.(mp4|mp3|avi|mov)$`\n\n### Size Limits:\n- Small: < 10MB\n- Medium: 10MB - 100MB  \n- Large: > 100MB (adjust timeouts)\n\n### Processing Order:\n1️⃣ List files from source\n2️⃣ Filter by criteria\n3️⃣ Download to temp storage\n4️⃣ Upload to destination\n5️⃣ Validate transfer\n6️⃣ Clean up source\n\n🔄 **Remove Filter node to transfer ALL files**"
      },
      "typeVersion": 1
    },
    {
      "id": "d92ebb39-8697-4137-8770-dddf0cc3412a",
      "name": "Seguridad",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        592
      ],
      "parameters": {
        "width": 382,
        "height": 792,
        "content": "## 🔒 SECURITY BEST PRACTICES\n\n### Connection Security:\n🔐 **Use SFTP** instead of FTP (port 22)\n🔑 **SSH Keys** preferred over passwords\n🌐 **IP Whitelisting** on FTP servers\n🔒 **VPN/Tunnel** for sensitive data\n\n### Credential Management:\n🗝️ **Dedicated Service Accounts**\n🔄 **Regular Rotation** (monthly/quarterly)\n📝 **Minimum Permissions** (read source, write dest)\n🚫 **No Shared Accounts**\n\n### Data Protection:\n🔐 **Encryption in Transit** (TLS/SSL)\n🗂️ **File Integrity Checks** (checksums)\n📋 **Audit Logging** (all operations)\n🕐 **Retention Policies** (log cleanup)\n\n### Access Control:\n👤 **Role-Based Access**\n🚪 **Principle of Least Privilege**\n📊 **Access Reviews** (quarterly)\n🔍 **Activity Monitoring**\n\n### Compliance:\n📜 **GDPR/CCPA** considerations\n📋 **SOX/HIPAA** requirements\n🏢 **Corporate Policies**\n📝 **Documentation Requirements**"
      },
      "typeVersion": 1
    },
    {
      "id": "42886faa-e0ec-4ccc-9bcf-fa289f27fea7",
      "name": "Rendimiento",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        -144
      ],
      "parameters": {
        "width": 444,
        "height": 568,
        "content": "## ⚡ PERFORMANCE OPTIMIZATION\n\n### File Size Considerations:\n📄 **Small Files** (< 10MB): Default settings\n📊 **Medium Files** (10-100MB): Increase timeouts\n📦 **Large Files** (> 100MB): Extended timeouts + monitoring\n🎬 **Huge Files** (> 1GB): Consider alternative methods\n\n### Timeout Settings:\n⏰ **Connection**: 30 seconds\n⏰ **Download**: 300 seconds (5 min)\n⏰ **Upload**: 300 seconds (5 min)\n⏰ **Large Files**: 600+ seconds (10+ min)\n\n### Network Optimization:\n🌐 **Peak Hours**: Schedule during off-peak\n📊 **Bandwidth**: Monitor usage patterns\n🔄 **Parallel Processing**: For multiple files\n📈 **Resume Support**: For interrupted transfers\n\n\n\n🎯 **Target**: < 5 min per 100MB file"
      },
      "typeVersion": 1
    },
    {
      "id": "51afbebf-2431-4d08-bd8e-74c0a9072eb1",
      "name": "Solución de Problemas",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2304,
        -128
      ],
      "parameters": {
        "width": 480,
        "height": 912,
        "content": "## 🔧 TROUBLESHOOTING GUIDE\n\n### Common Issues & Solutions:\n\n🔌 **Connection Failures:**\n- Check server status & firewall\n- Verify credentials & permissions\n- Test network connectivity\n- Review SSL/TLS settings\n\n⏱️ **Timeout Errors:**\n- Increase timeout values\n- Check file sizes vs. settings\n- Monitor network speed\n- Split large transfers\n\n🔑 **Authentication Issues:**\n- Verify username/password\n- Check account lockouts\n- Test credential expiration\n- Review permission changes\n\n📁 **File Operation Errors:**\n- Confirm file existence\n- Check read/write permissions\n- Verify disk space availability\n- Test file locking status\n\n💾 **Memory/Performance:**\n- Monitor n8n server resources\n- Adjust concurrent executions\n- Implement file size limits\n- Consider batch processing\n\n### Debug Steps:\n1️⃣ **Check Logs**: Execution history\n2️⃣ **Test Credentials**: Manual FTP connection\n3️⃣ **Verify Paths**: Directory structure\n4️⃣ **Network Test**: Ping/telnet servers\n5️⃣ **Resource Check**: CPU/Memory/Disk\n\n📞 **Escalation**: Contact system administrators"
      },
      "typeVersion": 1
    },
    {
      "id": "d57222c3-5f3b-45ec-8410-3f49675bdf9b",
      "name": "Configuración",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        96
      ],
      "parameters": {
        "width": 380,
        "height": 320,
        "content": "## ⚙️ CONFIGURATION CHECKLIST\n\n### Pre-Deployment:\n☐ **FTP Credentials**: Source & destination tested\n☐ **SMTP Settings**: Email notifications configured\n☐ **File Filters**: Appropriate patterns set\n☐ **Paths**: Source & destination directories verified\n☐ **Schedule**: Cron expression configured\n☐ **Timeouts**: Adjusted for expected file sizes\n☐ **Permissions**: Read source, write destination\n☐ **Network**: Connectivity between all systems\n\n### Testing Phase:\n☐ **Disable Cleanup**: Comment out source deletion\n☐ **Small Files**: Test with 1-2 small files first\n☐ **Error Scenarios**: Test failure conditions\n☐ **Email Alerts**: Verify notifications work\n☐ **Logs Review**: Check execution history\n☐ **Performance**: Monitor transfer speeds\n\n### Production Deployment:\n☐ **Enable Cleanup**: Activate source deletion\n☐ **Monitor First Run**: Watch initial execution\n☐ **Set Alerts**: Configure monitoring thresholds\n☐ **Document Config**: Save settings & passwords\n☐ **Schedule Review**: Confirm timing works\n☐ **Backup Strategy**: Plan for rollback\n\n### Post-Deployment:\n☐ **Daily Monitoring**: Check success rates\n☐ **Weekly Reviews**: Analyze performance\n☐ **Monthly Audits**: Security & compliance\n☐ **Quarterly Updates**: Credential rotation"
      },
      "typeVersion": 1
    },
    {
      "id": "fd89ccc8-f083-4241-a869-dca7690bc591",
      "name": "Programación Diaria (2 AM)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "SCHEDULE TRIGGER CONFIGURATION:\n\n📅 CURRENT SCHEDULE: Daily at 2:00 AM (server time)\n\n⏰ SCHEDULE EXAMPLES:\n- Daily at specific time: 0 2 * * *\n- Every 6 hours: 0 */6 * * *\n- Weekdays at 8 AM: 0 8 * * 1-5\n- Weekly on Sunday 2 AM: 0 2 * * 0\n- Monthly on 1st at midnight: 0 0 1 * *\n\n🔧 CONFIGURATION STEPS:\n1. Click on this node to edit\n2. Modify 'Cron Expression' field\n3. Use cron expression generator if needed\n4. Test with 'Execute Node' button\n\n⚠️ IMPORTANT CONSIDERATIONS:\n- Server timezone affects execution time\n- Consider maintenance windows\n- Avoid peak business hours\n- Account for server load and resources\n- Plan for daylight saving time changes\n\n💡 TESTING TIP:\n- Use '*/5 * * * *' for every 5 minutes during testing\n- Change back to production schedule after validation\n\n🌍 TIMEZONE SETTINGS:\n- Current: Europe/Warsaw (GMT+1/+2)\n- Modify in workflow settings if needed\n- Ensure consistency across all environments",
      "position": [
        288,
        512
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 2 * * *"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0be802db-9255-45b5-8c93-ca85087969e5",
      "name": "Listar Archivos - FTP Origen",
      "type": "n8n-nodes-base.ftp",
      "notes": "SOURCE FTP SERVER CONFIGURATION:\n\n🔑 CREDENTIALS SETUP:\n1. Navigate to: Settings → Credentials → Create New\n2. Select 'FTP' credential type\n3. Name: 'Source FTP Server'\n4. Enter connection details:\n   - Host: source-ftp-server.com\n   - Port: 21 (FTP) or 22 (SFTP)\n   - Username: your_username\n   - Password: your_password\n5. Test connection before saving\n\n📁 PATH CONFIGURATION:\n- Absolute path: /home/user/files/\n- Relative path: files/folder/\n- Root directory: /\n- Current example: /source/directory/\n\n🔍 OPERATION SETTINGS:\n- Operation: 'List' (to discover files)\n- Recursive: true (includes subdirectories)\n- Returns file metadata: name, size, date, permissions\n\n⚙️ ADVANCED OPTIONS:\n- Connection timeout: 30 seconds (default)\n- Data timeout: 60 seconds\n- Keep connection alive: true\n- Passive mode: true (recommended)\n\n🛡️ SECURITY RECOMMENDATIONS:\n- Use SFTP (port 22) when possible\n- Enable key-based authentication\n- Implement IP whitelisting\n- Use dedicated service accounts\n- Regular credential rotation\n\n🐛 TROUBLESHOOTING:\n- Connection timeout: Check firewall settings\n- Permission denied: Verify user permissions\n- Path not found: Ensure directory exists\n- Authentication failed: Check credentials\n\n📊 EXPECTED OUTPUT:\n- Array of file objects\n- Each object contains: name, size, date, type\n- Empty array if no files found",
      "position": [
        512,
        512
      ],
      "parameters": {
        "path": "/source/directory/",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "0915fba4-e8a7-4070-bfe6-03d594163495",
      "name": "Filtrar Archivos",
      "type": "n8n-nodes-base.filter",
      "notes": "FILE FILTERING & SELECTION:\n\n🔍 CURRENT FILTER LOGIC:\n- File Extension Match: \\.(txt|csv|json|xml)$\n- Case-sensitive matching enabled\n- Regex pattern matching\n\n📝 COMMON FILTER PATTERNS:\n\n📄 DOCUMENTS:\n- Office files: \\.(doc|docx|xls|xlsx|ppt|pptx)$\n- PDF files: \\.pdf$\n- Text files: \\.(txt|rtf|md)$\n\n🖼️ IMAGES:\n- Common formats: \\.(jpg|jpeg|png|gif|bmp)$\n- High-res images: \\.(tiff|tga|raw)$\n- Vector graphics: \\.(svg|eps|ai)$\n\n📊 DATA FILES:\n- Structured data: \\.(csv|json|xml|yaml)$\n- Database files: \\.(sql|db|sqlite)$\n- Log files: \\.(log|txt)$\n\n📦 ARCHIVES:\n- Compressed files: \\.(zip|rar|7z|tar|gz)$\n\n🔧 ADVANCED FILTERING OPTIONS:\n\n📏 SIZE-BASED FILTERING:\n- Add condition: {{ $json.size > 1048576 }} (> 1MB)\n- Small files only: {{ $json.size < 10240 }} (< 10KB)\n- Size range: {{ $json.size >= 1024 && $json.size <= 5242880 }}\n\n📅 DATE-BASED FILTERING:\n- Recent files: {{ $json.date > $now.minus({days: 7}) }}\n- Older files: {{ $json.date < $now.minus({months: 1}) }}\n- Specific date range: Use date comparisons\n\n📛 NAME PATTERN FILTERING:\n- Starts with: ^report_.*\n- Ends with: .*_backup$\n- Contains: .*important.*\n- Exclude pattern: ^(?!temp_).*\n\n⚠️ FILTER BYPASS:\n- Remove this node to transfer ALL files\n- Be cautious with unrestricted transfers\n- Consider disk space and bandwidth\n\n🎯 TESTING FILTERS:\n1. Use 'Execute Node' to test filter logic\n2. Check output to verify correct files selected\n3. Adjust regex patterns as needed\n4. Validate with different file types\n\n💡 PERFORMANCE TIP:\n- Specific filters reduce processing time\n- Avoid overly complex regex patterns\n- Test filters with representative data",
      "position": [
        736,
        512
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "file-filter-condition",
              "operator": {
                "type": "string",
                "operation": "regex"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "\\.(txt|csv|json|xml)$"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "76837f02-91d3-47f9-aa45-4814c8fd32d1",
      "name": "Descargar Archivo",
      "type": "n8n-nodes-base.ftp",
      "notes": "FILE DOWNLOAD OPERATION:\n\n📥 DOWNLOAD CONFIGURATION:\n- Operation: 'Download File'\n- Binary Property: 'file_data' (stores file content)\n- Dynamic path: {{ $json.name }} (from previous node)\n- Uses same credentials as listing operation\n\n🎯 IMPORTANT SETTINGS:\n- Path Expression: {{ $json.name }}\n- Binary Data Property: file_data\n- Timeout: 300 seconds (5 minutes)\n- Auto-retry: 3 attempts on failure\n\n📊 PERFORMANCE CONSIDERATIONS:\n\n⏱️ TIMEOUT SETTINGS:\n- Small files (<10MB): Default timeout (60s)\n- Medium files (10MB-100MB): 300 seconds\n- Large files (>100MB): 600+ seconds\n- Adjust based on network speed\n\n🗂️ FILE SIZE LIMITS:\n- n8n default: 150MB per execution\n- Large files may cause memory issues\n- Consider file size filtering\n- Split large transfers into batches\n\n🔄 RETRY LOGIC:\n- Automatic retry on network errors\n- 3 attempts with exponential backoff\n- Preserves original file on failure\n- Error details logged for debugging\n\n💾 MEMORY MANAGEMENT:\n- Files stored in n8n temporary memory\n- Automatic cleanup after workflow completion\n- Monitor server RAM usage for large files\n- Consider streaming for very large files\n\n⚠️ ERROR SCENARIOS:\n- Network interruption: Auto-retry enabled\n- File permissions: Check source server access\n- File locked: Retry after delay\n- Disk space: Monitor n8n server storage\n- Timeout: Increase timeout for large files\n\n🔍 MONITORING:\n- Check execution logs for download times\n- Monitor network bandwidth usage\n- Track success/failure rates\n- Set up alerts for repeated failures\n\n🛠️ TROUBLESHOOTING:\n- Download fails: Check file permissions\n- Slow downloads: Verify network speed\n- Timeout errors: Increase timeout setting\n- Memory errors: Reduce batch size or file size limit\n\n📈 OUTPUT DATA:\n- Binary data stored in 'file_data' property\n- Original filename preserved\n- File metadata available for next nodes\n- Ready for upload to destination server",
      "position": [
        960,
        512
      ],
      "parameters": {
        "path": "={{ $json.name }}",
        "options": {},
        "binaryPropertyName": "file_data"
      },
      "typeVersion": 1
    },
    {
      "id": "cee66200-dd84-4a31-b00b-81935cff7e86",
      "name": "Subir a Destino",
      "type": "n8n-nodes-base.ftp",
      "notes": "DESTINATION FTP UPLOAD:\n\n🎯 UPLOAD CONFIGURATION:\n- Operation: 'Upload File'\n- Source: Binary data from 'file_data' property\n- Dynamic destination path with filename preservation\n- Automatic directory creation enabled\n\n🔑 CREDENTIALS SETUP:\n1. Create separate FTP credential: 'Destination FTP Server'\n2. Verify write permissions on target server\n3. Test connectivity before production use\n4. Use different credentials than source for security\n\n📁 PATH STRUCTURE EXAMPLES:\n\n🗂️ PRESERVE ORIGINAL STRUCTURE:\n/destination/directory/{{ $json.name }}\n\n📅 DATE-BASED ORGANIZATION:\n/files/{{ $now.format('YYYY/MM/DD') }}/{{ $json.name }}\n\n📊 TYPE-BASED ORGANIZATION:\n/files/{{ $json.name.split('.').pop() }}/{{ $json.name }}\n\n👤 USER-BASED ORGANIZATION:\n/users/{{ $json.owner || 'system' }}/{{ $json.name }}\n\n⚙️ UPLOAD OPTIONS:\n\n✅ ENABLED FEATURES:\n- createDirectories: true (auto-create missing folders)\n- preserveTimestamp: true (maintain original dates)\n- overwriteExisting: false (prevent accidental overwrites)\n\n🔄 ADDITIONAL OPTIONS:\n- Resume broken uploads: true\n- Verify after upload: true\n- Atomic upload: true (temp file → rename)\n- Permission setting: 644 (read/write owner, read others)\n\n🛡️ SECURITY MEASURES:\n- Separate credentials for source/destination\n- Write-only permissions where possible\n- Regular credential rotation\n- Audit trail maintenance\n\n⚡ PERFORMANCE OPTIMIZATION:\n- Parallel uploads for multiple files\n- Compression for large text files\n- Resume capability for interrupted transfers\n- Bandwidth limiting for peak hours\n\n🎯 SUCCESS VALIDATION:\n- File existence check after upload\n- Size comparison (source vs destination)\n- Checksum verification (optional)\n- Timestamp preservation validation\n\n⚠️ ERROR SCENARIOS & SOLUTIONS:\n- Disk full: Monitor destination storage\n- Permission denied: Verify write access\n- Connection lost: Auto-retry with backoff\n- Filename conflicts: Use unique naming\n\n📊 MONITORING METRICS:\n- Upload speed (MB/s)\n- Success rate percentage\n- Average file size\n- Total data transferred\n- Error frequency and types\n\n🔧 TROUBLESHOOTING GUIDE:\n- Upload fails: Check destination permissions\n- Slow uploads: Verify network connectivity\n- Directory errors: Ensure path format is correct\n- Authentication issues: Validate credentials\n- File corruption: Enable checksum verification\n\n📈 OUTPUT INFORMATION:\n- Upload success status\n- Destination file path\n- Transfer duration\n- File size confirmation\n- Any warnings or errors",
      "position": [
        1184,
        512
      ],
      "parameters": {
        "path": "/destination/directory/{{ $json.name }}",
        "options": {},
        "binaryPropertyName": "file_data"
      },
      "typeVersion": 1
    },
    {
      "id": "df6e949f-839e-4ab5-80c8-243b16409720",
      "name": "¿Subida Exitosa?",
      "type": "n8n-nodes-base.filter",
      "notes": "SUCCESS VALIDATION:\n\nCHECKS PERFORMED:\n- Upload operation success status\n- File transfer completion\n- No error conditions\n\nNEXT STEPS:\n- TRUE: Proceed to cleanup (delete source)\n- FALSE: Route to error handling\n\nADDITIONAL VALIDATIONS:\n- File size comparison\n- Checksum verification\n- Timestamp validation\n\nCONFIGURATION:\n- Adjust condition based on FTP node output\n- May need to check different properties\n- Test with actual transfer results",
      "position": [
        1408,
        512
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "success-condition",
              "operator": {
                "type": "boolean",
                "operation": "equal"
              },
              "leftValue": "={{ $json.success }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8e3a057f-f21c-4129-a43d-17960b58b26a",
      "name": "Eliminar Archivo Origen",
      "type": "n8n-nodes-base.ftp",
      "notes": "SOURCE FILE CLEANUP:\n\nOPERATION: DELETE\n- Removes file from source server\n- Only after successful upload\n- Prevents duplicate processing\n\nSAFETY MEASURES:\n- Only runs after upload verification\n- Maintains transfer logs\n- Consider backup retention period\n\nALTERNATIVE STRATEGIES:\n1. MOVE to 'processed' folder instead of delete\n2. RENAME with timestamp suffix\n3. ARCHIVE to compressed format\n\nRISK MITIGATION:\n- Test thoroughly before production\n- Implement rollback procedures\n- Monitor deletion operations\n\nIMPORTANT: Disable this step for testing!",
      "position": [
        1632,
        512
      ],
      "parameters": {
        "path": "={{ $json.name }}",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "4c15a875-60ab-462e-a780-1e50337f7ca3",
      "name": "Registrar Éxito",
      "type": "n8n-nodes-base.set",
      "notes": "SUCCESS LOGGING:\n\nLOG FIELDS:\n- Timestamp: ISO format with timezone\n- Filename: Original file name\n- Status: SUCCESS indicator\n- File Size: In bytes for monitoring\n- Operation: Type of migration performed\n\nLOGGING ENHANCEMENTS:\n- Add source/destination server info\n- Include transfer duration\n- Record file checksums\n- Track user/process info\n\nOUTPUT OPTIONS:\n1. Database logging (add database node)\n2. File logging (append to CSV/JSON)\n3. External API (webhook notification)\n4. Email notifications\n\nMONITORING:\n- Use for operational dashboards\n- Generate migration reports\n- Track performance metrics",
      "position": [
        1856,
        512
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "log-timestamp",
              "name": "timestamp",
              "type": "string",
              "value": "={{ $now.format('YYYY-MM-DD HH:mm:ss') }}"
            },
            {
              "id": "log-filename",
              "name": "filename",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "log-status",
              "name": "status",
              "type": "string",
              "value": "SUCCESS"
            },
            {
              "id": "log-filesize",
              "name": "file_size_bytes",
              "type": "number",
              "value": "={{ $json.size }}"
            },
            {
              "id": "log-operation",
              "name": "operation",
              "type": "string",
              "value": "MIGRATE_AND_DELETE"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "18f4a55b-d5d5-4c44-8116-70614e4b01c6",
      "name": "Enviar Alerta de Éxito por Correo",
      "type": "n8n-nodes-base.emailSend",
      "notes": "EMAIL SUCCESS NOTIFICATION:\n\n📧 SUCCESS NOTIFICATION SETTINGS:\n- Sends confirmation email for successful transfers\n- Includes transfer details and file information\n- Uses same SMTP credentials as error notifications\n- Helps maintain audit trail of all operations\n\n✅ EMAIL CONTENT:\n- Timestamp of successful completion\n- Filename and size of transferred file\n- Operation type and status confirmation\n- Summary of all workflow steps completed\n\n📬 NOTIFICATION FREQUENCY:\n- One email per successful file transfer\n- Can be modified to send daily/weekly summaries\n- Consider batch notifications for high-volume transfers\n\n⚙️ CUSTOMIZATION OPTIONS:\n\n📊 SUMMARY REPORTS:\n- Change to HTML format for better presentation\n- Include charts or statistics\n- Add file thumbnails for images\n- Include transfer speed metrics\n\n📝 CONTENT MODIFICATIONS:\n- Add recipient-specific information\n- Include business context or next steps\n- Add links to file locations\n- Include compliance or audit information\n\n👥 RECIPIENT MANAGEMENT:\n- Multiple recipients with CC/BCC\n- Different notifications for different teams\n- Role-based notification content\n- Escalation for VIP files or large transfers\n\n🔕 NOTIFICATION CONTROL:\n- Add conditions to skip notifications for certain files\n- Time-based notification suppression (e.g., only during business hours)\n- File size thresholds for notifications\n- Success rate thresholds (only notify if multiple successes)\n\n📈 REPORTING INTEGRATION:\n- Can feed into business intelligence systems\n- Generate compliance reports\n- Track SLA compliance\n- Monitor operational efficiency\n\nNOTE: For high-volume environments, consider implementing batch notifications to avoid email flooding",
      "position": [
        2080,
        512
      ],
      "webhookId": "aef3fd9a-2a48-4e76-9900-5a48015a67cf",
      "parameters": {
        "options": {
          "allowUnauthorizedCerts": false
        },
        "subject": "✅ FTP Migration Success - {{ $now.format('YYYY-MM-DD HH:mm') }}",
        "toEmail": "admin@yourcompany.com",
        "fromEmail": "noreply@yourcompany.com"
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ff89656f-95ee-4c16-a998-16763e6a5b23",
  "connections": {
    "4c15a875-60ab-462e-a780-1e50337f7ca3": {
      "main": [
        [
          {
            "node": "18f4a55b-d5d5-4c44-8116-70614e4b01c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0915fba4-e8a7-4070-bfe6-03d594163495": {
      "main": [
        [
          {
            "node": "76837f02-91d3-47f9-aa45-4814c8fd32d1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "76837f02-91d3-47f9-aa45-4814c8fd32d1": {
      "main": [
        [
          {
            "node": "cee66200-dd84-4a31-b00b-81935cff7e86",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "df6e949f-839e-4ab5-80c8-243b16409720": {
      "main": [
        [
          {
            "node": "8e3a057f-f21c-4129-a43d-17960b58b26a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8e3a057f-f21c-4129-a43d-17960b58b26a": {
      "main": [
        [
          {
            "node": "4c15a875-60ab-462e-a780-1e50337f7ca3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd89ccc8-f083-4241-a869-dca7690bc591": {
      "main": [
        [
          {
            "node": "0be802db-9255-45b5-8c93-ca85087969e5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cee66200-dd84-4a31-b00b-81935cff7e86": {
      "main": [
        [
          {
            "node": "df6e949f-839e-4ab5-80c8-243b16409720",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0be802db-9255-45b5-8c93-ca85087969e5": {
      "main": [
        [
          {
            "node": "0915fba4-e8a7-4070-bfe6-03d594163495",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "18f4a55b-d5d5-4c44-8116-70614e4b01c6": {
      "main": [
        []
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Gestión de archivos, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos15
Categoría2
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34