none
Binding configuration for custom pipeline component not displayed in Admin console RRS feed

  • Question

  • In my current project I have a custom pipeline with a custom pipeline component. To configure the application including the settings in the pipeline component, I use the BizTalk Deployment framework.

    After the deployment I open the Admin console and the settings are not displayed when I open the pipeline to view the settings for the component. However, when I export the bindings from the application, it appears the settings are actually there because they perfectly show up in the exported binding file.

    I assume I forgot to put in some code in the pipeline component to take care of displaying or something, but does anyone know what this could be?


    Jean-Paul Smit | Didago IT Consultancy
    Blog | Twitter | LinkedIn
    MCTS BizTalk 2006/2010 + Certified SOA Architect

    Please indicate "Mark as Answer" if this post has answered the question.

    Monday, April 29, 2013 2:09 PM

Answers

  • Did you try:

    1. Removing the pipeline components from the tools
    2. Stopping all BizTalk host instances
    3. Closing all instances of Visual Studio
    4. Undeploying all pipelines that use your custom pipeline components
    5. Deleting the pipeline component assembly from the GAC and the ...\Pipeline Components\ folder.  (NOTE: if you can't delete it a process is using it)
    6. GACing your pipeline component assemblies and copying them to the ...\Pipeline Components\ folder
    7. Opening Visual studio (not BizTalk project) and adding your pipeline components to the tools
    8. Opening your BizTalk project
    9. Reconstructing the pipelines that use your pipeline components
    10. Deploying your BizTalk Projects

    BizTalk has a substantial amount of caching... I have had similar issues and have found that removing all possible traces of pre-deployed pipeline components is usually less frustrating, and in most cases saves time.  Reconstructing the pipelines from scratch, although time consuming is usually the first thing I try, if that doesn't work I run through the steps above.


    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.



    Wednesday, May 1, 2013 1:54 PM

All replies

  • Hi Jean-Paul,

    Is your properties, [Browsable] attribute set to false?


    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful.



    Monday, April 29, 2013 2:22 PM
  • Hi Jean-Paul,

    Try by explicitly enabling the Browsable attribute on design-time properties.

    [System.ComponentModel.Browsable(true)]

    If my [Browserable] option doesn’t help, you can compare the bindings of the pipeline properties section with a other custom pipeline (with component which works property) to see any additional keywords or differences which blocks the view of the properties in the designer/admin console.

    I don’t think it’s due to deployment framework. Only issue I have encountered many times around the pipeline property’s binding is while editing the master binding file. I tend to edit XML files in Visual Studio, but with masterbinding file, if you open it in Visual Studio, it tend to change the encoding for pipeline properties and send port filters in the binding file. Especially around the “> <” section. So I changed my habit to edit it in Notepad++. Other than that I don’t think you may have any issues due to deployment framework on this context. Even if any of the bindings are changed due to editing in Visual studio, you will get error while creating msi using BTDF.

    Another user had posted an issue on similar to yours, check whether this helps you.

    http://www.testblog.proschconsulting.com/blog/custom-pipeline-properties-not-displayed-in-administration-console-for-biztalk-2006/

    http://mikearnett.wordpress.com/2009/11/03/custom-biztalk-pipeline-no-properties-in-component/

    Regards,

    M.R.ASHWINPRABHU


    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful.


    Monday, April 29, 2013 2:55 PM
  • You may need to expose your properties using the ComponentModel attributes for per instance configuration to work in a custom pipeline component.  I posted a sample that demonstrates this... you can view the code from here:

    http://code.msdn.microsoft.com/BizTalk-Trailer-Preserving-fbe4a87a

    The TrailerPreservingFFDasmComponentAttributes.cs should give you an idea.


    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.


    Monday, April 29, 2013 3:06 PM
  •  GAC the dll and restart the machine its worked for me in few month back .
    Tuesday, April 30, 2013 8:25 AM
  • I have 'Browsable(false)' on my IBaseComponent properties, but no browsable on my custom properties.

    This is the same on all my custom components, but still some are displaying the settings and others are not. Apparently there must be a difference.

    Maybe I need to compare my code to some of the custom pipeline components in the Technet Wiki section.


    Jean-Paul Smit | Didago IT Consultancy
    Blog | Twitter | LinkedIn
    MCTS BizTalk 2006/2010 + Certified SOA Architect

    Please indicate "Mark as Answer" if this post has answered the question.

    Tuesday, April 30, 2013 11:21 AM
  • After you've GACed the assembly, stop all BizTalk Host Instances (including isolated), copy the latest and greatest assemblies to the <BTS Install Folder>\Pipeline Components folder, remove the pipeline components from VS tools, close all your instances of Visual Studio, launch a new instance of Visual Studio, add the pipeline components again.

    If you added the properties using the ComponentModel attributes (post above), you should also reconstruct your pipelines again.


    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.

    Tuesday, April 30, 2013 1:27 PM
  • It seems like something missing in your code ,by default   'Browsable' is true , if you want true no need to mention it.
    
    Here I am  giving sample code , you can refer it. I am displaying two properties in settings.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    using System.IO;
    using System.Runtime.InteropServices;
    using Microsoft.BizTalk.Component;
    using Microsoft.BizTalk.Component.Interop;
    using Microsoft.BizTalk.Message.Interop;
    using Microsoft.BizTalk.Message;
    using Microsoft.BizTalk.Streaming;
    using System.Xml;
    
    namespace Gov.Ia.Idr.MeF.BizTalk.PipelineComponent
    {
        [ComponentCategory(CategoryTypes.CATID_PipelineComponent)]
        [ComponentCategory(CategoryTypes.CATID_DisassemblingParser)]
        [Guid("9736465A-A129-4B8E-A922-6B788645A500")]
        public class CustomPipeline : IBaseComponent, IComponentUI, IPersistPropertyBag, IDisassemblerComponent
        {
            
            private string mDestinationLocation = null;
            public string DestinationLocation
            {
                get { return mDestinationLocation; }
                set { mDestinationLocation = value; }
            }
    
            private string mMaxSize = null;
    
            public string MaxSize
            {
                get { return mMaxSize; }
                set { mMaxSize = value; }
            }
            private string mMaxNoOfRecords = null;
    
            public string MaxNoOfRecords
            {
                get { return mMaxNoOfRecords; }
                set { mMaxNoOfRecords = value; }
            }
    
    
            #region IBaseComponent Members
    
            public string Description
            {
                get { return "Custom_RcvPipeline"; }
            }
    
            public string Name
            {
                get { return "Custom_RcvPipeline"; }
            }
    
            public string Version
            {
                get { return "1.0.0.0"; }
            }
    
            #endregion
            #region IComponentUI Members
    
    
            public IntPtr Icon
            {
                get { return System.IntPtr.Zero; }
    
            }
    
            public IEnumerator Validate(object projectSystem)
            {
                return null;
            }
            #endregion
    
            #region IPersistPropertyBag Members
    
    
            public void GetClassID(out Guid classID)
            {
                classID = new Guid("9736465A-A129-4B8E-A922-6B788645A500");
            }
    
            public void InitNew()
            {
    
            }
    
            public void Load(IPropertyBag propertyBag, int errorLog)
            {
                using (DisposableObjectWrapper wrapper = new DisposableObjectWrapper(propertyBag))
                {
                    object val = null;
                    val = PropertyHelper.ReadPropertyBag(propertyBag, "MaxSize");
                    if (val != null)
                    {
                        mMaxSize = (string)val;
                    }
                    val = PropertyHelper.ReadPropertyBag(propertyBag, "MaxNoOfRecords");
                    if (val != null)
                    {
                        mMaxNoOfRecords = (string)val;
                    }
                    val = PropertyHelper.ReadPropertyBag(propertyBag, "DestinationLocation");
                    if (val != null)
                    {
                        mDestinationLocation = (string)val;
                    }
                }
    
            }
    
            public void Save(IPropertyBag propertyBag, bool clearDirty, bool saveAllProperties)
            {
                using (DisposableObjectWrapper wrapeer = new DisposableObjectWrapper(propertyBag))
                {
                    object val = null;
                    val = mMaxSize;
                    propertyBag.Write("MaxSize", ref val);
                    val = mMaxNoOfRecords;
                    propertyBag.Write("MaxNoOfRecords", ref val);
                    val = mDestinationLocation;
                    propertyBag.Write("DestinationLocation", ref val);
    
                }
    
            }
            #endregion
            public void Disassemble(IPipelineContext pc, IBaseMessage InMsg)
            {
                
          }
    
            public IBaseMessage GetNext(IPipelineContext pContext)
            {
                if (qOutputMsgs.Count > 0)
                    return (IBaseMessage)qOutputMsgs.Dequeue();
                else
                    return null;
            }
    
    
    
    
            Queue qOutputMsgs = new Queue();
            ArrayList messageInterchange = new ArrayList();
    
    
    
        }
    }
    
    
    

    
    Tuesday, April 30, 2013 2:26 PM
  • I think it has something to do with the installation of the pipelines/pipeline components, because I cannot find any difference in code. The strange thing is I have several components and a few are working fine and a few are not, while they are all based on the same code template.


    Jean-Paul Smit | Didago IT Consultancy
    Blog | Twitter | LinkedIn
    MCTS BizTalk 2006/2010 + Certified SOA Architect

    Please indicate "Mark as Answer" if this post has answered the question.

    Wednesday, May 1, 2013 8:03 AM
  • Did you try:

    1. Removing the pipeline components from the tools
    2. Stopping all BizTalk host instances
    3. Closing all instances of Visual Studio
    4. Undeploying all pipelines that use your custom pipeline components
    5. Deleting the pipeline component assembly from the GAC and the ...\Pipeline Components\ folder.  (NOTE: if you can't delete it a process is using it)
    6. GACing your pipeline component assemblies and copying them to the ...\Pipeline Components\ folder
    7. Opening Visual studio (not BizTalk project) and adding your pipeline components to the tools
    8. Opening your BizTalk project
    9. Reconstructing the pipelines that use your pipeline components
    10. Deploying your BizTalk Projects

    BizTalk has a substantial amount of caching... I have had similar issues and have found that removing all possible traces of pre-deployed pipeline components is usually less frustrating, and in most cases saves time.  Reconstructing the pipelines from scratch, although time consuming is usually the first thing I try, if that doesn't work I run through the steps above.


    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.



    Wednesday, May 1, 2013 1:54 PM
  • This indeed is the answer, most important part is recreating the pipelines.

    I did it and kept the same names, but that wasn't sufficient.....

    Although caching is a good thing, I really don't like it in these kinds of scenarios where in my view it doesn't add value but does add trouble.


    Jean-Paul Smit | Didago IT Consultancy
    Blog | Twitter | LinkedIn
    MCTS BizTalk 2006/2010 + Certified SOA Architect

    Please indicate "Mark as Answer" if this post has answered the question.

    Monday, May 13, 2013 1:06 PM
  • If memory serves me, the problem can be minimized by versioning your assemblies... unfortunately that can introduce other possible issues.

    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.

    Monday, May 13, 2013 3:33 PM
  • Just had this very problem and solved without all the uninstallation processes!

    If the outcome is just to get the custom configuration information in the bindings file so BTDF can parameterise, you can go in to the pipeline configuration and just change the value of one of the settings for your custom component. 

    This seems to then create the output in the bindings file when you export, even without restarting all the things.

    NOTE: If you then change it back to the original setting this then seems to remove the output from the file, which must be a bug.

    NOTE2: This works on BizTalk 2010, but I'm guessing this is so deep it would work elsewhere.

    Thursday, October 22, 2015 6:34 AM