How to publish items after pipeline is finished?How to add sitecore items with different language version by using Data Exchange frameworkRun Pipeline Batch button disabledGetting errors in Apply Mapping Pipeline Step when running pipeline batchSitecore Data Exchange Framework - Pipeline step to execute after Update Sitecore Item Pipeline StepDon't Index An Item In DEF Until All Items Have Been AddedPipeline Step to Resolve Target ItemCustom Pipeline Step never calledEmpty Pipeline Batch Log file after runningRESTful provider Pipeline Batch error: “One or more errors occurred”Batch Pipeline to sync contact

Plotting with different color for a single curve

Is my Rep in Stack-Exchange Form?

How come I was asked by a CBP officer why I was in the US?

Did Karl Marx ever use any example that involved cotton and dollars to illustrate the way capital and surplus value were generated?

Is there any evidence that the small canisters (10 liters) of 95% oxygen actually help with altitude sickness?

Why do some professors with PhDs leave their professorships to teach high school?

Do French speakers not use the subjunctive informally?

Links to webpages in books

What do you call a weak person's act of taking on bigger opponents?

Impossible darts scores

Can the negators "jamais, rien, personne, plus, ni, aucun" be used in a single sentence?

What kind of wire should I use to pigtail an outlet?

Why do textbooks often include the solutions to odd or even numbered problems but not both?

Is it damaging to turn off a small fridge for two days every week?

Character discovers anti gravity emitters, flies a shipping container into space and docks with space station

Analog is Obtuse!

Unusual mail headers, evidence of an attempted attack. Have I been pwned?

Dimensions of list used in test

How to determine what is the correct level of detail when modelling?

First-year PhD giving a talk among well-established researchers in the field

Through the Looking-Glass

What happens when I sacrifice a creature when my Teysa Karlov is on the battlefield?

A player is constantly pestering me about rules, what do I do as a DM?

No IMPLICIT_CONVERSION warning in this query plan



How to publish items after pipeline is finished?


How to add sitecore items with different language version by using Data Exchange frameworkRun Pipeline Batch button disabledGetting errors in Apply Mapping Pipeline Step when running pipeline batchSitecore Data Exchange Framework - Pipeline step to execute after Update Sitecore Item Pipeline StepDon't Index An Item In DEF Until All Items Have Been AddedPipeline Step to Resolve Target ItemCustom Pipeline Step never calledEmpty Pipeline Batch Log file after runningRESTful provider Pipeline Batch error: “One or more errors occurred”Batch Pipeline to sync contact






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








7















I've utilized Data Exchange Framework and built pipeline batches.



Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



So, what is the right way of doing automatic publish when DEF is used?










share|improve this question






























    7















    I've utilized Data Exchange Framework and built pipeline batches.



    Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



    So, what is the right way of doing automatic publish when DEF is used?










    share|improve this question


























      7












      7








      7


      2






      I've utilized Data Exchange Framework and built pipeline batches.



      Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



      So, what is the right way of doing automatic publish when DEF is used?










      share|improve this question
















      I've utilized Data Exchange Framework and built pipeline batches.



      Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



      So, what is the right way of doing automatic publish when DEF is used?







      data-exchange-framework






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jun 7 at 13:25









      Gatogordo

      13.1k2 gold badges18 silver badges66 bronze badges




      13.1k2 gold badges18 silver badges66 bronze badges










      asked Jun 7 at 12:26









      Igor EvstratovIgor Evstratov

      1383 bronze badges




      1383 bronze badges




















          1 Answer
          1






          active

          oldest

          votes


















          19














          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer

























          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55













          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "664"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f19237%2fhow-to-publish-items-after-pipeline-is-finished%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          19














          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer

























          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55















          19














          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer

























          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55













          19












          19








          19







          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer















          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jun 7 at 13:31

























          answered Jun 7 at 13:14









          Dan SinclairDan Sinclair

          2,9732 gold badges8 silver badges30 bronze badges




          2,9732 gold badges8 silver badges30 bronze badges












          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55

















          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55
















          Thank you for sharing your approach with codes! Makes perfect sense for me.

          – Igor Evstratov
          Jun 8 at 15:55





          Thank you for sharing your approach with codes! Makes perfect sense for me.

          – Igor Evstratov
          Jun 8 at 15:55

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Sitecore Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f19237%2fhow-to-publish-items-after-pipeline-is-finished%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Club Baloncesto Breogán Índice Historia | Pavillón | Nome | O Breogán na cultura popular | Xogadores | Adestradores | Presidentes | Palmarés | Historial | Líderes | Notas | Véxase tamén | Menú de navegacióncbbreogan.galCadroGuía oficial da ACB 2009-10, páxina 201Guía oficial ACB 1992, páxina 183. Editorial DB.É de 6.500 espectadores sentados axeitándose á última normativa"Estudiantes Junior, entre as mellores canteiras"o orixinalHemeroteca El Mundo Deportivo, 16 setembro de 1970, páxina 12Historia do BreogánAlfredo Pérez, o último canoneiroHistoria C.B. BreogánHemeroteca de El Mundo DeportivoJimmy Wright, norteamericano do Breogán deixará Lugo por ameazas de morteResultados de Breogán en 1986-87Resultados de Breogán en 1990-91Ficha de Velimir Perasović en acb.comResultados de Breogán en 1994-95Breogán arrasa al Barça. "El Mundo Deportivo", 27 de setembro de 1999, páxina 58CB Breogán - FC BarcelonaA FEB invita a participar nunha nova Liga EuropeaCharlie Bell na prensa estatalMáximos anotadores 2005Tempada 2005-06 : Tódolos Xogadores da Xornada""Non quero pensar nunha man negra, mais pregúntome que está a pasar""o orixinalRaúl López, orgulloso dos xogadores, presume da boa saúde económica do BreogánJulio González confirma que cesa como presidente del BreogánHomenaxe a Lisardo GómezA tempada do rexurdimento celesteEntrevista a Lisardo GómezEl COB dinamita el Pazo para forzar el quinto (69-73)Cafés Candelas, patrocinador del CB Breogán"Suso Lázare, novo presidente do Breogán"o orixinalCafés Candelas Breogán firma el mayor triunfo de la historiaEl Breogán realizará 17 homenajes por su cincuenta aniversario"O Breogán honra ao seu fundador e primeiro presidente"o orixinalMiguel Giao recibiu a homenaxe do PazoHomenaxe aos primeiros gladiadores celestesO home que nos amosa como ver o Breo co corazónTita Franco será homenaxeada polos #50anosdeBreoJulio Vila recibirá unha homenaxe in memoriam polos #50anosdeBreo"O Breogán homenaxeará aos seus aboados máis veteráns"Pechada ovación a «Capi» Sanmartín e Ricardo «Corazón de González»Homenaxe por décadas de informaciónPaco García volve ao Pazo con motivo do 50 aniversario"Resultados y clasificaciones""O Cafés Candelas Breogán, campión da Copa Princesa""O Cafés Candelas Breogán, equipo ACB"C.B. Breogán"Proxecto social"o orixinal"Centros asociados"o orixinalFicha en imdb.comMario Camus trata la recuperación del amor en 'La vieja música', su última película"Páxina web oficial""Club Baloncesto Breogán""C. B. Breogán S.A.D."eehttp://www.fegaba.com

          Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

          Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020