Skip to main content

Specific Data provider

  • Oct 20, 2020 3:49 PM UTC
  • 11 replies
  • 1434 views
  • Translate All

SadokHanini
Freshman II

Can we develop a specific data provider type ?

11 replies

Gabriel Michaud
Captain II
Forum|alt.badge.img+12

Hi @SadokHanini 

 

Yes, you can write your own data provider. Here’s some boilerplate code to help you get started; Acumatica will automatically detect your provider. This is from an existing provider that I wrote, I just removed everything that is specific and provided just a base template for you.

InternalImport/InternalExport are the functions you need to implement and where the actual work happens.

 

using PX.Api;
using PX.Data;
using PX.DataSync;
using PX.Objects.AP;
using PX.SM;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Schema;

namespace Velixo.Sample
{
public class SampleProvider : PXSYBaseEncodedFileProvider, IPXSYProvider
{
protected const string MsgId = "MsgId";

public string DefaultFileExtension => ".xml";

public override string ProviderName => "My Provider";

public override string Extensiton => DefaultFileExtension;

public override PXFieldState[] GetSchemaFields(string objectName)
{
List<PXFieldState> ret = new List<PXFieldState>(base.GetSchemaFields(objectName));

//TODO: Add the fields your provider will be exposing
ret.Add(CreateFieldState(new SchemaFieldInfo(-1, MsgId)));

return ret.ToArray();
}

protected override List<PXStringState> FillParameters()
{
List<PXStringState> ret = base.FillParameters();

//TODO: Add the parameters your provider will be exposing

return ret;
}

protected override byte[] InternalExport(string objectName, PXSYTable table)
{
throw new NotImplementedException();
}

protected override void InternalImport(PXSYTable table)
{
throw new NotImplementedException();
}
}
}

 

Translate

gmercede
Varsity I
Forum|alt.badge.img+1
  • Varsity I
  • Oct 20, 2020 6:17 PM UTC

What are you trying to create the provider for?  Some multi-table type import operations might not be ideal to use integration scenarios.

Translate

Forum|alt.badge.img
  • Jr Varsity II
  • Oct 20, 2020 8:26 PM UTC

 

So this could work with any file extension or only the ones supported by acumatica (xml,  excel; csv..) ? 

public string DefaultFileExtension => ".xml";

Translate

SadokHanini
Freshman II
  • Author
  • Freshman II
  • Oct 21, 2020 5:42 PM UTC

What are you trying to create the provider for?  Some multi-table type import operations might not be ideal to use integration scenarios.

For a specific file with .TRA extension that doesn’t exist already in acumatica

Translate

SadokHanini
Freshman II
  • Author
  • Freshman II
  • Oct 21, 2020 5:43 PM UTC

Hi @SadokHanini 

 

Yes, you can write your own data provider. Here’s some boilerplate code to help you get started; Acumatica will automatically detect your provider. This is from an existing provider that I wrote, I just removed everything that is specific and provided just a base template for you.

InternalImport/InternalExport are the functions you need to implement and where the actual work happens.

 

using PX.Api;
using PX.Data;
using PX.DataSync;
using PX.Objects.AP;
using PX.SM;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Schema;

namespace Velixo.Sample
{
public class SampleProvider : PXSYBaseEncodedFileProvider, IPXSYProvider
{
protected const string MsgId = "MsgId";

public string DefaultFileExtension => ".xml";

public override string ProviderName => "My Provider";

public override string Extensiton => DefaultFileExtension;

public override PXFieldState[] GetSchemaFields(string objectName)
{
List<PXFieldState> ret = new List<PXFieldState>(base.GetSchemaFields(objectName));

//TODO: Add the fields your provider will be exposing
ret.Add(CreateFieldState(new SchemaFieldInfo(-1, MsgId)));

return ret.ToArray();
}

protected override List<PXStringState> FillParameters()
{
List<PXStringState> ret = base.FillParameters();

//TODO: Add the parameters your provider will be exposing

return ret;
}

protected override byte[] InternalExport(string objectName, PXSYTable table)
{
throw new NotImplementedException();
}

protected override void InternalImport(PXSYTable table)
{
throw new NotImplementedException();
}
}
}

 

Thnk u :) 
where can i find this code to modify it ? thnx 

Translate

Gabriel Michaud
Captain II
Forum|alt.badge.img+12

@SadokHanini this is it, it’s the full provider, without an actual implementation.. you just need to add this to your project, and implement InternalImport and/or InternatExport based on your requirements. Here’s another link you will find useful: https://asiablog.acumatica.com/2016/09/custom-integration-services-data.html

Translate

SadokHanini
Freshman II
  • Author
  • Freshman II
  • Oct 28, 2020 2:41 PM UTC

@SadokHanini this is it, it’s the full provider, without an actual implementation.. you just need to add this to your project, and implement InternalImport and/or InternatExport based on your requirements. Here’s another link you will find useful: https://asiablog.acumatica.com/2016/09/custom-integration-services-data.html

Thanks :) 

Translate

  • Freshman I
  • Jun 21, 2022 12:20 PM UTC

Have you managed to create the data provider?

Translate

  • Freshman I
  • Jun 22, 2022 9:16 AM UTC

It depends on what type of data provider you want to create. Is it a B2B data provider designed specifically for sales?
You will need to understand the main features of B2B data providers and see how other data providers work. Here are some examples of good B2B data providers on the market:

  1. OneMoreLead
  2. PureB2
  3. Globaldatabase
  4. Salesify
  5. Leadspace

All of them offer the following services: data accuracy, CRM management, pipeline prediction, and more sales.
In conclusion, you better do some research and choose the best data provider as a prototype.

Translate

  • Freshman I
  • Mar 19, 2025 5:19 PM UTC

@SadokHanini this is it, it’s the full provider, without an actual implementation.. you just need to add this to your project, and implement InternalImport and/or InternatExport based on your requirements. Here’s another link you will find useful: https://asiablog.acumatica.com/2016/09/custom-integration-services-data.html

Thanks :) 

Hi, I see there was a link associated with this posting, its not a valid link , can you provide a better updated link or even some documentation on building a custom specific data provider.

Translate

Vignesh Ponnusamy
Acumatica Moderator
Forum|alt.badge.img+5

Hi ​@tracy27,

Below is the working link, https://asiablog.acumatica.com/?p=5140 for that article. 

Translate