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

          Wikipedia:Vital articles Мазмуну Biography - Өмүр баян Philosophy and psychology - Философия жана психология Religion - Дин Social sciences - Коомдук илимдер Language and literature - Тил жана адабият Science - Илим Technology - Технология Arts and recreation - Искусство жана эс алуу History and geography - Тарых жана география Навигация менюсу

          Bruxelas-Capital Índice Historia | Composición | Situación lingüística | Clima | Cidades irmandadas | Notas | Véxase tamén | Menú de navegacióneO uso das linguas en Bruxelas e a situación do neerlandés"Rexión de Bruxelas Capital"o orixinalSitio da rexiónPáxina de Bruselas no sitio da Oficina de Promoción Turística de Valonia e BruxelasMapa Interactivo da Rexión de Bruxelas-CapitaleeWorldCat332144929079854441105155190212ID28008674080552-90000 0001 0666 3698n94104302ID540940339365017018237

          What should I write in an apology letter, since I have decided not to join a company after accepting an offer letterShould I keep looking after accepting a job offer?What should I do when I've been verbally told I would get an offer letter, but still haven't gotten one after 4 weeks?Do I accept an offer from a company that I am not likely to join?New job hasn't confirmed starting date and I want to give current employer as much notice as possibleHow should I address my manager in my resignation letter?HR delayed background verification, now jobless as resignedNo email communication after accepting a formal written offer. How should I phrase the call?What should I do if after receiving a verbal offer letter I am informed that my written job offer is put on hold due to some internal issues?Should I inform the current employer that I am about to resign within 1-2 weeks since I have signed the offer letter and waiting for visa?What company will do, if I send their offer letter to another company